140 lines
5.0 KiB
PHP
140 lines
5.0 KiB
PHP
<?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() {
|
||
}
|
||
|
||
|
||
}
|
||
|
||
?>
|