Update хук
https://www.hostcms.ru/api7/classes/Update-Entity.html
Разместите код хука (подробнее) в файле bootstrap.php
В массивах $aAdminForms
и $aAdminFormActions
настраиваются формы, их поля и действия, которые нужно удалить [delete]
или модифицировать [update]
class My_Update_Observer
{
static public function onAfterInstall($entity)
{
// Формы центра администрирования /admin/admin_form/index.php
$aAdminForms = array(
// удаление в корзину
'delete' => array(
// ID формы "Интернет-магазин, товары и группы"
65 => array(
249, // ID поля "Комментарии"
250, // ID поля "Модификации"
600 // ID поля "Цифровые товары"
),
// ID формы "Оформленные заказы"
75 => array(
293, // ID поля "Компания"
833, // ID поля "Фамилия"
836, // ID поля "Вес"
886 // ID поля "Статус"
)
),
// обновление полей
'update' => array(
// ID формы "Оформленные заказы"
75 => array(
// ID поля "Дата"
292 => array(
'allow_sorting' => 0, // отключаем "Разрешить сортировку"
'allow_filter' => 0 // отключаем "Разрешить фильтр"
),
// ID поля "Товар"
297 => array(
'word_name' => 'Список товаров', // меняем имя поля
'sorting' => 25 // меняем "Порядок сортировки"
)
)
)
);
// Действия формы центра администрирования
$aAdminFormActions = array(
// удаление в корзину
'delete' => array(
// ID формы "Список интернет-магазинов"
54 => array(
668 // ID действия "Пересчитать"
)
),
// обновление действий
'update' => array(
// ID формы "Оформленные заказы"
75 => array(
// ID действия "Пересчет стоимости доставки"
292 => array(
'sorting' => 10, // меняем "Порядок сортировки"
),
)
)
);
$oAdmin_Language = Core_Entity::factory('Admin_Language')->getByShortname('ru');
foreach ($aAdminForms as $action => $aAdminForm)
{
foreach ($aAdminForm as $admin_form_id => $array)
{
$oAdmin_Form = Core_Entity::factory('Admin_Form')->find($admin_form_id);
if($oAdmin_Form->id)
{
$oAdmin_Form_Word = $oAdmin_Form->Admin_Word->getWordByLanguage($oAdmin_Language->id);
$aIDs = $action == 'delete' ? $array : array_keys($array);
$aAdmin_Form_Fields = $oAdmin_Form->Admin_Form_Fields->getAllById($aIDs, FALSE, 'IN');
foreach ($aAdmin_Form_Fields as $oAdmin_Form_Field)
{
$oAdmin_Form_Field_Word = $oAdmin_Form_Field->Admin_Word->getWordByLanguage($oAdmin_Language->id);
$form_field_name = $oAdmin_Form_Field_Word->name;
switch ($action)
{
case 'delete':
$oAdmin_Form_Field->markDeleted();
Core_Message::show("{$action} поле \"{$form_field_name}\" форма \"{$oAdmin_Form_Word->name}\"", 'warning');
break;
case 'update':
foreach ($array[$oAdmin_Form_Field->id] as $field => $value)
{
switch ($field)
{
case 'word_name':
$oAdmin_Form_Field_Word->name = $value;
$oAdmin_Form_Field_Word->save();
break;
default:
$oAdmin_Form_Field->$field = $value;
$oAdmin_Form_Field->save();
}
Core_Message::show("{$action} поле \"{$form_field_name}\" параметр \"{$field}\" форма \"{$oAdmin_Form_Word->name}\"", 'message');
}
break;
}
}
}
}
}
foreach ($aAdminFormActions as $action => $aAdminFormAction)
{
foreach ($aAdminFormAction as $admin_form_id => $array)
{
$oAdmin_Form = Core_Entity::factory('Admin_Form')->find($admin_form_id);
if($oAdmin_Form->id)
{
$oAdmin_Form_Word = $oAdmin_Form->Admin_Word->getWordByLanguage($oAdmin_Language->id);
$aIDs = $action == 'delete' ? $array : array_keys($array);
$aAdmin_Form_Actions = $oAdmin_Form->Admin_Form_Actions->getAllById($aIDs, FALSE, 'IN');
foreach ($aAdmin_Form_Actions as $oAdmin_Form_Action)
{
$oAdmin_Form_Action_Word = $oAdmin_Form_Action->Admin_Word->getWordByLanguage($oAdmin_Language->id);
$form_action_name = $oAdmin_Form_Action_Word->name;
switch ($action)
{
case 'delete':
$oAdmin_Form_Action->markDeleted();
Core_Message::show("{$action} действие \"{$form_action_name}\" форма \"{$oAdmin_Form_Word->name}\"", 'warning');
break;
case 'update':
foreach ($array[$oAdmin_Form_Action->id] as $field => $value)
{
switch ($field)
{
case 'word_name':
$oAdmin_Form_Action_Word->name = $value;
$oAdmin_Form_Action_Word->save();
break;
default:
$oAdmin_Form_Action->$field = $value;
$oAdmin_Form_Action->save();
}
Core_Message::show("{$action} действие \"{$form_action_name}\" параметр \"{$field}\" форма \"{$oAdmin_Form_Word->name}\"", 'message');
}
break;
}
}
}
}
}
}
}
Core_Event::attach('Update_Entity.onAfterInstall', array('My_Update_Observer', 'onAfterInstall'));
Last updated