public static function getPresetMailingList(array $params = null) { $resultList = array(); $event = new \Bitrix\Main\Event('sender', 'OnPresetMailingList'); $event->send(); foreach ($event->getResults() as $eventResult) { if ($eventResult->getType() == \Bitrix\Main\EventResult::ERROR) { continue; } $eventResultParameters = $eventResult->getParameters(); if (!empty($eventResultParameters)) { if (!empty($params['CODE'])) { $eventResultParametersTmp = array(); foreach ($eventResultParameters as $preset) { if ($params['CODE'] == $preset['CODE']) { $eventResultParametersTmp[] = $preset; break; } } $eventResultParameters = $eventResultParametersTmp; } $resultList = array_merge($resultList, $eventResultParameters); } } $resultListTmp = array(); foreach ($resultList as $result) { if (empty($result['TRIGGER']['START']['ENDPOINT']['CODE'])) { continue; } $trigger = TriggerManager::getOnce($result['TRIGGER']['START']['ENDPOINT']); if (!$trigger) { continue; } $result['TRIGGER']['START']['ENDPOINT']['NAME'] = $trigger->getName(); if (!empty($result['TRIGGER']['START']['ENDPOINT']['CODE'])) { $trigger = TriggerManager::getOnce($result['TRIGGER']['END']['ENDPOINT']); if (!$trigger) { $result['TRIGGER']['END']['ENDPOINT']['NAME'] = $trigger->getName(); } } $resultListTmp[] = $result; } return $resultListTmp; }
} $trigger = \Bitrix\Sender\TriggerManager::getOnce($mailing['TRIGGER_FIELDS'][$type]); if ($trigger) { $triggerListExists[$type] = $mailing['TRIGGER_FIELDS'][$type] + $triggerListForJS[$type][$trigger->getId()]; $trigger->setFieldFormName('post_form'); $trigger->setFieldPrefix('ENDPOINT[' . $type . '][FIELDS]'); $trigger->setFields($triggerListExists[$type]['FIELDS']); $triggerListExists[$type]['FORM'] = $trigger->getForm(); } } } if ($REQUEST_METHOD == "POST" && !$isPostedFormProcessed && check_bitrix_sessid()) { $arError = array(); $triggerListExists = array('START' => null, 'END' => null); foreach ($triggerListExists as $type => $value) { $trigger = \Bitrix\Sender\TriggerManager::getOnce($ENDPOINT[$type]); if ($trigger) { $triggerListExists[$type] = $ENDPOINT[$type] + \Bitrix\Sender\TriggerSettings::getArrayFromTrigger($trigger); } } $updateDb = \Bitrix\Sender\MailingTable::update($MAILING_ID, array('TRIGGER_FIELDS' => $triggerListExists)); if (!$updateDb->isSuccess()) { $arError = array_merge($arError, $updateDb->getErrorMessages()); } if (empty($arError)) { $isPostedFormProcessed = true; LocalRedirect('/bitrix/admin/sender_mailing_trig_edit.php?ID=' . $MAILING_ID . "&lang=" . LANGUAGE_ID); } } } if (!empty($arError)) {
public static function getChainPersonalizeList($id) { $result = array(); $mailingDb = \Bitrix\Sender\MailingTable::getList(array('select' => array('ID', 'TRIGGER_FIELDS'), 'filter' => array('=IS_TRIGGER' => 'Y', '=ID' => $id))); if (!($mailing = $mailingDb->fetch())) { return $result; } $triggerFields = $mailing['TRIGGER_FIELDS']; if (!is_array($triggerFields)) { $triggerFields = array(); } $settingsList = array(); foreach ($triggerFields as $key => $point) { if (empty($point['CODE'])) { continue; } $point['IS_EVENT_OCCUR'] = true; $point['IS_PREVENT_EMAIL'] = false; $point['SEND_INTERVAL_UNIT'] = 'M'; switch ($key) { case 'END': $point['IS_TYPE_START'] = false; break; case 'START': default: $point['IS_TYPE_START'] = true; } $settingsList[] = new \Bitrix\Sender\TriggerSettings($point); } foreach ($settingsList as $settings) { /* @var \Bitrix\Sender\TriggerSettings $settings */ if (!$settings->isTypeStart()) { continue; } $trigger = \Bitrix\Sender\TriggerManager::getOnce($settings->getEndpoint()); if ($trigger) { $result = array_merge($result, $trigger->getPersonalizeList()); } } return $result; }