Exemple #1
0
 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();
 }