ModuleCategory_EntityCategory
Package | application.modules.category |
---|---|
Inheritance | class ModuleCategory_EntityCategory » EntityORM » Entity » LsObject |
Since | 2.0 |
Source Code | /application/classes/modules/category/entity/Category.entity.class.php |
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
_aBehaviors | Список поведений в виде готовых объектов, формируется автоматически | LsObject | |
_aData | array | Данные сущности, на этот массив мапятся методы set* и get* | Entity |
_aManyToManyRelations | array | Объекты связей many_to_many | EntityORM |
_aOriginalData | array | Массив исходных данных сущности | EntityORM |
aBehaviors | array | Список поведений | LsObject |
aFields | array | Список полей таблицы сущности | EntityORM |
aRelations | ModuleCategory_EntityCategory | ||
aRelationsData | array | Список данных связей | EntityORM |
aValidateErrors | array | Список ошибок валидации в разрезе полей, например | Entity |
aValidateRules | array | Определяем правила валидации | ModuleCategory_EntityCategory |
bIsNew | bool | Флаг новая или нет сущность | EntityORM |
sPrimaryKey | null|string | Имя поля с первичным ключом в БД | Entity |
sValidateScenario | string | Сценарий валиадции полей | Entity |
Public Methods
Method | Description | Defined By |
---|---|---|
Add() | Добавление сущности в БД | EntityORM |
AddBehaviorHook() | Добавляет хук поведения | LsObject |
AttachBehavior() | Присоединяет поведение к объекту | LsObject |
Delete() | Удаление сущности из БД | EntityORM |
DetachBehavior() | Отсоединяет поведение от объекта | LsObject |
GetBehavior() | Возвращает объект поведения по его имени | LsObject |
GetBehaviors() | Возвращает все объекты поведения | LsObject |
Init() | Метод инициализации сущности, вызывается при её создании | Entity |
Reload() | Обновляет данные сущности из БД | EntityORM |
RemoveBehaviorHook() | Удаляет хук поведения | LsObject |
RunBehaviorHook() | Запускает хук поведения на выполнение | LsObject |
Save() | Сохранение сущности в БД (если новая то создается) | EntityORM |
ShowColumns() | Возвращает список полей сущности | EntityORM |
ShowPrimaryIndex() | Возвращает primary индекс сущности | EntityORM |
Update() | Обновление сущности в БД | EntityORM |
ValidateOrderCheck() | Установка дефолтной сортировки | ModuleCategory_EntityCategory |
ValidateParentCategory() | Проверка родительской категории | ModuleCategory_EntityCategory |
_SetIsNew() | Установка флага "новая" | EntityORM |
_Validate() | Выполняет валидацию данных сущности | Entity |
__call() | Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля | EntityORM |
__clone() | При клонировании сбрасываем поведения | LsObject |
__construct() | Установка связей | EntityORM |
__get() | Используется для доступа к связанным данным типа MANY_TO_MANY | EntityORM |
_addValidateError() | Добавляет для поля ошибку в список ошибок | Entity |
_clearValidateErrors() | Очищает список всех ошибок или для конкретного поля | Entity |
_createValidators() | Создает и возвращает список валидаторов для сущности | Entity |
_getData() | Получает массив данных сущности | Entity |
_getDataArray() | Рекурсивное преобразование объекта и вложенных объектов в массив | Entity |
_getDataFields() | Возвращает данные для списка полей сущности | EntityORM |
_getDataOne() | Возвращает данные по конкретному полю | Entity |
_getField() | Возвращает поле в нужном формате | EntityORM |
_getFields() | Возвращает список полей сущности | EntityORM |
_getManyToManyRelationEntity() | Возвращает сущность связи при many to many | EntityORM |
_getOriginalData() | Возвращает все данные сущности | EntityORM |
_getOriginalDataOne() | Возвращает "оригинальные" данные по конкретному полю | EntityORM |
_getPrimaryKey() | Получение primary key из схемы таблицы | EntityORM |
_getPrimaryKeyValue() | Получение значения primary key | EntityORM |
_getRelations() | Возвращает список связей | EntityORM |
_getRelationsData() | Возвращает список данный связей | EntityORM |
_getTreeParentKey() | Переопределяем имя поля с родителем | ModuleCategory_EntityCategory |
_getTreeParentKeyValue() | Получение значения родителя. Используется в связи RELATION_TYPE_TREE | EntityORM |
_getValidateError() | Возвращает первую ошибку для поля или среди всех полей | Entity |
_getValidateErrors() | Возвращает список ошибок для всех полей или одного поля | Entity |
_getValidateRules() | Возвращает список правил для валидации | Entity |
_getValidateScenario() | Возвращает текущий сценарий валидации | Entity |
_getValidators() | Возвращает список валидаторов с учетом текущего сценария | Entity |
_hasValidateErrors() | Проверяет есть ли ошибки валидации | Entity |
_isNew() | Новая или нет сущность | EntityORM |
_setData() | Устанавливает данные сущности | EntityORM |
_setDataSafe() | Устанавливает данные, но только те, которые есть в $this->aValidateRules | Entity |
_setManyToManyRelations() | Устанавливает вспомогательные объекты для связи many_to_many | EntityORM |
_setRelationsData() | Устанавливает данные связей | EntityORM |
_setValidateScenario() | Устанавливает сценарий валидации | Entity |
getAncestors() | Для сущности со связью RELATION_TYPE_TREE возвращает список всех предков | EntityORM |
getChildren() | Для сущности со связью RELATION_TYPE_TREE возвращает список прямых потомков | EntityORM |
getCountTargetOfDescendants() | Возвращает количество таргетов (объектов) для всех потомков, включая себя | ModuleCategory_EntityCategory |
getData() | Возвращает список дополнительных данных | ModuleCategory_EntityCategory |
getDataOne() | Возвращает данные по конкретному ключу | ModuleCategory_EntityCategory |
getDataOneSumDescendants() | Возвращает сумму значений по ключу для всех потомков, включая себя | ModuleCategory_EntityCategory |
getDescendants() | Для сущности со связью RELATION_TYPE_TREE возвращает список всех потомков | EntityORM |
getParent() | Для сущности со связью RELATION_TYPE_TREE возвращает предка | EntityORM |
getTypeByCacheLife() | Возвращает объект типа категории с использованием кеширования на время сессии | ModuleCategory_EntityCategory |
getUrlAdminRemove() | Возвращает URL админки для удаления | ModuleCategory_EntityCategory |
getUrlAdminUpdate() | Возвращает URL админки для редактирования | ModuleCategory_EntityCategory |
getWebUrl() | Возвращает URL категории | ModuleCategory_EntityCategory |
resetRelationsData() | Сбрасывает данные необходимой связи | EntityORM |
setAncestors() | Для сущности со связью RELATION_TYPE_TREE устанавливает предков | EntityORM |
setChildren() | Для сущности со связью RELATION_TYPE_TREE устанавливает потомков | EntityORM |
setData() | Устанавливает список дополнительня данных | ModuleCategory_EntityCategory |
setDataOne() | Устанваливает данные для конкретного ключа | ModuleCategory_EntityCategory |
setDescendants() | Для сущности со связью RELATION_TYPE_TREE устанавливает потомков | EntityORM |
setParent() | Для сущности со связью RELATION_TYPE_TREE устанавливает предка | EntityORM |
Protected Methods
Method | Description | Defined By |
---|---|---|
PrepareBehaviors() | Инициализация поведений | LsObject |
_Method() | Проксирует вызов методов в модуль сущности | EntityORM |
afterDelete() | Хук, срабатывает после удаления сущности | EntityORM |
afterSave() | Хук, срабатывает после сохранением сущности | EntityORM |
beforeDelete() | Выполняется перед удалением | ModuleCategory_EntityCategory |
beforeSave() | Выполняется перед сохранением | ModuleCategory_EntityCategory |
Property Details
Определяем правила валидации
Method Details
public bool ValidateOrderCheck(string $sValue, array $aParams)
| ||
$sValue | string | Валидируемое значение |
$aParams | array | Параметры |
{return} | bool |
public function ValidateOrderCheck($sValue, $aParams)
{
if (!$this->getSort()) {
$this->setSort(100);
}
return true;
}
Установка дефолтной сортировки
public bool ValidateParentCategory(string $sValue, array $aParams)
| ||
$sValue | string | Валидируемое значение |
$aParams | array | Параметры |
{return} | bool |
public function ValidateParentCategory($sValue, $aParams)
{
if ($this->getPid()) {
if ($oCategory = $this->Category_GetCategoryById($this->getPid())) {
if ($oCategory->getId() == $this->getId()) {
return 'Попытка вложить категорию в саму себя';
}
if ($oCategory->getTypeId() != $this->getTypeId()) {
return 'Неверная родительская категория';
}
$this->setUrlFull($oCategory->getUrlFull() . '/' . $this->getUrl());
} else {
return 'Неверная категория';
}
} else {
$this->setPid(null);
$this->setUrlFull($this->getUrl());
}
return true;
}
Проверка родительской категории
public string _getTreeParentKey()
| ||
{return} | string |
public function _getTreeParentKey()
{
return 'pid';
}
Переопределяем имя поля с родителем Т.к. по дефолту в деревьях используется поле parent_id
protected bool beforeDelete()
| ||
{return} | bool |
protected function beforeDelete()
{
if ($bResult = parent::beforeDelete()) {
/**
* Запускаем удаление дочерних категорий
*/
if ($aCildren = $this->getChildren()) {
foreach ($aCildren as $oChildren) {
$oChildren->Delete();
}
}
/**
* Удаляем связь с таргетом
*/
if ($aTargets = $this->Category_GetTargetItemsByCategoryId($this->getId())) {
foreach ($aTargets as $oTarget) {
$oTarget->Delete();
/**
* TODO: Нужно запустить хук, что мы удалили такую-то связь
*/
}
}
}
return $bResult;
}
Выполняется перед удалением
protected bool beforeSave()
| ||
{return} | bool |
protected function beforeSave()
{
if ($bResult = parent::beforeSave()) {
if ($this->_isNew()) {
$this->setDateCreate(date("Y-m-d H:i:s"));
}
}
return $bResult;
}
Выполняется перед сохранением
public mixed getCountTargetOfDescendants()
| ||
{return} | mixed |
public function getCountTargetOfDescendants()
{
$iCount = $this->getCountTarget();
$aChildren = $this->getDescendants();
foreach ($aChildren as $oItem) {
$iCount += $oItem->getCountTarget();
}
return $iCount;
}
Возвращает количество таргетов (объектов) для всех потомков, включая себя
public array|mixed getData()
| ||
{return} | array|mixed |
public function getData()
{
$aData = @unserialize($this->_getDataOne('data'));
if (!$aData) {
$aData = array();
}
return $aData;
}
Возвращает список дополнительных данных
public null getDataOne($sKey $sKey)
| ||
$sKey | $sKey | |
{return} | null |
public function getDataOne($sKey)
{
$aData = $this->getData();
if (isset($aData[$sKey])) {
return $aData[$sKey];
}
return null;
}
Возвращает данные по конкретному ключу
public null getDataOneSumDescendants($sKey $sKey)
| ||
$sKey | $sKey | |
{return} | null |
public function getDataOneSumDescendants($sKey)
{
$iResult = $this->getDataOne($sKey);
$aChildren = $this->getDescendants();
foreach ($aChildren as $oItem) {
$iResult += $oItem->getDataOne($sKey);
}
return $iResult;
}
Возвращает сумму значений по ключу для всех потомков, включая себя
public ModuleCategory_EntityType getTypeByCacheLife()
| ||
{return} | ModuleCategory_EntityType |
public function getTypeByCacheLife()
{
$sKey = 'category_type_' . (string)$this->getTypeId();
if (false === ($oType = $this->Cache_GetLife($sKey))) {
$oType = $this->getType();
$this->Cache_SetLife($oType, $sKey);
}
return $oType;
}
Возвращает объект типа категории с использованием кеширования на время сессии
public string getUrlAdminRemove()
| ||
{return} | string |
public function getUrlAdminRemove()
{
return Router::GetPath('admin/categories/' . $this->getTypeByCacheLife()->getTargetType() . '/remove/' . $this->getId());
}
Возвращает URL админки для удаления
public string getUrlAdminUpdate()
| ||
{return} | string |
public function getUrlAdminUpdate()
{
return Router::GetPath('admin/categories/' . $this->getTypeByCacheLife()->getTargetType() . '/update/' . $this->getId());
}
Возвращает URL админки для редактирования
public string getWebUrl()
| ||
{return} | string |
public function getWebUrl()
{
return null;
}
Возвращает URL категории Этот метод необходимо переопределить из плагина и возвращать свой URL для нужного типа категорий
public void setData($aRules $aRules)
| ||
$aRules | $aRules |
public function setData($aRules)
{
$this->_aData['data'] = @serialize($aRules);
}
Устанавливает список дополнительня данных
public void setDataOne($sKey $sKey, $mValue $mValue)
| ||
$sKey | $sKey | |
$mValue | $mValue |
public function setDataOne($sKey, $mValue)
{
$aData = $this->getData();
$aData[$sKey] = $mValue;
$this->setData($aData);
}
Устанваливает данные для конкретного ключа