GetGroupRight("sender"); if($POST_RIGHT<"W") { require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); $message = new CAdminMessage(GetMessage("sender_wizard_access_denied")); $APPLICATION->SetTitle(GetMessage("sender_wizard_title")); echo $message->Show(); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php"); } $APPLICATION->SetTitle(GetMessage("sender_wizard_title")); $MAILING_ID = intval($_REQUEST['MAILING_ID']); $MAILING_CHAIN_ID = intval($_REQUEST['MAILING_CHAIN_ID']); $arError = array(); $isPostedFormProcessed = false; if(empty($step)) $step='mailing'; if(empty($ACTIVE) || $ACTIVE!='Y') $ACTIVE = 'N'; $title_postfix = ''; if($step=='mailing') { IncludeModuleLangFile(dirname(__FILE__)."/mailing_edit.php"); if($REQUEST_METHOD == "POST" && !$isPostedFormProcessed && check_bitrix_sessid()) { $NAME = trim($NAME); if($MAILING_TYPE == 'NEW') { $arFields = Array( "ACTIVE" => ($ACTIVE <> "Y"? "N":"Y"), "SORT" => $SORT, "IS_PUBLIC" => ($IS_PUBLIC <> "Y"? "N":"Y"), "NAME" => $NAME, "DESCRIPTION" => $DESCRIPTION, "SITE_ID" => $SITE_ID, ); $mailingAddDb = \Bitrix\Sender\MailingTable::add($arFields); if($mailingAddDb->isSuccess()) { $MAILING_ID = $mailingAddDb->getId(); } else { $arError = $mailingAddDb->getErrorMessages(); } } else { $mailing = \Bitrix\Sender\MailingTable::getRowById($MAILING_ID); if(!$mailing) $arError[] = GetMessage("sender_wizard_step_mailing_existed_not_selected"); } if(empty($arError)) { if($MAILING_TYPE == 'NEW') $step = 'mailing_group'; else $step = 'chain'; $isPostedFormProcessed = true; LocalRedirect('sender_mailing_wizard.php?IS_TRIGGER=N&step='.$step.'&MAILING_ID='.$MAILING_ID."&lang=".LANGUAGE_ID); } else { $DB->InitTableVarsForEdit("b_sender_mailing", "", "str_"); } } else { $str_ACTIVE = 'Y'; $str_SORT = 100; } $arMailingList = array(); $groupDb = \Bitrix\Sender\MailingTable::getList(array( 'select' => array('NAME', 'ID'), 'filter' => array('IS_TRIGGER' => 'N'), 'order' => array('NAME' => 'ASC'), )); while($arMailing = $groupDb->fetch()) { $arMailingList[] = $arMailing; } if(empty($arMailingList)) $MAILING_TYPE = 'NEW'; } if($step=='group') { IncludeModuleLangFile(dirname(__FILE__)."/group_edit.php"); if(!isset($group_create) && $REQUEST_METHOD == "POST" && !$isPostedFormProcessed && check_bitrix_sessid()) { $res = false; $NAME = trim($NAME); if(isset($popup_create_group) && $popup_create_group == 'Y') { require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_js.php"); $NAME = $APPLICATION->ConvertCharset($NAME, "UTF-8", LANG_CHARSET); $DESCRIPTION = $APPLICATION->ConvertCharset($DESCRIPTION, "UTF-8", LANG_CHARSET); } $arFields = Array( "ACTIVE" => ($ACTIVE <> "Y"? "N":"Y"), "NAME" => $NAME, "SORT" => $SORT, "DESCRIPTION" => $DESCRIPTION, ); if(is_array($CONNECTOR_SETTING) && count($CONNECTOR_SETTING)>0) { $groupAddDb = \Bitrix\Sender\GroupTable::add($arFields); if($groupAddDb->isSuccess()) { $ID = $groupAddDb->getId(); $res = ($ID > 0); } else { $arError = $groupAddDb->getErrorMessages(); } } else { $arError[] = GetMessage('sender_group_conn_not_selected'); } if($res) { if(is_array($CONNECTOR_SETTING)) { $groupConnectorsDataCount = 0; \Bitrix\Sender\GroupConnectorTable::delete(array('GROUP_ID' => $ID)); $arEndpointList = \Bitrix\Sender\ConnectorManager::getEndpointFromFields($CONNECTOR_SETTING); foreach ($arEndpointList as $endpoint) { $connector = \Bitrix\Sender\ConnectorManager::getConnector($endpoint); if ($connector) { $connector->setFieldValues($endpoint['FIELDS']); $connectorDataCount = $connector->getDataCount(); $arGroupConnectorAdd = array( 'GROUP_ID' => $ID, 'NAME' => $connector->getName(), 'ENDPOINT' => $endpoint, 'ADDRESS_COUNT' => $connectorDataCount ); $groupConnectorAddDb = \Bitrix\Sender\GroupConnectorTable::add($arGroupConnectorAdd); if($groupConnectorAddDb->isSuccess()) { $groupConnectorsDataCount += $connectorDataCount; } } } \Bitrix\Sender\GroupTable::update($ID, array('ADDRESS_COUNT' => $groupConnectorsDataCount)); } } if(empty($arError)) { $step = 'mailing_group'; $isPostedFormProcessed = true; if(isset($popup_create_group) && $popup_create_group == 'Y') { ?> InitTableVarsForEdit("b_sender_group", "", "str_"); } } else { $str_ACTIVE = 'Y'; $str_SORT = 100; } if(isset($CONNECTOR_SETTING)) $arConnectorSettings = $CONNECTOR_SETTING; else $arConnectorSettings = array(); if(count($endpointList)>0) { $arConnectorSettings = \Bitrix\Sender\ConnectorManager::getFieldsFromEndpoint($endpointList); } $arAvailableConnectors = array(); $arExistedConnectors = array(); $arConnector = \Bitrix\Sender\ConnectorManager::getConnectorList(); /** @var \Bitrix\Sender\Connector $connector */ foreach($arConnector as $connector) { if(array_key_exists($connector->getModuleId(), $arConnectorSettings)) $arFieldsValues = $arConnectorSettings[$connector->getModuleId()][$connector->getCode()]; else $arFieldsValues = array(); $connector->setFieldPrefix('CONNECTOR_SETTING'); $connectorIdCount = 0; $arAvailableConnectors[$connector->getId()] = array( 'ID' => $connector->getId(), 'NAME' => $connector->getName(), 'FORM' => $connector->getForm().'' ); if( array_key_exists($connector->getModuleId(), $arConnectorSettings) ) { if( array_key_exists($connector->getCode(), $arConnectorSettings[$connector->getModuleId()]) ) { $connectorIdCount = 0; $arFieldsValuesConnector = $arConnectorSettings[$connector->getModuleId()][$connector->getCode()]; foreach($arFieldsValuesConnector as $fieldValues) { $connector->setFieldFormName('post_form'); $connector->setFieldValues($fieldValues); $arExistedConnectors[] = array( 'ID' => $connector->getId(), 'NAME' => $connector->getName(), 'FORM' => str_replace('%CONNECTOR_NUM%', $connectorIdCount, $connector->getForm().''), 'COUNT' => $connector->getDataCount() ); $connectorIdCount++; } } } } } if($step=='mailing_group') { IncludeModuleLangFile(dirname(__FILE__)."/mailing_edit.php"); if($REQUEST_METHOD == "POST" && !$isPostedFormProcessed && check_bitrix_sessid()) { $ID = $MAILING_ID; $GROUP = array(); if(isset($GROUP_INCLUDE)) { $GROUP_INCLUDE = explode(',', $GROUP_INCLUDE); trimArr($GROUP_INCLUDE); } else $GROUP_INCLUDE = array(); if(isset($GROUP_EXCLUDE)) { $GROUP_EXCLUDE = explode(',', $GROUP_EXCLUDE); trimArr($GROUP_EXCLUDE); } else $GROUP_EXCLUDE = array(); if($MAILING_ID>0) { foreach($GROUP_INCLUDE as $groupId) { if (is_numeric($groupId)) { $GROUP[] = array('MAILING_ID' => $ID, 'GROUP_ID' => $groupId, 'INCLUDE' => true); } } foreach($GROUP_EXCLUDE as $groupId) { if (is_numeric($groupId)) { $GROUP[] = array('MAILING_ID' => $ID, 'GROUP_ID' => $groupId, 'INCLUDE' => false); } } \Bitrix\Sender\MailingGroupTable::delete(array('MAILING_ID' => $ID)); foreach($GROUP as $arGroup) { \Bitrix\Sender\MailingGroupTable::add($arGroup); } } if(empty($arError)) { $step = 'chain'; $isPostedFormProcessed = true; LocalRedirect('sender_mailing_wizard.php?IS_TRIGGER=N&step='.$step.'&MAILING_ID='.$MAILING_ID."&lang=".LANGUAGE_ID); } } else { $ID = $MAILING_ID; $GROUP_EXCLUDE = $GROUP_INCLUDE = array(); $groupDb = \Bitrix\Sender\MailingGroupTable::getList(array( 'select' => array('ID' => 'GROUP_ID', 'INCLUDE'), 'filter' => array('MAILING_ID' => $ID), )); while($arGroup = $groupDb->fetch()) { if($arGroup['INCLUDE']) $GROUP_INCLUDE[] = $arGroup['ID']; else $GROUP_EXCLUDE[] = $arGroup['ID']; } } $GROUP_EXIST = array(); $groupDb = \Bitrix\Sender\GroupTable::getList(array( 'select' => array('NAME', 'ID', 'ADDRESS_COUNT'), 'filter' => array('ACTIVE' => 'Y'), 'order' => array('SORT' => 'ASC', 'NAME' => 'ASC'), )); while($arGroup = $groupDb->fetch()) { $GROUP_EXIST[] = $arGroup; } } if($step=='chain') { IncludeModuleLangFile(dirname(__FILE__)."/mailing_chain_edit.php"); $isUserHavePhpAccess = $USER->CanDoOperation('edit_php'); if($REQUEST_METHOD == "POST" && !$isPostedFormProcessed && check_bitrix_sessid()) { if($MAILING_CHAIN_ID <= 0) { if(!$isUserHavePhpAccess) { $MESSAGE_OLD = false; if($ID>0) { $mailingChainOld = \Bitrix\Sender\MailingChainTable::getRowById(array('ID' => $ID)); if($mailingChainOld) { $MESSAGE_OLD = $mailingChainOld['MESSAGE']; } } $MESSAGE = CMain::ProcessLPA($MESSAGE, $MESSAGE_OLD); } $arFields = Array( "MAILING_ID" => $MAILING_ID, "SUBJECT" => $SUBJECT, "EMAIL_FROM" => $EMAIL_FROM, "MESSAGE" => $MESSAGE, "TEMPLATE_TYPE" => $TEMPLATE_TYPE, "TEMPLATE_ID" => $TEMPLATE_ID, "PRIORITY" => $PRIORITY, "LINK_PARAMS" => $LINK_PARAMS, "CREATED_BY" => $USER->GetID(), "REITERATE" => "N", "AUTO_SEND_TIME" => "", "DAYS_OF_WEEK" => "", "DAYS_OF_MONTH" => "", "TIMES_OF_DAY" => "", ); if(empty($MESSAGE) && isset($IS_TEMPLATE_LIST_SHOWN) && $IS_TEMPLATE_LIST_SHOWN=='Y') { $arError[] = GetMessage("sender_chain_edit_error_select_template"); } if(empty($arError)) { $mailingAddDb = \Bitrix\Sender\MailingChainTable::add($arFields); if ($mailingAddDb->isSuccess()) { $ID = $mailingAddDb->getId(); \Bitrix\Sender\MailingChainTable::initPosting($ID); $res = ($ID > 0); $MAILING_CHAIN_ID = $ID; } else { $arError = $mailingAddDb->getErrorMessages(); } } } if(empty($arError)) { if($MAILING_CHAIN_ID > 0) { //add or delete files //Delete checked if(is_array($FILES_del)) { $FILE_ID_tmp = array(); foreach($FILES_del as $file=>$fileMarkDel) { $file = intval($file); if($file>0) $FILE_ID_tmp[] = $file; } if(count($FILE_ID_tmp)>0) { $deleteFileDb = \Bitrix\Sender\MailingAttachmentTable::getList(array( 'select' => array('FILE_ID', 'CHAIN_ID'), 'filter' => array('CHAIN_ID' => $ID, 'FILE_ID' => $FILE_ID_tmp), )); while($arDeleteFile = $deleteFileDb->fetch()) { if(!empty($arDeleteFile)) { CFile::Delete($arDeleteFile["FILE_ID"]); \Bitrix\Sender\MailingAttachmentTable::delete($arDeleteFile); } } } } //Brandnew $arFiles = array(); if(is_array($_FILES["NEW_FILE"])) { foreach($_FILES["NEW_FILE"] as $attribute=>$files) { if(is_array($files)) foreach($files as $index=>$value) $arFiles[$index][$attribute]=$value; } foreach($arFiles as $index => $file) { if(!is_uploaded_file($file["tmp_name"])) unset($arFiles[$index]); } } //New from media library and file structure if(array_key_exists("NEW_FILE", $_POST) && is_array($_POST["NEW_FILE"])) { foreach($_POST["NEW_FILE"] as $index=>$value) { if (is_string($value) && preg_match("/^https?:\\/\\//", $value)) { $arFiles[$index] = CFile::MakeFileArray($value); } else { if(is_array($value)) { $filePath = $value['tmp_name']; } else { $filePath = $value; } $isCheckedSuccess = false; $io = CBXVirtualIo::GetInstance(); $docRoot = \Bitrix\Main\Application::getDocumentRoot(); if(strpos($filePath, CTempFile::GetAbsoluteRoot()) === 0) { $absPath = $filePath; } elseif(strpos($io->CombinePath($docRoot, $filePath), CTempFile::GetAbsoluteRoot()) === 0) { $absPath = $io->CombinePath($docRoot, $filePath); } else { $absPath = $io->CombinePath(CTempFile::GetAbsoluteRoot(), $filePath); } if ($io->ValidatePathString($absPath) && $io->FileExists($absPath)) { $docRoot = $io->CombinePath($docRoot, '/'); $relPath = str_replace($docRoot, '', $absPath); $perm = $APPLICATION->GetFileAccessPermission($relPath); if ($perm >= "W") { $isCheckedSuccess = true; } } if($isCheckedSuccess) { $arFiles[$index] = CFile::MakeFileArray($io->GetPhysicalName($absPath)); if(is_array($value)) { $arFiles[$index]['name'] = $value['name']; } } } } } foreach($arFiles as $file) { if(strlen($file["name"])>0 and intval($file["size"])>0) { $resultInsertAttachFile = false; $file["MODULE_ID"] = "main"; $fid = intval(CFile::SaveFile($file, "sender", true)); if($fid > 0) { $resultAddAttachFile = \Bitrix\Sender\MailingAttachmentTable::add(array( 'CHAIN_ID' => $ID, 'FILE_ID' => $fid )); $resultInsertAttachFile = $resultAddAttachFile->isSuccess(); } if(!$resultInsertAttachFile) break; } } if(isset($TEMPLATE_ACTION_SAVE) && $TEMPLATE_ACTION_SAVE == 'Y') { if(!empty($TEMPLATE_ACTION_SAVE_NAME) && !empty($MESSAGE)) { $CONTENT = $MESSAGE; $useBlockEditor = false; if($TEMPLATE_TYPE && $TEMPLATE_ID) { \Bitrix\Main\Loader::includeModule('fileman'); $chainTemplate = \Bitrix\Sender\Preset\Template::getById($TEMPLATE_TYPE, $TEMPLATE_ID); if($chainTemplate && $chainTemplate['HTML']) { $CONTENT = \Bitrix\Fileman\Block\Editor::fillTemplateBySliceContent($chainTemplate['HTML'], $CONTENT); if($CONTENT) { $useBlockEditor = true; } } } $addResult = \Bitrix\Sender\TemplateTable::add(array( 'NAME' => $TEMPLATE_ACTION_SAVE_NAME, 'CONTENT' => $CONTENT )); if($useBlockEditor && $addResult->isSuccess()) { \Bitrix\Sender\MailingChainTable::update( array('ID' => $ID), array('TEMPLATE_TYPE' => 'USER', 'TEMPLATE_ID' => $addResult->getId()) ); } } } } $step = 'chain_send_type'; $isPostedFormProcessed = true; LocalRedirect('sender_mailing_wizard.php?IS_TRIGGER=N&step='.$step.'&MAILING_ID='.$MAILING_ID."&MAILING_CHAIN_ID=".$MAILING_CHAIN_ID."&lang=".LANGUAGE_ID); } else { $DB->InitTableVarsForEdit("b_sender_mailing_chain", "", "str_"); } } else { } $arMailngChainAttachment = array(); if($ID>0) { $attachmentFileDb = \Bitrix\Sender\MailingAttachmentTable::getList(array( 'select' => array('FILE_ID'), 'filter' => array('CHAIN_ID' => $ID), )); while($ar = $attachmentFileDb->fetch()) { if($arFileFetch = CFile::GetFileArray($ar['FILE_ID'])) $arMailngChainAttachment[] = $arFileFetch; } } \Bitrix\Sender\PostingRecipientTable::setPersonalizeList(\Bitrix\Sender\MailingTable::getPersonalizeList($MAILING_ID)); $templateListHtml = \Bitrix\Sender\Preset\Template::getTemplateListHtml('tabControl_layout'); } if($step=='chain_send_type') { $ID = $MAILING_CHAIN_ID; IncludeModuleLangFile(dirname(__FILE__)."/mailing_chain_edit.php"); $DAYS_OF_WEEK = empty($DAYS_OF_WEEK) ? '' : implode(',',$DAYS_OF_WEEK); if($REQUEST_METHOD == "POST" && !$isPostedFormProcessed && check_bitrix_sessid()) { $arFields = Array( "REITERATE" => "N", "AUTO_SEND_TIME" => "", "DAYS_OF_WEEK" => "", "DAYS_OF_MONTH" => "", "TIMES_OF_DAY" => "", ); switch($SEND_TYPE) { case 'MANUAL': break; case 'TIME': if(empty($AUTO_SEND_TIME)) $arError[] = GetMessage("sender_chain_edit_error_empty_time"); if(!\Bitrix\Main\Type\DateTime::isCorrect($AUTO_SEND_TIME)) $arError[] = GetMessage("sender_chain_edit_error_time_format"); else $arFields["AUTO_SEND_TIME"] = new \Bitrix\Main\Type\DateTime($AUTO_SEND_TIME); if ($ID <= 0) { $arFields["STATUS"] = \Bitrix\Sender\MailingChainTable::STATUS_SEND; } else { $arMailingChainOld = \Bitrix\Sender\MailingChainTable::getRowById(array('ID' => $ID)); if($arMailingChainOld['STATUS'] == \Bitrix\Sender\MailingChainTable::STATUS_NEW) $arFields["STATUS"] = \Bitrix\Sender\MailingChainTable::STATUS_SEND; } break; case 'REITERATE': if(empty($DAYS_OF_WEEK) && empty($DAYS_OF_MONTH)) $arError[] = GetMessage("sender_chain_edit_error_reiterate"); $arFields["REITERATE"] = "Y"; $arFields["DAYS_OF_WEEK"] = $DAYS_OF_WEEK; $arFields["DAYS_OF_MONTH"] = $DAYS_OF_MONTH; $arFields["TIMES_OF_DAY"] = $TIMES_OF_DAY; if ($ID <= 0) { $arFields["STATUS"] = \Bitrix\Sender\MailingChainTable::STATUS_WAIT; } else { $arMailingChainOld = \Bitrix\Sender\MailingChainTable::getRowById(array('ID' => $ID)); if($arMailingChainOld['STATUS'] == \Bitrix\Sender\MailingChainTable::STATUS_NEW) $arFields["STATUS"] = \Bitrix\Sender\MailingChainTable::STATUS_SEND; } $arFields["STATUS"] = \Bitrix\Sender\MailingChainTable::STATUS_WAIT; break; default: $arError[] = GetMessage("sender_chain_edit_error_send_type"); } if(empty($arError)) { $mailingUpdateDb = \Bitrix\Sender\MailingChainTable::update(array('ID' => $ID), $arFields); if ($mailingUpdateDb->isSuccess()) { //\Bitrix\Sender\MailingChainTable::initPosting($ID); } else { $arError = $mailingUpdateDb->getErrorMessages(); } } if(empty($arError)) { LocalRedirect('sender_mailing_chain_edit.php?MAILING_ID='.$MAILING_ID.'&ID='.$ID.'&lang='.LANGUAGE_ID); } else { $DB->InitTableVarsForEdit("b_sender_mailing_chain", "", "str_"); if(!isset($SEND_TYPE)) { if ($str_REITERATE == 'Y') $SEND_TYPE = 'REITERATE'; elseif (!empty($str_AUTO_SEND_TIME)) $SEND_TYPE = 'TIME'; elseif ($ID > 0) $SEND_TYPE = 'MANUAL'; } } } else { $statistics = \Bitrix\Sender\Stat\Statistics::create()->filter('mailingId', $MAILING_ID); $recommendedSendTime = $statistics->getRecommendedSendTime(); } } if($step=='trig_mailing') { IncludeModuleLangFile(dirname(__FILE__)."/mailing_edit.php"); if($REQUEST_METHOD == "POST" && !$isPostedFormProcessed && check_bitrix_sessid()) { $arError = array(); $arFields = array( 'IS_TRIGGER' => 'Y', //"ACTIVE" => ($ACTIVE <> "Y"? "N":"Y"), "SORT" => $SORT, "IS_PUBLIC" => "N", "NAME" => $NAME, "DESCRIPTION" => $DESCRIPTION, "SITE_ID" => $SITE_ID, "EMAIL_FROM" => $EMAIL_FROM, ); if(empty($EMAIL_FROM)) $arError[] = GetMessage("sender_chain_edit_error_email_from"); $chainList = array(); if(empty($arError) && !empty($MAILING_TEMPLATE_CODE)) { $presetMailingList = \Bitrix\Sender\MailingTable::getPresetMailingList(array('CODE' => $MAILING_TEMPLATE_CODE)); $presetMailing = current($presetMailingList); if(!empty($presetMailing)) { $arFields['TRIGGER_FIELDS'] = array( 'START' => $presetMailing['TRIGGER']['START']['ENDPOINT'], 'END' => $presetMailing['TRIGGER']['END']['ENDPOINT'], ); foreach($presetMailing['CHAIN'] as $chain) { $chain['EMAIL_FROM'] = $EMAIL_FROM; $chain['CREATED_BY'] = $USER->GetID(); $chainList[] = $chain; } $result = new \Bitrix\Main\Entity\Result; \Bitrix\Sender\MailingTable::checkFieldsChain($result, null, $chainList); if(!$result->isSuccess()) $arError = array_merge($arError, $result->getErrorMessages()); } else { $arError[] = GetMessage("sender_chain_edit_error_tmpl_no_found").' "' . $MAILING_TEMPLATE_CODE . '".'; } } if(empty($arError)) { if($MAILING_ID > 0) { $updateDb = \Bitrix\Sender\MailingTable::update($MAILING_ID, $arFields); if(!$updateDb->isSuccess()) $arError = array_merge($arError, $updateDb->getErrorMessages()); } else { $arFields['ACTIVE'] = 'N'; $addDb = \Bitrix\Sender\MailingTable::add($arFields); if($addDb->isSuccess()) { $MAILING_ID = $addDb->getId(); $resultDb = \Bitrix\Sender\MailingTable::updateChain($MAILING_ID, $chainList); $resultDb->isSuccess(); } else $arError = array_merge($arError, $addDb->getErrorMessages()); } } if(empty($arError)) { $isPostedFormProcessed = true; { $step = 'trig_mailing_group'; LocalRedirect('sender_mailing_wizard.php?IS_TRIGGER=Y&step='.$step.'&MAILING_ID='.$MAILING_ID."&lang=".LANGUAGE_ID); } } else { } $DB->InitTableVarsForEdit("b_sender_mailing", "", "str_"); } else { ClearVars(); $str_SORT = 100; $rubric = new CDBResult(\Bitrix\Sender\MailingTable::getById($MAILING_ID)); if(!$rubric->ExtractFields("str_")) { $DB->InitTableVarsForEdit("b_sender_mailing", "", "str_"); } } if($MAILING_ID > 0) { $title_postfix = '_exist'; } $presetMailingList = \Bitrix\Sender\MailingTable::getPresetMailingList(); } if($step=='trig_mailing_group') { IncludeModuleLangFile(dirname(__FILE__)."/mailing_edit.php"); $triggerList = \Bitrix\Sender\TriggerManager::getList(); $triggerListForJS = array(); foreach($triggerList as $trigger) { foreach(array('START', 'END') as $type) { if($type == 'END' && !$trigger->canBeTarget()) { continue; } $triggerListForJS[$type][$trigger->getId()] = \Bitrix\Sender\TriggerSettings::getArrayFromTrigger($trigger); $triggerListForJS[$type][$trigger->getId()]['ID'] = $trigger->getId(); $triggerListForJS[$type][$trigger->getId()]['NAME'] = $trigger->getName(); $trigger->setFieldFormName('post_form'); $trigger->setFieldPrefix('ENDPOINT['.$type.'][FIELDS]'); $triggerListForJS[$type][$trigger->getId()]['FORM'] = $trigger->getForm(); } } $triggerListExists = array('START' => null, 'END' => null); $mailing = \Bitrix\Sender\MailingTable::getRowById($MAILING_ID); if(!empty($mailing['TRIGGER_FIELDS'])) { foreach($triggerListExists as $type => $value) { if(!is_array($mailing['TRIGGER_FIELDS'][$type])) continue; $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)) $message = new CAdminMessage(implode("
", $arError)); \CJSCore::Init(array("sender_admin")); $title = GetMessage("sender_wizard_step_".$step.$title_postfix."_title"); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); ?>