События (хуки)

https://www.hostcms.ru/documentation/modules/core/events/

Для добавление в отправляемые данные своих данных можно использовать следующие хуки (подробнее)

// добавление данных в произвольные поля
class My_AmoCRM
{
    static public function onBeforeLeadAdd($controller, $args)
    {
        $oEntity = $args[0]; // Shop_Order, Form_Fill или Siteuser
        $oAmoCRM = $args[1]; // сет настроек
        $id = $args[2]; // FALSE (add) или int (update)
        
        /** $args[3] - параметры,
         * добавление параметров в custom_fields_values
         */
        $args[3]['custom_fields_values'][] = array(
            'field_id' => 123456, // ID произвольного поля
            'values' => array(
                array(
                    'value' => '789', // значение
                    //'enum_code' => 'fax' // если есть
                )
            )
        );
    }
}

Core_Event::attach('AmoCRM_Controller.onBeforeShopLeadAdd', array('My_AmoCRM', 'onBeforeLeadAdd'));
Core_Event::attach('AmoCRM_Controller.onBeforeFormLeadAdd', array('My_AmoCRM', 'onBeforeLeadAdd'));
Core_Event::attach('AmoCRM_Controller.onBeforeSiteuserLeadAdd', array('My_AmoCRM', 'onBeforeLeadAdd'));

События отправки

/**
 * Создание заказа Shop_Payment_System_Handler::_processOrder()
 * @hostcms-event Shop_Payment_System_Handler.onAfterProcessOrder
 * Запустить самостоятельно в своей логике
 */
$oShop_Order = Core_Entity::factory('Shop_Order', 123);
$Shop_Payment_System_Handler = Shop_Payment_System_Handler::factory($oShop_Order->Shop_Payment_System);
$Shop_Payment_System_Handler->shopOrder($oShop_Order);
AmoCRM_Controller::onAfterProcessOrder($Shop_Payment_System_Handler);

/**
 * Создание формы Form_Controller_Show::process()
 * @hostcms-event Form_Controller_Show.onAfterProcess
 * Запустить самостоятельно в своей логике
 */
$oForm_Fill = Core_Entity::factory('Form_Fill', 123);
$oForm = $oForm_Fill->Form;
$Form_Controller_Show = new Form_Controller_Show($oForm);
AmoCRM_Controller::onAfterProcess($Form_Controller_Show, array($oForm_Fill));

/**
 * нет своего хука, перед отправкой письма пользователю о регистрации вставить след код, например в ТДС
 */
$oSiteuser = Core_Entity::factory('Siteuser', 123);
AmoCRM_Controller::siteuser($oSiteuser);

Last updated