/** * @global CUser $USER * @global CMain $APPLICATION */ require_once(__DIR__."/../include/prolog_admin_before.php"); require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/prolog.php"); define("HELP_FILE", "settings/sms_template_edit.php"); if(!$USER->CanDoOperation('edit_other_settings') && !$USER->CanDoOperation('view_other_settings')) $APPLICATION->AuthForm(Loc::getMessage("ACCESS_DENIED")); $isAdmin = $USER->CanDoOperation('edit_other_settings'); use Bitrix\Main; use Bitrix\Main\Localization\Loc; use Bitrix\Main\Text\HtmlFilter; use Bitrix\Main\Sms\TemplateTable; use Bitrix\Main\Mail\Internal\EventTypeTable; function fillTemplateFromPost(Main\Sms\Template $template) { static $formFields = ["EVENT_NAME", "ACTIVE", "SENDER", "RECEIVER", "MESSAGE", "LANGUAGE_ID"]; $request = Main\Context::getCurrent()->getRequest(); $fields = $template->entity->getFields(); //set values from the form foreach($formFields as $fieldName) { $value = $request->getPost($fieldName); if($fields[$fieldName] instanceof Main\ORM\Fields\BooleanField) { $value = ($value == "Y"); } $template->set($fieldName, $value); } if(is_array($request->getPost("LID"))) { foreach($request->getPost("LID") as $lid) { $site = Main\SiteTable::getEntity()->wakeUpObject($lid); $template->addToSites($site); } } } $aTabs = array( array("DIV" => "edit1", "TAB" => Loc::getMessage("sms_template_edit_tab"), "ICON" => "message_edit", "TITLE" => Loc::getMessage("sms_template_edit_tab_title")), ); $tabControl = new CAdminTabControl("tabControl", $aTabs); $request = Main\Context::getCurrent()->getRequest(); $errors = array(); $ID = intval($request["ID"]); $COPY_ID = intval($request["COPY_ID"]); $entity = TemplateTable::getEntity(); $fields = $entity->getFields(); if($request->isPost() && ($request["save"] <> '' || $request["apply"] <> '') && $isAdmin && check_bitrix_sessid()) { if(empty($request->getPost("LID"))) { $errors[] = GetMessage("sms_template_edit_err_site"); } if(empty($errors)) { if($ID > 0) { $template = $entity->wakeUpObject($ID); $template->removeAllSites(); } else { $template = $entity->createObject(); } //set values from the form fillTemplateFromPost($template); $result = $template->save(); if($result instanceof Main\ORM\Data\AddResult) { $ID = $result->getId(); } if($result->isSuccess()) { if($request["save"] <> '') LocalRedirect(BX_ROOT."/admin/sms_template_admin.php?lang=".LANGUAGE_ID); else LocalRedirect(BX_ROOT."/admin/sms_template_edit.php?lang=".LANGUAGE_ID."&ID=".$ID."&".$tabControl->ActiveTabParam()); } else { $errors = $result->getErrorMessages(); } } } if($ID > 0 || $COPY_ID > 0) { //existing $templateId = ($COPY_ID > 0? $COPY_ID : $ID); $template = TemplateTable::getById($templateId)->fetchObject(); $template->fillSites(); } else { //new $template = $entity->createObject(); $template->setEventName($request->getQuery("EVENT_NAME")); } if(!empty($errors)) { //set values from the form fillTemplateFromPost($template); } $APPLICATION->SetTitle(($ID > 0? Loc::getMessage("sms_template_edit_title") : Loc::getMessage("sms_template_edit_add"))); require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/prolog_admin_after.php"); $aMenu = array( array( "TEXT" => Loc::getMessage("sms_template_edit_list"), "LINK" => "sms_template_admin.php?lang=".LANGUAGE_ID, "TITLE" => Loc::getMessage("sms_template_edit_list_title"), "ICON" => "btn_list" ) ); if($ID > 0 && $isAdmin) { $aMenu[] = array("SEPARATOR"=>"Y"); $aMenu[] = array( "TEXT" => Loc::getMessage("sms_template_edit_add_btn"), "LINK" => "sms_template_edit.php?lang=".LANGUAGE_ID, "TITLE" => Loc::getMessage("sms_template_edit_add_btn_title"), "ICON" => "btn_new" ); $aMenu[] = array( "TEXT" => Loc::getMessage("sms_template_edit_copy"), "LINK" => "sms_template_edit.php?lang=".LANGUAGE_ID."©_ID=".$ID, "TITLE" => Loc::getMessage("sms_template_edit_copy_title"), "ICON" => "btn_copy" ); $aMenu[] = array( "TEXT" => Loc::getMessage("sms_template_edit_del"), "LINK" => "javascript:if(confirm('".CUtil::JSEscape(Loc::getMessage("sms_template_edit_del_conf"))."')) window.location='sms_template_admin.php?ID=".$ID."&lang=".LANGUAGE_ID."&".bitrix_sessid_get()."&action_button=delete';", "TITLE" => Loc::getMessage("sms_template_edit_del_title"), "ICON" => "btn_delete" ); } $context = new CAdminContextMenu($aMenu); $context->Show(); if(!empty($errors)) { CAdminMessage::ShowMessage(join("\n", $errors)); } ?>