/** * 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); }
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; }
/** * @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; }