Пример #1
0
 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;
 }
Пример #2
0
            }
            $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)) {
Пример #3
0
 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;
 }