События

Какие уже события отслеживаются?

При установке модуля сразу  регистрируются обработчики  на события:
  1. main OnBeforeUserAdd - перед добавлением пользователя
  2. main OnAfterUserAdd - после добавления пользователя
  3. main OnBeforeUserUpdate - перед обновлением пользователя
  4. main OnAfterUserUpdate - после обновления пользователя
  5. main OnBeforeEventAdd - перед возникновением почтового события
  6. sale OnBeforeOrderAdd - пере добавлением заказа
  7. sale OnOrderAdd - после добавления заказа
  8. sale OnBeforeOrderUpdate - перед обновлением заказа
  9. sale OnOrderUpdate - при обновлении заказа
  10. sale OnSalePayOrder при оплате заказа
  11. sale OnSaleCancleOrder - при отмене заказа
  12. sale OnSaleStatusOrder - при изменении статуса заказа
При возникновении того или иного события происходит отправка смс,   какой шаблон отправлять при том или ином событии настраивается в модуле на странице - Административный раздел → Настройки → СМС Оповещения → Настройки модуля

События модуля СМС оповещений, доступные для использования

Так как модуль написан используя новое ядро битрикса -  D7, то в модуле доступны события добавления, редактирования, удаления записей из базы данных для следующих классов:
  • \Bxmaker\Smsnotice\Manager
  • \Bxmaker\Smsnotice\Service
  • \Bxmaker\SmsNotice\Template
  • \Bxmaker\SmsNotice\Template\Type
  • \Bxmaker\SmsNotuce\Template\Site
/* события - OnBeforeAdd, OnAfterAdd, OnBeforeDelete, OnAfterDelete, OnBeforeUpdate, OnAfterUpdate */

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');

/* сам обработчик события */
use \Bitrix\Main\EventResult as BMER; /* эта строка должна быть указана в начале файла */

function bxmaker_smsnotice_OnBeforeSend($arFields){

    /* здесь происходят какие то операции над $arFields */

    /* возвращение результата работы обработчик*/
    /* если ошибок не было */
    return new BMER( BMER::SUCCESS, array($arFields));

    /*если произошла ошибка или надо предотвратить отправку
    возвращаем ошибку и текст ошибки. Можно добавить 
    $arFields['error_msg'] = 'Текст ошибки. Если не указывать
    этот параметр будет возвращен текст ошибки - "Один из обработчиков событий вернул статус - ERROR.
    Отправка не произошла."';
    */
    return new BMER( BMER::ERROR, array($arFields));

}

Отправка смс по шаблону - OnBeforeSendTemplate

/* регистрация обработчика события */AddEventHandler('bxmaker.smsnotice', 'OnBeforeSendTemplate','bxmaker_smsnotice_OnBeforeSendTemplate');

/* сам обработчик события */
use \Bitrix\Main\EventResult as BMER; /* эта строка должна быть указана в начале файла */

function bxmaker_smsnotice_OnBeforeSendTemplate($template, $arFields){

    /* здесь происходят какие то операции над $arFields */

    /* возвращение результата работы обработчик*/
    /* если ошибок не было */
    return new BMER( BMER::SUCCESS, array($template, $arFields));


    /*если произошла ошибка или надо предотвратить отправку
    возвращаем ошибку и текст ошибки. Можно добавить
    $arFields['error_msg'] = 'Текст ошибки. Если не указывать
    этот параметр будет возвращен текст ошибки - "Один из обработчиков событий вернул статус - ERROR.
    Отправка не произошла."';
    */
    return new BMER( BMER::ERROR, array($template, $arFields));

}