Модулем отслеживается ряд событий для отправки соответствующих настройкам смс сообщений.
Модуль | Событие | Метод обработчика модуля |
---|---|---|
main | OnBeforeUserAdd | main_OnBeforeUserAdd |
main | OnAfterUserAdd | main_OnAfterUserAdd |
main | OnBeforeUserUpdate | main_OnBeforeUserUpdate |
main | OnAfterUserUpdate | main_OnAfterUserUpdate |
main | OnBeforeEventAdd | main_OnBeforeEventAdd |
main | OnAdminTabControlBegin | OnAdminTabControlBegin |
sale | OnShipmentTrackingNumberChange | sale_OnShipmentTrackingNumberChange |
sale | OnSaleStatusOrderChange | sale_OnSaleStatusOrderChange |
sale | OnSaleOrderCanceled | sale_OnSaleOrderCanceled |
sale | OnSaleOrderPaid | sale_OnSaleOrderPaid |
sale | OnSaleOrderSaved | sale_OnSaleOrderSaved |
sale | OnSaleStatusShipmentChange | sale_OnSaleStatusShipmentChange |
sale | OnBeforeOrderAdd | sale_OnBeforeOrderAdd |
sale | OnOrderAdd | sale_OnOrderAdd |
sale | OnBeforeOrderUpdate | sale_OnBeforeOrderUpdate |
sale | OnOrderUpdate | sale_OnOrderUpdate |
sale | OnSalePayOrder | sale_OnSalePayOrder |
sale | OnSaleCancelOrder | sale_OnSaleCancelOrder |
sale | OnSaleStatusOrder | sale_OnSaleStatusOrder |
bxmaker.authuserphone | onSendCode | bxmaker_authuserphone_onSendCode |
bxmaker.authuserphone | onUserAdd | bxmaker_authuserphone_onUserAdd |
bxmaker.authuserphone | onUserChangePassword | bxmaker_authuserphone_onUserChangePassword |
Модуль написан с использованием ядра битркиса D7, поэтмоу поумолчанию классы модуля работающие с таблицами имеют уже встреные события в ORM - OnBeforeAdd
, OnAfterAdd
, nBeforeDelete
, OnAfterDelete
, OnBeforeUpdate
, OnAfterUpdate
Важно: Для подписки на события нет необходимости указывать в конце названия класса слово Table
.
AddEventHandler('bxmaker.smsnotice', '\Bxmaker\Smsnotice\Manager::OnBeforeAdd', 'bxmaker_smsnotice_onBeforeAdd');
use \Bitrix\Main\Entity; /* стоку разместить в начале файла */
function bxmaker_smsnotice_onBeforeAdd(Entity\Event $event)
{
$result = new Entity\EventResult;
$data = $event->getParameter("fields");
if (isset($data['STATUS']))
{
/* указываем статус сообщения - "доставлено", при добавлении в базу*/
$result->modifyFields(array('STATUS' => \Bxmaker\SmsNotice::SMS_STATUS_DELIVERED));
}
// $result->unsetFields(array('COMMENT'));
return $result;
}
Событие OnBeforeSend
вызывается перед отправкой смс сообщения, его можно использоваль для остановки отправки например.
/* регистрация обработчика события */
AddEventHandler('bxmaker.smsnotice', 'OnBeforeSend','bxmaker_smsnotice_OnBeforeSend');
function bxmaker_smsnotice_OnBeforeSend($arFields){
/* здесь происходят какие то операции над $arFields */
/* 1. возвращение результата работы обработчик*/
/* если ошибок не было */
return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::SUCCESS, array($arFields));
/* 2. если произошла ошибка или надо предотвратить отправку
возвращаем ошибку и текст ошибки. Можно добавить
$arFields['error_msg'] = 'Текст ошибки. Если не указывать
этот параметр будет возвращен текст ошибки - "Один из обработчиков событий вернул статус - ERROR.
Отправка не произошла."';
*/
return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::ERROR, array($arFields));
}
Событие OnBeforeSendTemplate
вызывается перед отправкой смс сообщений по шаблону, его можно использоваль для остановки отправки например.
/* регистрация обработчика события */
AddEventHandler('bxmaker.smsnotice', 'OnBeforeSendTemplate','bxmaker_smsnotice_OnBeforeSendTemplate');
function bxmaker_smsnotice_OnBeforeSendTemplate($template, $arFields){
/* здесь происходят какие то операции над $arFields */
/*1. возвращение результата работы обработчик*/
/* если ошибок не было */
return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::SUCCESS, array($template, $arFields));
/*2. если произошла ошибка или надо предотвратить отправку
возвращаем ошибку и текст ошибки. Можно добавить
$arFields['error_msg'] = 'Текст ошибки. Если не указывать
этот параметр будет возвращен текст ошибки - "Один из обработчиков событий вернул статус - ERROR.
Отправка не произошла."';
*/
return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::ERROR, array($template, $arFields));
}
Событие OnBeforeSendTemplateEmail
вызывается перед отправкой смс сообщений привязанного к отправке Email письма, его можно использовать для остановки отправки например.
/* регистрация обработчика события */
AddEventHandler('bxmaker.smsnotice', 'OnBeforeSendTemplateEmail','bxmaker_smsnotice_OnBeforeSendTemplateEmail');
function bxmaker_smsnotice_OnBeforeSendTemplateEmail($template, $arFields){
/* здесь происходят какие то операции над $arFields */
/*1. возвращение результата работы обработчик*/
/* если ошибок не было */
return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::SUCCESS, array($template, $arFields));
/*2. если произошла ошибка или надо предотвратить отправку
возвращаем ошибку и текст ошибки. Можно добавить
$arFields['error_msg'] = 'Текст ошибки. Если не указывать
этот параметр будет возвращен текст ошибки - "Один из обработчиков событий вернул статус - ERROR.
Отправка не произошла."';
*/
return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::ERROR, array($template, $arFields));
}
Событие OnPreparedOrderData
вызывается при подготовке данных о заказе, когда отправляются смс связанные с заказами. Подготовленные данные о заказе дальше будут использоваться для формирования смс сообщения на основе шаблона.
Его удобно использовать для расширения данных для автозамены. Из примера ниже, в шаблоне можно будет указать конструкцию #CODE_FILIALA#
которая будет заменена на 1010
$eventManager = \Bitrix\Main\EventManager::getInstance(); //подписываем обработчик на событие
$eventManager->addEventHandler("bxmaker.smsnotice", "OnPreparedOrderData", array(
'CBXmakerEventHandler', 'bxmaker_smsnotice__OnPreparedOrderData'
));
Class CBXmakerEventHandler {
// обоработчик ----
public function bxmaker_smsnotice__OnPreparedOrderData(\Bitrix\Main\Event $event)
{
$arOrderData = $event->getParameters();
$arOrderData['CODE_FILIALA'] = '1010';
$result = new \Bitrix\Main\EventResult(Bitrix\Main\EventResult::SUCCESS, $arOrderData);
return $result;
}
}