function Update($ID, $arFields) { global $DB; if (!$this->CheckFields($arFields, $ID)) { return false; } if (is_set($arFields, "ACTIVE") && $arFields["ACTIVE"] != "Y") { $arFields["ACTIVE"] = "N"; } $arLID = array(); if (is_set($arFields, "LID")) { if (is_array($arFields["LID"])) { $arLID = $arFields["LID"]; } else { $arLID[] = $arFields["LID"]; } $arFields["LID"] = false; foreach ($arLID as $v) { $arFields["LID"] = $v; } } $arATTACHMENT_FILE = array(); if (is_set($arFields, "ATTACHMENT_FILE")) { if (is_array($arFields["ATTACHMENT_FILE"])) { $arATTACHMENT_FILE = $arFields["ATTACHMENT_FILE"]; } else { $arATTACHMENT_FILE[] = $arFields["ATTACHMENT_FILE"]; } $arATTACHMENT_FILE_tmp = array(); foreach ($arATTACHMENT_FILE as $v) { $v = intval($v); $arATTACHMENT_FILE_tmp[] = $v; } $arATTACHMENT_FILE = $arATTACHMENT_FILE_tmp; unset($arFields['ATTACHMENT_FILE']); } if (array_key_exists('NAME', $arFields)) { unset($arFields['NAME']); } $ID = intval($ID); Mail\Internal\EventMessageTable::update($ID, $arFields); if (count($arLID) > 0) { Mail\Internal\EventMessageSiteTable::delete($ID); $resultDb = \Bitrix\Main\SiteTable::getList(array('select' => array('LID'), 'filter' => array('LID' => $arLID))); while ($arResultSite = $resultDb->fetch()) { Mail\Internal\EventMessageSiteTable::add(array('EVENT_MESSAGE_ID' => $ID, 'SITE_ID' => $arResultSite['LID'])); } } if (count($arATTACHMENT_FILE) > 0) { foreach ($arATTACHMENT_FILE as $file_id) { Mail\Internal\EventMessageAttachmentTable::add(array('EVENT_MESSAGE_ID' => $ID, 'FILE_ID' => $file_id)); } } return true; }
/** * @param */ protected function setMailBody() { $isHtml = $this->eventMessageFields["BODY_TYPE"] == "html"; // replace placeholders in body $message = $this->eventMessageFields["MESSAGE_PHP"]; if (empty($message) && !empty($this->eventMessageFields["MESSAGE"])) { $message = MailInternal\EventMessageTable::replaceTemplateToPhp($this->eventMessageFields["MESSAGE"]); if ($this->eventMessageFields["ID"] > 0) { MailInternal\EventMessageTable::update($this->eventMessageFields["ID"], array('MESSAGE_PHP' => $message)); } } if (!empty($this->eventMessageFields['SITE_TEMPLATE_ID'])) { $siteTemplateId = $this->eventMessageFields['SITE_TEMPLATE_ID']; } else { $siteTemplateId = null; } $themeCompiler = EventMessageThemeCompiler::createInstance($siteTemplateId, $message, $isHtml); if (empty($siteTemplateId)) { $siteTemplateId = ".default"; } // set context variables for components $themeCompiler->setSiteTemplateId($siteTemplateId); $themeCompiler->setSiteId($this->siteId); $themeCompiler->setLanguageId($this->languageId); Loc::setCurrentLang($themeCompiler->getLanguageId()); // set values of $arParams, used by components $eventSiteFields = $this->eventSiteFields; if ($isHtml) { foreach ($eventSiteFields as $fieldKey => $fieldValue) { if (strpos($fieldValue, "<") === false) { $eventSiteFields[$fieldKey] = nl2br($fieldValue); } } } $themeCompiler->setParams($eventSiteFields); // eval site template and body $themeCompiler->execute(); // get eval result of site template and body $message = $themeCompiler->getResult(); $this->mailBody = $message; Loc::setCurrentLang(null); EventMessageThemeCompiler::unsetInstance(); }