140 lines
5.0 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Базовый класс,
* описывающий поведение стандартного атрибута
***/
abstract class attr {
var $attr_name; // Имя объекта, с которым будет связан атрибут
var $obj; // Ссылка на объект
var $sql_where; // Внутренняя переменная для ограничения выборки объекта
/**
* Возвращаем тип данных для MySQL
* @return string тип данных
*/
function getDBType() {
return "varchar(255)"; // Тип данных в MySQL для хранения значения атрибута
}
/**
* Конструтор. Передается имя атрибута и ссылка на объект, для которого он инициируется
*/
function __construct( $attr_name, $obj ) {
$this->attr_name = $attr_name;
$this->obj = $obj;
}
/**
* Вызывается при получении POST запроса с данным формы. Сохраняет данные в объект
* @return none
*/
function lPost() {
if ( ini_get('magic_quotes_gpc') ) {
$this->obj->set($this->attr_name,stripslashes($_POST[$this->attr_name]));
} else {
$this->obj->set($this->attr_name,$_POST[$this->attr_name]);
}
}
/**
* Получение текущего значения атрибута
* @return mixed текущие значение атрибута
*/
function getCurVal() {
return $this->obj->get( $this->attr_name );
}
/**
* Получение основногом параметров атрибута (обычно шаблон)
* @return mixed
*/
function getAttrTempl() {
return str_replace("]","}",str_replace("[","{",$this->obj->attrs[$this->attr_name]['templ']));
}
/**
* Получение конкретного параметра атрибута (тип, обязательность, шаблон итд)
* @param string $setting какой параметр нужно получить
* @return mixed
*/
function getAttrSetting($setting='') {
return $this->obj->attrs[$this->attr_name][$setting];
}
/**
* Метод вызывается всегда при сохранении объекта.
* Последние манипуляции с данными до сохранения в БД
* @return none
*/
function presave() {
if (!is_array($this->getCurVal()))
$this->obj->set($this->attr_name, htmlspecialchars( html_entity_decode( $this->getCurVal() ) ) );
}
/**
* Метод вызывается при валидации объекта.
* Проверяется корретность заполнения.
* Соответвуют ли данные в атрибуте ожидаемым
* @return bool прошел элемент валидацию или нет
*/
function validate() {
return true;
}
/**
* Метод для отрисовки HTML элемента управления
* @return html код элемента для страницы
*/
function render_input() {
if ($this->obj->attrs[$this->attr_name]['mand']) {
$required = ' required = "required" ';
} else {
$required = '';
}
return '<input class="form-control" id="' . $this->attr_name . '" ' . $required . ' type="text" name="' . $this->attr_name . '" value="' .$this->getCurVal() . '">';
}
/**
* Метод для отрисовки HTML вывода в браузере
* @param boolean $crop использовать сокращённый вывод (для таблиц админки)
* @return html преобразованное значение атрибута для вывода на экран
*/
function render_text( $crop = false) {
return $this->getCurVal();
}
/**
* Сохранение SQL ограничение при фильтрации объектов. Используется далее фильтрами
* @param string $sql_where Хвост SQL запроса
*/
function setSqlWhere( $sql_where ) {
$this->sql_where = $sql_where;
}
/**
* Получаем HTML и SQL хвост для фильтрации объектов
* @param string $sql_where Хвост SQL запроса
* @return array ['html' => 'html код элемента с фильтром', 'sql'=>'SQL хвост запроса']
*/
function getFilter( $sql_where = '' ) {
return ['html'=> '', 'sql'=>''];
}
/**
* После сохранения объекта, когда уже точно есть ID
* @return none
*/
function postsave() {
}
}
?>