Система управления «Сайт PRO»
Версия 20240107

Класс Field

Объект $Field: Cms\Root\Data\Field наследует Cms\Site\Base

Объект «Поле таблицы»

Исходный код
class Field extends \Cms\Site\Base { … }

Свойства

$name

$Field->name

Имя поля

Исходный код
    var $name;

$title

$Field->title

Название поля

Исходный код
    var $title;

$table

$Field->table

Таблица

Исходный код
    var $table;

$enable

$Field->enable

Поле включено

Исходный код
    var $enable;

$primary

$Field->primary

Поле является первичным ключом

Исходный код
    var $primary;

$unique

$Field->unique

Поле является уникальным индексом

Исходный код
    var $unique;

$index

$Field->index

Поле содержит индекс

Исходный код
    var $index;

$root

$Field->root

Поле является системным

Исходный код
    var $root;

$site

$Field->site

Поле является локальным

Исходный код
    var $site;

$type

$Field->type

Тип поля

Исходный код
    var $type;

$length

$Field->length

Длина поля

Исходный код
    var $length;

$length2

$Field->length2

Длина поля 2.

Исходный код
    var $length2;

$null

$Field->null

Поле может быть NULL

Исходный код
    var $null;

$default

$Field->default

Значение по умолчанию

Исходный код
    var $default;

$data

$Field->data = array();

Информация о поле

Исходный код
    var $data = array();

Методы

__construct()

new Field($table=null, $name=null);
Исходный код
    function __construct($table = null, $name = null) {
        $this->table = $table;
        $this->name = $this->data['name'] = $name;
    }

get()

$Field->get($key, $default=null);
Исходный код
    function get($key, $default = null) {
        return isset($this->$key) ? $this->$key : $default;
    }

set()

$Field->set($key, $value);
Исходный код
    function set($key, $value) {
        if ($key[0] === '_' || $key === 'root' || $key === 'site' || $key === 'table') $this->$key = $value;
        else $this->$key = $this->data[$key] = $value;
        if ($key === 'enable') if ($Table = $this->loadTable()) $Table->resetEnabledFieldList();
    }

getName()

$Field->getName();
Исходный код
    function getName() {
        return $this->name;
    }

getType()

$Field->getType();
Исходный код
    function getType() {
        return $this->type;
    }

getTitle()

$Field->getTitle();
Исходный код
    function getTitle() {
        return $this->title ? $this->title : $this->name;
    }

displayTitle()

$Field->displayTitle();
Исходный код
    function displayTitle() {
        return htmlspecialchars($this->getTitle());
    }

getTable()

$Field->getTable();
Исходный код
    function getTable() {
        return $this->table;
    }

loadTable()

$Field->loadTable();
Исходный код
    function loadTable() {
        if ($table = $this->getTable()) {
            return $this->Main()->Storage()->getTable($table);
        }
    }

isEnabled()

$Field->isEnabled();
Исходный код
    function isEnabled() {
        return $this->enable ? true : false;
    }

isPrimary()

$Field->isPrimary();
Исходный код
    function isPrimary() {
        return $this->primary ? true : false;
    }

isUnique()

$Field->isUnique();
Исходный код
    function isUnique() {
        return $this->unique ? true : false;
    }

isIndex()

$Field->isIndex();
Исходный код
    function isIndex() {
        return $this->index ? true : false;
    }

isRoot()

$Field->isRoot();
Исходный код
    function isRoot() {
        return $this->root ? true : false;
    }

isSite()

$Field->isSite();
Исходный код
    function isSite() {
        return $this->site ? true : false;
    }

getLength()

$Field->getLength();
Исходный код
    function getLength() {
        return $this->length;
    }

getLength2()

$Field->getLength2();
Исходный код
    function getLength2() {
        return $this->length2;
    }

isNull()

$Field->isNull();
Исходный код
    function isNull() {
        return $this->null ? true : false;
    }

getDefault()

$Field->getDefault();
Исходный код
    function getDefault() {
        return $this->default;
    }

addFieldData()

$Field->addFieldData(array $fieldData, $override=true);
Исходный код
    function addFieldData(array $fieldData, $override = true) {
        foreach ($fieldData as $k => $v) {
            if ($k === 'table') {
                $this->$k = $v;
            } elseif ($override || !isset($this->$k)) {
                $this->set($k, $v);
            }
        }
    }

getFieldData()

$Field->getFieldData();
Исходный код
    function getFieldData() {
        $r = $this->data;
        $r['site'] = 'Y';
        return $r;
    }

defaultFieldData()

$Field->defaultFieldData();
Исходный код
    function defaultFieldData() {
        if ($this->getTable() === 'item') return;
        $Storage = $this->Main()->Storage();
        if ($Table = $Storage->getTable('item')) {
            if ($Field = $Table->getField($this->getName())) {
                return array(
                    'title' => $Field->title,
                    'type' => $Field->type,
                    'length' => $Field->length,
                    'length2' => $Field->length2,
                    'null' => $Field->null,
                    'default' => $Field->default,
                    'primary' => $Field->primary,
                    'unique' => $Field->unique,
                    'index' => $Field->index,
                );
            }
        }
    }

getPanel()

$Field->getPanel();
Исходный код
    function getPanel() {
        return array(
            'edit' => array(
                'href' => $this->Main()->href('/admin/storage') . '?a=field&table=' . rawurldecode($this->getTable()) . '&field=' . rawurlencode($this->getName()),
                'image' => 'edit',
            ),
        );
    }

displayPageForm()

$Field->displayPageForm($form='data_field');
Исходный код
    function displayPageForm($form = 'data_field') {
        if (!isset($form)) return;
        $Main = $this->Main();
        $Form = $this->Form();
        $Field = $this;
        $document = $Form->load($form, $Field);
        if ($Form->store($document)) {
            if ($_POST['delete']) {
                if ($Field->delete()) {
                    return $Main->href('/admin/storage') . '?table=' . rawurlencode($this->getTable());
                } else {
                    $Form->addError($this->getError());
                }
            } else {
                if ($Field->save()) {
                    return $Field->href();
                } else {
                    $Form->addError($this->getError());
                }
            }
        }
        return $document;
    }

href()

$Field->href();
Исходный код
    function href() {
        return $this->Main()->href('/admin/storage') . '?table=' . rawurlencode($this->getTable()) . '&field=' . rawurlencode($this->getName());
    }

save()

$Field->save();
Исходный код
    function save() {
        $this->set('site', 'Y');
        if ($Table = $this->loadTable()) {
            $Table->addField($this);
            if ($Table->save()) {
                return true;
            } else {
                $this->addError($Table->getError());
            }
        }
    }

delete()

$Field->delete();
Исходный код
    function delete() {
        if ($Table = $this->loadTable()) {
            $Table->deleteField($this);
            if ($this->deleteData()) {
                if ($Table->save()) {
                    return true;
                } else {
                    $this->addError($Table->getError());
                }
            }
        }
    }

deleteData()

$Field->deleteData();
Исходный код
    function deleteData() {
        $Data = $this->Data();
        if ($Data->tableFieldExists($this)) {
            if ($Data->tableAlterFieldDrop($this)) {
                return true;
            } else {
                $this->addError($Data->getError());
            }
        } else {
            return true;
        }
    }