示例#1
0
 /**
  * Instantiates an function object by function name.
  *
  * @param string $functionName Name of the function in the lower case.
  * @param mixed $data Additional data for function instance
  * @return FunctionBase
  */
 public static function createInstance($functionName, $data = null)
 {
     if ($functionName === "upper") {
         return new FunctionUpper($data);
     } elseif ($functionName === "lower") {
         return new FunctionLower($data);
     } elseif ($functionName === "translit") {
         return new FunctionTranslit($data);
     } elseif ($functionName === "concat") {
         return new FunctionConcat($data);
     } elseif ($functionName === "limit") {
         return new FunctionLimit($data);
     } elseif ($functionName === "contrast") {
         return new FunctionContrast($data);
     } elseif ($functionName === "min") {
         return new FunctionMin($data);
     } elseif ($functionName === "max") {
         return new FunctionMax($data);
     } elseif ($functionName === "distinct") {
         return new FunctionDistinct($data);
     } elseif (isset(self::$functionMap[$functionName])) {
         $functionClass = self::$functionMap[$functionName];
         return new $functionClass($data);
     } else {
         $event = new \Bitrix\Main\Event("iblock", "OnTemplateGetFunctionClass", array($functionName));
         $event->send();
         if ($event->getResults()) {
             foreach ($event->getResults() as $evenResult) {
                 if ($evenResult->getResultType() == \Bitrix\Main\EventResult::SUCCESS) {
                     $functionClass = $evenResult->getParameters();
                     if (is_string($functionClass) && class_exists($functionClass)) {
                         self::$functionMap[$functionName] = $functionClass;
                     }
                     break;
                 }
             }
         }
         if (isset(self::$functionMap[$functionName])) {
             $functionClass = self::$functionMap[$functionName];
             return new $functionClass($data);
         }
     }
     return new FunctionBase($data);
 }
示例#2
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;
 }
示例#3
0
 /**
  * @param $arMailParams
  * @return bool
  */
 public static function send($arMailParams)
 {
     $result = false;
     $event = new \Bitrix\Main\Event("main", "OnBeforeMailSend", array($arMailParams));
     $event->send();
     foreach ($event->getResults() as $eventResult) {
         if ($eventResult->getType() == \Bitrix\Main\EventResult::ERROR) {
             return false;
         }
         $arMailParams = array_merge($arMailParams, $eventResult->getParameters());
     }
     if (defined("ONLY_EMAIL") && $arMailParams['TO'] != ONLY_EMAIL) {
         $result = true;
     } else {
         $mail = static::createInstance($arMailParams);
         $mailResult = bxmail($mail->getTo(), $mail->getSubject(), $mail->getBody(), $mail->getHeaders(), $mail->getAdditionalParameters());
         if ($mailResult) {
             $result = true;
         }
     }
     return $result;
 }