# Update хук

Разместите код хука ([подробнее](https://www.hostcms.ru/documentation/modules/core/events/)) в файле **`bootstrap.php`**

В массивах `$aAdminForms` и `$aAdminFormActions` настраиваются формы, их поля и действия, которые нужно удалить <mark style="color:red;">`[delete]`</mark> или модифицировать <mark style="color:green;">`[update]`</mark>

{% code lineNumbers="true" fullWidth="true" %}

```php
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:
                                        
                                            if(isset($oAdmin_Form_Field->$field))
	                                    {
	                                        $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:
                                        
                                            if(isset($oAdmin_Form_Action->$field))
	                                    {
                                                $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'));
```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://support.morozovpimnev.ru/poleznosti/update-khuk.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
