Класс Table
Объект $Table:
Объект «Таблица»
Исходный код
class Table extends \Cms\Site\Base { … }
Свойства
$name
$Table->name
Имя таблицы
Исходный код
var $name;
$title
$Table->title
Название таблицы
Исходный код
var $title;
$plural
$Table->plural
Название во множественном числе
Исходный код
var $plural;
$create
$Table->create
Название действия создания
Исходный код
var $create;
$item
$Table->item
В таблице содержатся объекты
Исходный код
var $item;
$public
$Table->public
Данные таблицы являются публичными
Исходный код
var $public;
$enable
$Table->enable
Таблица включена
Исходный код
var $enable;
$sitemap
$Table->sitemap
Данные отображаются в карте сайта
Исходный код
var $sitemap;
$order
$Table->order
Сортировка таблицы
Исходный код
var $order;
$sort
$Table->sort
Глобальная сортировка
Исходный код
var $sort;
$fieldList
$Table->fieldList = array();
Список полей
Исходный код
var $fieldList = array();
$root
$Table->root
Таблица является системной
Исходный код
var $root;
$site
$Table->site
Таблица является локальной
Исходный код
var $site;
$data
$Table->data = array();
Информация о таблице
Исходный код
var $data = array();
$primary
$Table->primary
Исходный код
var $primary;
$_enabledFieldList
$Table->_enabledFieldList
Исходный код
var $_enabledFieldList;
Методы
__construct()
new Table($name=null);
Исходный код
function __construct($name = null) {
$this->name = $this->data['name'] = $name;
}
get()
$Table->get($key, $default=null);
Исходный код
function get($key, $default = null) {
return isset($this->$key) ? $this->$key : $default;
}
set()
$Table->set($key, $value);
Исходный код
function set($key, $value) {
if ($key[0] === '_' || $key === 'root' || $key === 'site') $this->$key = $value;
else $this->$key = $this->data[$key] = $value;
if ($key === 'item') {
$this->Main()->Storage()->resetItemTableList();
}
if ($key === 'enabled') {
$this->Main()->Storage()->resetItemTableList();
$this->Main()->Storage()->resetEnabledTableList();
}
}
getName()
$Table->getName();
Исходный код
function getName() {
return $this->name;
}
getTitle()
$Table->getTitle();
Исходный код
function getTitle() {
return $this->title ? $this->title : $this->name;
}
displayTitle()
$Table->displayTitle();
Исходный код
function displayTitle() {
return htmlspecialchars($this->getTitle());
}
getPlural()
$Table->getPlural();
Исходный код
function getPlural() {
return $this->plural;
}
getCreate()
$Table->getCreate();
Исходный код
function getCreate() {
return $this->create;
}
isItem()
$Table->isItem();
Исходный код
function isItem() {
return $this->item ? true : false;
}
isPublic()
$Table->isPublic();
Исходный код
function isPublic() {
return $this->public ? true : false;
}
isEnabled()
$Table->isEnabled();
Исходный код
function isEnabled() {
return $this->enable ? true : false;
}
isSitemap()
$Table->isSitemap();
Исходный код
function isSitemap() {
return $this->sitemap ? true : false;
}
getOrder()
$Table->getOrder();
Исходный код
function getOrder() {
return $this->order;
}
getOrderList()
$Table->getOrderList();
Исходный код
function getOrderList() {
if (is_string($this->order) && strlen($this->order)) {
$r = array();
foreach (explode(',', $this->order) as $order) if (strlen($order = trim($order))) {
if ($order[0] !== '-') $r[$order] = 'ASC';
else $r[substr($order, 1)] = 'DESC';
}
return $r;
} elseif (is_array($this->order)) {
return $this->order;
}
if ($Field = $this->getField('order')) if ($Field->isEnabled()) return array( 'order' => 'ASC' );
return array();
}
getSort()
$Table->getSort();
Исходный код
function getSort() {
return $this->sort;
}
getSortList()
$Table->getSortList();
Исходный код
function getSortList() {
if (is_string($this->sort) && strlen($this->sort)) {
$r = array();
foreach (explode('|', strtr($this->sort, ',', '|')) as $order) if (strlen($order = trim($order))) {
if ($order[0] !== '-') $r[$order] = 'ASC';
else $r[substr($order, 1)] = 'DESC';
}
return $r;
} elseif (is_array($this->sort)) {
return $this->sort;
}
if ($Field = $this->getField('title')) if ($Field->isEnabled()) return array( 'title' => 'ASC' );
return array();
}
addField()
$Table->addField(Field $Field);
Исходный код
function addField(Field $Field) {
$this->fieldList[$Field->getName()] = $Field;
$this->resetEnabledFieldList();
}
deleteField()
$Table->deleteField($field);
Исходный код
function deleteField($field) {
if (is_object($field)) {
$Field = $field;
unset($this->fieldList[$Field->getName()]);
} else {
unset($this->fieldList[$field]);
}
$this->resetEnabledFieldList();
return true;
}
getField()
$Table->getField($field);
Исходный код
function getField($field) {
return $this->fieldList[$field];
}
getEnabledField()
$Table->getEnabledField($field);
Исходный код
function getEnabledField($field) {
if ($Field = $this->getField($field)) if ($Field->isEnabled()) return $Field;
}
getFieldList()
$Table->getFieldList();
Исходный код
function getFieldList() {
return $this->fieldList;
}
getEnabledFieldList()
$Table->getEnabledFieldList();
Исходный код
function getEnabledFieldList() {
if (isset($this->_enabledFieldList)) return $this->_enabledFieldList;
$r = array();
foreach ($this->getFieldList() as $field => $Field) {
if ($Field->isEnabled()) $r[$field] = $Field;
}
return $this->_enabledFieldList = $r;
}
resetEnabledFieldList()
$Table->resetEnabledFieldList();
Исходный код
function resetEnabledFieldList() {
unset($this->_enabledFieldList);
}
getStorageFields()
$Table->getStorageFields();
Исходный код
function getStorageFields() {
$r = array();
foreach ($this->getEnabledFieldList() as $Field) {
$name = $Field->getName();
if ($name === 'id' || $name === 'stamp') continue;
$r[] = $name;
}
return $r;
}
isRoot()
$Table->isRoot();
Исходный код
function isRoot() {
return $this->root ? true : false;
}
isSite()
$Table->isSite();
Исходный код
function isSite() {
return $this->site ? true : false;
}
getPrimaryKey()
$Table->getPrimaryKey();
Исходный код
function getPrimaryKey() {
$r = array();
foreach ($this->getEnabledFieldList() as $Field) {
if ($Field->isPrimary()) {
$r[] = $Field->getName();
}
}
if (isset($this->primary)) {
if (is_string($this->primary)) $r[] = $this->primary;
elseif (is_array($this->primary)) foreach ($this->primary as $primary) $r[] = $primary;
}
switch (count($r)) {
case 0:
return;
case 1:
return $r[0];
default:
return $r;
}
}
addTableData()
$Table->addTableData(array $tableData, $override=true);
Исходный код
function addTableData(array $tableData, $override = true) {
foreach ($tableData as $k => $v) {
if ($k === 'fields') {
if (is_array($v)) {
$fieldClass = $this->App()->getClass('data_field');
foreach ($v as $fieldData) {
if (is_string($fieldData)) {
$fieldName = $fieldData;
if (!$Field = $this->getField($fieldName)) {
$Field = new $fieldClass($this->getName(), $fieldName);
if ($fieldData = $Field->defaultFieldData()) $Field->addFieldData($fieldData, $override);
}
$fieldData = array( 'enable' => 'Y' );
$Field->addFieldData($fieldData, $override);
} elseif (is_array($fieldData)) {
if (!$Field = $this->getField($fieldData['name'])) $Field = new $fieldClass($this->getName(), $fieldData['name']);
$Field->addFieldData($fieldData, $override);
}
$this->addField($Field);
}
}
} elseif ($override || !isset($this->$k)) {
$this->set($k, $v);
}
}
}
getTableData()
$Table->getTableData();
Исходный код
function getTableData() {
$r = $this->data;
$r['site'] = 'Y';
$r['fields'] = array();
foreach ($this->getFieldList() as $Field) if ($Field->isSite()) {
$r['fields'][$Field->getName()] = $Field->getFieldData();
}
return $r;
}
getPanel()
$Table->getPanel();
Исходный код
function getPanel() {
return array(
'edit' => array(
'href' => $this->Main()->href('/admin/storage') . '?a=table&table=' . rawurldecode($this->getName()),
'image' => 'edit',
),
'open' => array(
'href' => $this->Main()->href('/admin/storage') . '?table=' . rawurlencode($this->getName()),
'image' => 'angle-right',
'modal' => false,
),
);
}
displayPageForm()
$Table->displayPageForm($form='data_table');
Исходный код
function displayPageForm($form = 'data_table') {
if (!isset($form)) return;
$Main = $this->Main();
$Form = $this->Form();
$Table = $this;
$document = $Form->load($form, $Table);
if ($Form->store($document)) {
if ($_POST['delete']) {
if ($Table->delete()) {
return $Main->href('/admin/storage');
} else {
$Form->addError($this->getError());
}
} else {
if ($Table->save()) {
return $Table->href();
} else {
$Form->addError($this->getError());
}
}
}
return $document;
}
href()
$Table->href();
Исходный код
function href() {
return $this->Main()->href('/admin/storage') . '?table=' . rawurlencode($this->getName());
}
save()
$Table->save();
Исходный код
function save() {
$Storage = $this->Main()->Storage();
if (!$Storage->getTable($this->getName())) $Storage->addTable($this);
$this->set('site', 'Y');
if ($Storage->saveData()) {
if ($this->saveData()) {
return true;
}
}
}
delete()
$Table->delete();
Исходный код
function delete() {
$Storage = $this->Main()->Storage();
$Storage->deleteTable($this);
if ($Storage->saveData()) {
if ($this->deleteData()) {
return true;
}
}
}
saveData()
$Table->saveData();
Исходный код
function saveData() {
$Data = $this->Data();
if (!$this->getEnabledFieldList()) return true;
if ($Data->tableExists($this)) {
if ($Data->tableAlter($this)) {
return true;
} else {
$this->addError($Data->getError());
}
} else {
if ($Data->tableCreate($this)) {
return true;
} else {
$this->addError($Data->getError());
}
}
}
deleteData()
$Table->deleteData();
Исходный код
function deleteData() {
$Data = $this->Data();
if ($Data->tableExists($this)) {
if ($Data->tableDrop($this)) {
return true;
} else {
$this->addError($Data->getError());
}
} else {
return true;
}
}