Класс Type
Объект $Type:
Объект «Тип страницы»
Исходный код
class Type extends \Cms\Site\Base implements \ArrayAccess { … }
Свойства
$name
$Type->name
Имя типа
Исходный код
var $name;
$title
$Type->title
Название типа
Исходный код
var $title;
$plural
$Type->plural
Название во множественном числе
Исходный код
var $plural;
$create
$Type->create
Название действия создания
Исходный код
var $create;
$public
$Type->public
Страницы типа являются публичными
Исходный код
var $public;
$enable
$Type->enable
Тип включен
Исходный код
var $enable;
$sitemap
$Type->sitemap
Данные отображаются в карте сайта
Исходный код
var $sitemap;
$select
$Type->select
Тип виден в выпадающем списке
Исходный код
var $select;
$order
$Type->order
Сортировка страниц
Исходный код
var $order;
$sort
$Type->sort
Глобальная сортировка
Исходный код
var $sort;
$propertyList
$Type->propertyList = array();
Список свойств
Исходный код
var $propertyList = array();
$table
$Type->table
Таблица
Исходный код
var $table;
$list
$Type->list
Тип дочерних объектов
Исходный код
var $list;
$root
$Type->root
Тип является системным
Исходный код
var $root;
$site
$Type->site
Тип является локальным
Исходный код
var $site;
$class
$Type->class
Класс для создания страницы
Исходный код
var $class;
$object
$Type->object
Объект страницы
Исходный код
var $object;
$register
$Type->register
Тип зарегистрирован в модулях
Исходный код
var $register;
$data
$Type->data = array();
Информация о типе
Исходный код
var $data = array();
Методы
__construct()
new Type($name=null);
Исходный код
function __construct($name = null) {
$this->name = $this->data['name'] = $name;
}
get()
$Type->get($key, $default=null);
Исходный код
function get($key, $default = null) {
return isset($this->$key) ? $this->$key : $default;
}
set()
$Type->set($key, $value);
Исходный код
function set($key, $value) {
if ($key[0] === '_' || $key === 'root' || $key === 'site' || $key === 'class' || $key === 'object' || $key === 'register') $this->$key = $value;
else $this->$key = $this->data[$key] = $value;
if ($key === 'enabled') {
$this->Main()->Modules()->resetEnabledModuleList();
}
}
offsetGet()
$Type->offsetGet($key);
Исходный код
function offsetGet($key) {
return $this->$key;
}
offsetSet()
$Type->offsetSet($key, $value);
Исходный код
function offsetSet($key, $value) {
$this->set($key, $value);
}
offsetExists()
$Type->offsetExists($key);
Исходный код
function offsetExists($key) {
return isset($this->$key);
}
offsetUnset()
$Type->offsetUnset($key);
Исходный код
function offsetUnset($key) {
unset($this->$key);
}
getName()
$Type->getName();
Исходный код
function getName() {
return $this->name;
}
getTitle()
$Type->getTitle();
Исходный код
function getTitle() {
if (!$this->title) {
if (mb_strlen($this->name) > 1) {
return strtr(mb_strtoupper(mb_substr($this->name, 0, 1)) . mb_substr($this->name, 1, mb_strlen($this->name) - 1), '_', ' ');
} else {
return mb_strtoupper($this->name);
}
}
return $this->title;
}
displayTitle()
$Type->displayTitle();
Исходный код
function displayTitle() {
return htmlspecialchars($this->getTitle());
}
getPlural()
$Type->getPlural();
Исходный код
function getPlural() {
return $this->plural;
}
getCreate()
$Type->getCreate();
Исходный код
function getCreate() {
return $this->create;
}
isPublic()
$Type->isPublic();
Исходный код
function isPublic() {
return $this->public ? true : false;
}
isEnabled()
$Type->isEnabled();
Исходный код
function isEnabled() {
return $this->enable ? true : false;
}
isSitemap()
$Type->isSitemap();
Исходный код
function isSitemap() {
return $this->sitemap ? true : false;
}
isSelect()
$Type->isSelect();
Исходный код
function isSelect() {
return $this->select ? true : false;
}
getOrder()
$Type->getOrder();
Исходный код
function getOrder() {
return $this->order;
}
getOrderList()
$Type->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;
} elseif ($Table = $this->loadTable()) {
return $Table->getOrderList();
}
if ($Field = $this->getField('order')) if ($Field->isEnabled()) return array( 'order' => 'ASC' );
return array();
}
getSort()
$Type->getSort();
Исходный код
function getSort() {
return $this->sort;
}
getSortList()
$Type->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;
} elseif ($Table = $this->loadTable()) {
return $Table->getSortList();
}
if ($Field = $this->getField('title')) if ($Field->isEnabled()) return array( 'title' => 'ASC' );
return array();
}
addProperty()
$Type->addProperty(Property $Property);
Исходный код
function addProperty(Property $Property) {
$this->propertyList[$Property->getName()] = $Property;
}
getProperty()
$Type->getProperty($property);
Исходный код
function getProperty($property) {
return $this->propertyList[$property];
}
getPropertyList()
$Type->getPropertyList();
Исходный код
function getPropertyList() {
return $this->propertyList;
}
getTable()
$Type->getTable();
Исходный код
function getTable() {
return $this->table ? $this->table : 'item';
}
loadTable()
$Type->loadTable();
Исходный код
function loadTable() {
if ($table = $this->getTable()) {
return $this->Main()->Storage()->getTable($table);
}
}
getField()
$Type->getField($field);
Исходный код
function getField($field) {
if ($Table = $this->loadTable()) {
return $Table->getField($field);
}
}
getEnabledField()
$Type->getEnabledField($field);
Исходный код
function getEnabledField($field) {
if ($Field = $this->getField($field)) if ($Field->isEnabled()) return $Field;
}
getFieldList()
$Type->getFieldList();
Исходный код
function getFieldList() {
if ($Table = $this->loadTable()) {
return $Table->getFieldList();
}
}
getEnabledFieldList()
$Type->getEnabledFieldList();
Исходный код
function getEnabledFieldList() {
if ($Table = $this->loadTable()) {
return $Table->getFieldList();
}
}
resetEnabledFieldList()
$Type->resetEnabledFieldList();
Исходный код
function resetEnabledFieldList() {
if ($Table = $this->loadTable()) {
return $Table->resetEnabledFieldList();
}
}
getList()
$Type->getList();
Исходный код
function getList() {
return $this->list;
}
isRoot()
$Type->isRoot();
Исходный код
function isRoot() {
return $this->root ? true : false;
}
isSite()
$Type->isSite();
Исходный код
function isSite() {
return $this->site ? true : false;
}
getClass()
$Type->getClass();
Исходный код
function getClass() {
return $this->class;
}
getObject()
$Type->getObject();
Исходный код
function getObject() {
return $this->object;
}
addTypeData()
$Type->addTypeData(array $typeData, $override=true);
Исходный код
function addTypeData(array $typeData, $override = true) {
foreach ($typeData as $k => $v) {
if ($k === 'props') {
if (is_array($v)) {
$propertyClass = $this->App()->getClass('data_property');
foreach ($v as $propertyData) {
if (is_string($propertyData)) {
if (!$Property = $this->getProperty($propertyData)) $Property = new $propertyClass($this->getName(), $propertyData['name']);
$propertyData = array( 'enable' => 'Y' );
$Property->addPropertyData($propertyData, $override);
} elseif (is_array($propertyData)) {
if (!$Property = $this->getProperty($propertyData['name'])) $Property = new $propertyClass($this->getName(), $propertyData['name']);
$Property->addPropertyData($propertyData, $override);
}
$this->addProperty($Property);
}
}
} elseif ($override || !isset($this->$k)) {
$this->set($k, $v);
}
}
}
addPropertyFieldList()
$Type->addPropertyFieldList();
Исходный код
function addPropertyFieldList() {
if (!is_array($fieldList = $this->getFieldList())) return;
if (!is_array($propertyList = $this->getPropertyList())) return;
$done = true;
foreach ($fieldList as $fieldName => $Field) if (!isset($propertyList[$fieldName])) {
$done = false;
break;
}
if ($done) return;
$newPropertyList = array();
$propertyClass = $this->App()->getClass('data_property');
foreach ($fieldList as $fieldName => $Field) if (!isset($propertyList[$fieldName])) {
$Property = new $propertyClass($this->getName(), $Field->getName());
$propertyData = array(
'title' => $Field->getTitle(),
'enable' => $Field->isEnabled() ? 'Y' : '',
);
$Property->addPropertyData($propertyData);
$newPropertyList[$Property->getName()] = $Property;
}
foreach ($propertyList as $propertyName => $Property) $newPropertyList[$propertyName] = $Property;
$this->propertyList = $newPropertyList;
}
getTypeData()
$Type->getTypeData();
Исходный код
function getTypeData() {
$r = $this->data;
$r['site'] = 'Y';
$r['props'] = array();
foreach ($this->getPropertyList() as $Property) if ($Property->isSite()) {
$r['props'][$Property->getName()] = $Property->getPropertyData();
}
return $r;
}
getPanel()
$Type->getPanel();
Исходный код
function getPanel() {
return array(
'edit' => array(
'href' => $this->Main()->href('/admin/modules') . '?a=module&module=' . rawurldecode($this->getName()),
'image' => 'edit',
),
'open' => array(
'href' => $this->Main()->href('/admin/modules') . '?module=' . rawurlencode($this->getName()),
'image' => 'angle-right',
'modal' => false,
),
);
}
displayPageForm()
$Type->displayPageForm($form='data_type');
Исходный код
function displayPageForm($form = 'data_type') {
if (!isset($form)) return;
$Main = $this->Main();
$Form = $this->Form();
$Type = $this;
$document = $Form->load($form, $Type);
if ($Form->store($document)) {
if ($Type->save()) {
return $Type->href();
}
}
return $document;
}
href()
$Type->href();
Исходный код
function href() {
return $this->Main()->href('/admin/modules') . '?module=' . rawurlencode($this->getName());
}
save()
$Type->save();
Исходный код
function save() {
$this->set('site', 'Y');
return $this->Main()->Modules()->saveData();
}