/** * Bitrix Framework * @package bitrix * @subpackage main * @copyright 2001-2013 Bitrix */ /** * @global CMain $APPLICATION * @global CUser $USER * @global CDatabase $DB */ use Bitrix\Main\Mail\Internal\EventTypeTable; require_once(__DIR__."/../include/prolog_admin_before.php"); require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/prolog.php"); define("HELP_FILE", "settings/mail_events/messagetype_edit.php"); if(!$USER->CanDoOperation('edit_other_settings') && !$USER->CanDoOperation('view_other_settings')) $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); $isAdmin = $USER->CanDoOperation('edit_other_settings'); IncludeModuleLangFile(__FILE__); $arFields = array(); $arParams = array("ACTION" => "ADD"); $strError = ""; $bVarsFromForm = false; $message = null; $arLangs = array(); $db_res = CLanguage::GetList(); if ($db_res && $res = $db_res->GetNext()) { do { $arParams["LANGUAGE"][$res["LID"]] = $res; $arLangs[$res["LID"]] = true; } while ($res = $db_res->GetNext()); } if($_SERVER["REQUEST_METHOD"] == "POST" && (!empty($_POST['save']) || !empty($_POST['apply'])) && $isAdmin && check_bitrix_sessid()) { $_POST["EVENT_NAME"] = trim($_POST["EVENT_NAME"]); $res = array(); $DB->StartTransaction(); if (!empty($_POST["EVENT_NAME"])) { $db_res = CEventType::GetListEx(array(), array("EVENT_NAME" => $_POST["EVENT_NAME"]), array("type" => "full")); if(!($db_res) || !($res = $db_res->Fetch())) { $res["EVENT_NAME"] = $_POST["EVENT_NAME"]; } } foreach ($arParams["LANGUAGE"] as $idLang => $arLang) { $arType = array( "ID" => $_POST["FIELDS"][$idLang]["ID"] ?? '', "SORT" => $_POST["FIELDS"][$idLang]["SORT"] ?? '', "NAME" => $_POST["FIELDS"][$idLang]["NAME"] ?? '', "DESCRIPTION" => $_POST["FIELDS"][$idLang]["DESCRIPTION"] ?? '', "LID" => $idLang, "EVENT_NAME" => $res["EVENT_NAME"] ?? '', "EVENT_TYPE" => (isset($_POST["EVENT_TYPE"]) && $_POST["EVENT_TYPE"] == EventTypeTable::TYPE_SMS? EventTypeTable::TYPE_SMS : EventTypeTable::TYPE_EMAIL), ); $admList = new CAdminList("dummy"); if ($admList->IsUpdated($idLang) && isset($_REQUEST[$idLang]) && $_REQUEST[$idLang] == "Y") { if ((intval($arType["ID"]) > 0 && (!CEventType::Update(array("ID" => $arType["ID"]), $arType))) || ((intval($arType["ID"]) <= 0) && !CEventType::Add($arType))) { $bVarsFromForm = true; } } if (!isset($_REQUEST[$idLang]) || $_REQUEST[$idLang] != "Y") { unset($arLangs[$idLang]); if (intval($arType["ID"]) > 0) { if (!CEventType::Delete(array("ID" => $arType["ID"]))) $bVarsFromForm = true; } } if ($bVarsFromForm) break; } if (empty($arLangs)) { $arMsg = array(); if ($res["EVENT_NAME"] == '') $arMsg[] = array("id" => "EVENT_NAME_EMPTY", "text" => GetMessage("EVENT_NAME_EMPTY")); $arMsg[] = array("id" => "LID_EMPTY", "text" => GetMessage("ERROR_LANG_EMPTY")); $e = new CAdminException($arMsg); $APPLICATION->ThrowException($e); $bVarsFromForm = true; } if ($bVarsFromForm) { $DB->Rollback(); } else { $DB->Commit(); if (!empty($_POST["save"])) LocalRedirect(BX_ROOT."/admin/type_admin.php?lang=".LANGUAGE_ID); else LocalRedirect(BX_ROOT."/admin/type_edit.php?EVENT_NAME=".$res["EVENT_NAME"]."&lang=".LANGUAGE_ID); } } if ($bVarsFromForm && ($e = $APPLICATION->GetException())) $message = new CAdminMessage(GetMessage("MAIN_ERROR_SAVING"), $e); $arParams["EVENT_NAME"] = $_REQUEST["EVENT_NAME"] ?? ''; if ($arParams["EVENT_NAME"] <> '') { $db_res = CEventType::GetListEx(array(), array("EVENT_NAME" => $arParams["EVENT_NAME"]), array("type" => "full")); if ($db_res && ($res = $db_res->Fetch())) { $arParams["DATA"] = $res; if (is_array($res["TYPE"])) { foreach ($res["TYPE"] as $r) $arParams["DATA"][$r["LID"]] = $r; } $arParams["ACTION"] = "UPDATE"; $arParams["DATA_OLD"] = $arParams["DATA"]; } } $aTabs = array(array("DIV" => "edit1", "TAB" => GetMessage("EVENT_NAME_TITLE"), "ICON" => "mail", "TITLE" => GetMessage("EVENT_NAME_DESCR1"))); if ($arParams["ACTION"] == "UPDATE" && $arParams["DATA"]["EVENT_TYPE"] == EventTypeTable::TYPE_EMAIL) $aTabs[] = array("DIV" => "edit2", "TAB" => GetMessage("TEMPLATES_TITLE"), "ICON" => "mail", "TITLE" => GetMessage("TEMPLATES_DESCR")); $tabControl = new CAdminTabControl("tabControl", $aTabs); if ($bVarsFromForm) { foreach ($_REQUEST["FIELDS"] as $k => $v) { $arParams["DATA"][$k] = $_REQUEST["FIELDS"][$k]; } } if ($arParams["ACTION"]=="ADD") { $APPLICATION->SetTitle(GetMessage("NEW_TITLE")); $context = new CAdminContextMenu( array( array( "TEXT" => GetMessage("RECORD_LIST"), "LINK" => "/bitrix/admin/type_admin.php?lang=".LANGUAGE_ID, "TITLE" => GetMessage("RECORD_LIST_TITLE"), "ICON" => "btn_list" ), ) ); } else { $APPLICATION->SetTitle(str_replace("#TYPE#", $arParams["EVENT_NAME"], GetMessage("EDIT_TITLE"))); $context = new CAdminContextMenu( array( array( "TEXT" => GetMessage("RECORD_LIST"), "LINK" => "/bitrix/admin/type_admin.php?lang=".LANGUAGE_ID, "TITLE" => GetMessage("RECORD_LIST_TITLE"), "ICON" => "btn_list" ), array( "TEXT" => GetMessage("MAIN_NEW_RECORD"), "LINK" => "/bitrix/admin/type_edit.php?lang=".LANGUAGE_ID, "TITLE" => GetMessage("MAIN_NEW_RECORD_TITLE"), "ICON" => "btn_new" ), array( "TEXT" => GetMessage("MAIN_DELETE_RECORD"), "LINK" => "javascript:if(confirm('".GetMessage("MAIN_DELETE_RECORD_CONF")."')) window.location='/bitrix/admin/type_admin.php?ID=".urlencode($arParams["EVENT_NAME"])."&lang=".LANGUAGE_ID."&".bitrix_sessid_get()."&action=delete';", "TITLE" => GetMessage("MAIN_DELETE_RECORD_TITLE"), "ICON" => "btn_delete" ), ) ); } require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/prolog_admin_after.php"); $context->Show(); if($message) echo $message->Show(); $arParams["EVENT_NAME"] = htmlspecialcharsbx($arParams["EVENT_NAME"]); ?>