Скрипты миграций для 1С-Битрикс. Добавление типа почтового события и самого почтового шаблона
У чему лишние слова? Держите код.
//<?php global $APPLICATION; $info = array(); function oGetMessage($key, $fields) { $messages = array( 'EVENT_TYPE_UPDATE' => 'Тип почтового события #EVENT_NAME# [#ID#] успешно обновлён', 'EVENT_TYPE_UPDATE_ERROR' => 'Ошибка обновления типа почтового события #EVENT_NAME# [#ID#]', 'EVENT_TYPE_ADD' => 'Тип почтового события #EVENT_NAME# [#ID#] успешно добавлен', 'EVENT_TYPE_ADD_ERROR' => 'Ошибка добавления типа почтового события #EVENT_NAME#', 'EVENT_MESSAGE_UPDATE' => 'Почтовый шаблон с типом #EVENT_NAME# [#ID#] и темой «#SUBJECT#» успешно обновлён', 'EVENT_MESSAGE_UPDATE_ERROR' => 'Ошибка обновления почтового шаблона с типом #EVENT_NAME# [#ID#] и темой «#SUBJECT#». #ERROR#', 'EVENT_MESSAGE_ADD' => 'Почтовый шаблон с типом #EVENT_NAME# [#ID#] и темой «#SUBJECT#» успешно добавлен', 'EVENT_MESSAGE_ADD_ERROR' => 'Ошибка добавления почтового шаблона с типом #EVENT_NAME# и темой «#SUBJECT#». #ERROR#', ); return isset($messages[$key]) ? str_replace(array_keys($fields), array_values($fields), $messages[$key]) : ''; } // Типы почтовых событий $eventTypesFields = array( array( 'EVENT_NAME' => 'RSB_FAIL_MESSAGE_ADMIN', 'LID' => 'ru', 'SORT' => 150, 'NAME' => '[RSB] Оповещение админу о непроведённом платеже', 'DESCRIPTION' => '', ), ); // Почтовые события $eventMessagesFields = array( array( 'EVENT_NAME' => 'RSB_FAIL_MESSAGE_ADMIN', 'LID' => 's1', 'ACTIVE' => 'Y', 'EMAIL_FROM' => '#DEFAULT_EMAIL_FROM#', 'EMAIL_TO' => '#EMAIL_TO#', 'BODY_TYPE' => 'text', 'BCC' => '', 'SUBJECT' => 'Ошибка при оплате. Нужно отреагировать! [#SITE_NAME#]', 'MESSAGE' => '#DATE# при оплате заказа № #ORDER_ID# произошла неизвестная ошибка в платежном шлюзе. Мы рекомендовали пользователю попробовать еще раз и пообещали связаться с ним, как только все заработает.', ), ); foreach ($eventTypesFields as $eventTypeField) { $eventTypeIterator = \CEventType::GetList( array( 'EVENT_NAME' => $eventTypeField['EVENT_NAME'], 'LID' => $eventTypeField['LID'], ) ); if ($eventType = $eventTypeIterator->Fetch()) { $et = new \CEventType(); if (($eventTypeUpdate = $et->Update(array('ID' => $eventType['ID']), $eventTypeField))) { $info[] = oGetMessage('EVENT_TYPE_UPDATE', array( '#EVENT_NAME#' => $eventTypeField['EVENT_NAME'], '#ID#' => $eventType['ID'], '#LID#' => $eventType['LID'], )); } else { throw new \Bitrix\Main\SystemException(oGetMessage('EVENT_TYPE_UPDATE_ERROR', array( '#EVENT_NAME#' => $eventTypeField['EVENT_NAME'], '#ID#' => $eventType['ID'], ))); } } else { $et = new \CEventType(); if (($eventTypeAdd = $et->Add($eventTypeField))) { $info[] = oGetMessage('EVENT_TYPE_ADD', array( '#EVENT_NAME#' => $eventTypeField['EVENT_NAME'], '#LID#' => $eventTypeField['LID'], '#ID#' => $eventTypeAdd, )); } else { throw new \Bitrix\Main\SystemException(oGetMessage('EVENT_TYPE_ADD_ERROR', array( '#EVENT_NAME#' => $eventTypeField['EVENT_NAME'], ))); } } } foreach ($eventMessagesFields as $eventMessageField) { $by = 'id'; $оrder = 'asc'; $eventMessageIterator = \CEventMessage::GetList( $by, $оrder, array( 'EVENT_NAME' => $eventMessageField['EVENT_NAME'], 'LID' => $eventMessageField['LID'], 'SUBJECT' => $eventMessageField['SUBJECT'], ) ); if ($eventMessage = $eventMessageIterator->Fetch()) { $em = new \CEventMessage(); if (($eventTypeUpdate = $em->Update($eventMessage['ID'], $eventMessageField))) { $info[] = oGetMessage('EVENT_MESSAGE_UPDATE', array( '#EVENT_NAME#' => $eventMessage['EVENT_NAME'], '#ID#' => $eventMessage['ID'], '#SUBJECT#' => $eventMessage['SUBJECT'], )); } else { throw new \Bitrix\Main\SystemException(oGetMessage('EVENT_MESSAGE_UPDATE_ERROR', array( '#EVENT_NAME#' => $eventMessage['EVENT_NAME'], '#ID#' => $eventMessage['ID'], '#SUBJECT#' => $eventMessage['SUBJECT'], '#ERROR#' => $em->LAST_ERROR, ))); } } else { $em = new \CEventMessage(); if (($eventMessageAdd = $em->Add($eventMessageField))) { $info[] = oGetMessage('EVENT_MESSAGE_ADD', array( '#EVENT_NAME#' => $eventMessageField['EVENT_NAME'], '#SUBJECT#' => $eventMessageField['SUBJECT'], '#ID#' => $eventMessageAdd, )); } else { throw new \Bitrix\Main\SystemException(oGetMessage('EVENT_MESSAGE_ADD_ERROR', array( '#EVENT_NAME#' => $eventMessageField['EVENT_NAME'], '#SUBJECT#' => $eventMessageField['SUBJECT'], '#ERROR#' => $em->LAST_ERROR, ))); } } } echo implode("<br>\n", $info);