$POST_RIGHT = $APPLICATION->GetGroupRight("sender"); if ($POST_RIGHT == "D") { $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); } $aTabs = array(array("DIV" => "edit1", "TAB" => GetMessage("sender_mailing_edit_tab_main"), "ICON" => "main_user_edit", "TITLE" => GetMessage("sender_mailing_edit_tab_main_title")), array("DIV" => "edit2", "TAB" => GetMessage("sender_mailing_edit_tab_grp"), "ICON" => "main_user_edit", "TITLE" => GetMessage("sender_mailing_edit_tab_grp_title"))); $tabControl = new CAdminTabControl("tabControl", $aTabs); $ID = intval($ID); // Id of the edited record $message = null; $bVarsFromForm = false; if ($REQUEST_METHOD == "POST" && ($save != "" || $apply != "") && $POST_RIGHT == "W" && check_bitrix_sessid()) { $arError = array(); $NAME = trim($NAME); $arFields = array("ACTIVE" => $ACTIVE != "Y" ? "N" : "Y", "TRACK_CLICK" => $TRACK_CLICK != "Y" ? "N" : "Y", "SORT" => $SORT, "IS_PUBLIC" => $IS_PUBLIC != "Y" ? "N" : "Y", "NAME" => $NAME, "DESCRIPTION" => $DESCRIPTION, "SITE_ID" => $SITE_ID); if ($ID > 0) { $mailingUpdateDb = \Bitrix\Sender\MailingTable::update($ID, $arFields); $res = $mailingUpdateDb->isSuccess(); if (!$res) { $arError = $mailingUpdateDb->getErrorMessages(); } } else { $mailingAddDb = \Bitrix\Sender\MailingTable::add($arFields); if ($mailingAddDb->isSuccess()) { $ID = $mailingAddDb->getId(); $res = $ID > 0; } else { $arError = $mailingAddDb->getErrorMessages(); } } $GROUP = array(); if (isset($GROUP_INCLUDE)) {
if (!($mailing = $mailingDb->fetch())) { require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"; ShowError(\Bitrix\Main\Localization\Loc::getMessage("SENDER_MAILING_TRIG_ERROR_NOT_FOUND")); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_admin.php"; exit; } $errorList = array(); $chainFieldsList = array(); if (in_array($_REQUEST["action"], array('activate', 'deactivate')) && check_bitrix_sessid() && $POST_RIGHT >= "W") { $fields = array(); if ($_REQUEST["action"] == 'activate') { $fields['ACTIVE'] = 'Y'; } else { $fields['ACTIVE'] = 'N'; } \Bitrix\Sender\MailingTable::update($ID, $fields); LocalRedirect('/bitrix/admin/sender_mailing_trig_edit.php?ID=' . $ID . '&lang=' . LANGUAGE_ID); } if ($_SERVER['REQUEST_METHOD'] == 'POST' && is_array($CHAIN) && ($save != "" || $apply != "") && $POST_RIGHT == "W" && check_bitrix_sessid()) { if (is_array($_POST)) { foreach ($_POST as $k => $v) { if (substr($k, 0, strlen('CHAIN_MESSAGE_')) == "CHAIN_MESSAGE_") { $chainMessage = explode('_', $k); $CHAIN[intval($chainMessage[2])][$chainMessage[1]] = $v; } } } $arTriggerSettings = $CHAIN; // sort chain $arTriggerSettingsTmp = array(); foreach ($arTriggerSettings as $item) {
$dataPrimary = array('ID' => $ID); switch ($_REQUEST['action']) { case "delete": @set_time_limit(0); $DB->StartTransaction(); $dataDeleteDb = \Bitrix\Sender\MailingTable::delete($dataPrimary); if (!$dataDeleteDb->isSuccess()) { $DB->Rollback(); $lAdmin->AddGroupError(GetMessage("rub_del_err"), $ID); } $DB->Commit(); break; case "activate": case "deactivate": $arFields["ACTIVE"] = $_REQUEST['action'] == "activate" ? "Y" : "N"; $dataUpdateDb = \Bitrix\Sender\MailingTable::update($dataPrimary, $arFields); if (!$dataUpdateDb->isSuccess()) { $LAST_ERROR = $dataUpdateDb->getErrorMessages(); $LAST_ERROR = $LAST_ERROR[0]; $lAdmin->AddGroupError(GetMessage("rub_save_error") . $LAST_ERROR, $ID); } break; } } } // runtime: RECIPIENT_CNT = include_cnt = group_cnt * (exclude_int) $arFilter['IS_TRIGGER'] = 'N'; $groupListDb = \Bitrix\Sender\MailingTable::getList(array('select' => array('ID', 'NAME', 'SORT', 'DATE_INSERT', 'ACTIVE', 'IS_PUBLIC', 'SITE_ID', 'RECIPIENT_CNT'), 'filter' => $arFilter, 'runtime' => array(new \Bitrix\Main\Entity\ExpressionField('RECIPIENT_CNT', 'SUM(%2$s*(%1$s))', array('MAILING_GROUP.INCLUDE', 'MAILING_GROUP.GROUP.ADDRESS_COUNT'))), 'order' => array($by => $order))); $rsData = new CAdminResult($groupListDb, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint(GetMessage("rub_nav")));
$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("<br>", $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";