/** * Bitrix Framework * @package bitrix * @subpackage main * @copyright 2001-2013 Bitrix */ /** * Bitrix vars * @global CMain $APPLICATION * @global CUserTypeManager $USER_FIELD_MANAGER */ use Bitrix\Main; require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php"); define("HELP_FILE", "settings/userfield_edit.php"); IncludeModuleLangFile(__FILE__); $ID = intval($_REQUEST['ID'] ?? 0); $back_url = $_REQUEST["back_url"] ?? ''; $list_url = $_REQUEST["list_url"] ?? ''; $selfFolderUrl = $adminPage->getSelfFolderUrl(); if ($adminSidePanelHelper->isPublicFrame()) { $back_url = $adminSidePanelHelper->setDefaultQueryParams($back_url); } $RIGHTS = $USER_FIELD_MANAGER->GetRights(false, $ID); if($RIGHTS < "W") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); $aTabs = array( array( "DIV" => "edit1", "TAB" => GetMessage("USER_TYPE_TAB"), "ICON"=>"main_user_edit", "TITLE"=>GetMessage("USER_TYPE_TAB_TITLE"), ) ); /** @var CUserFieldEnum $obEnum */ $obEnum = null; if($ID>0) { if($arUserField = CUserTypeEntity::GetByID($ID)) { if($arType = $USER_FIELD_MANAGER->GetUserType($arUserField["USER_TYPE_ID"])) { if($arType["BASE_TYPE"] == "enum") { $obEnum = new CUserFieldEnum; $aTabs[] = array( "DIV" => "edit2", "TAB" => GetMessage("USER_TYPE_TAB2"), "ICON"=>"main_user_edit", "TITLE"=>GetMessage("USER_TYPE_TAB2_TITLE"), ); } } } } $tabControl = new CAdminTabControl("tabControl", $aTabs); $message = null; $bVarsFromForm = false; if($_SERVER["REQUEST_METHOD"] == "POST" && (!empty($_POST["save"]) || !empty($_POST["apply"])) && ($RIGHTS >= "W") && check_bitrix_sessid()) { $adminSidePanelHelper->decodeUriComponent(); $arFields = array( "ENTITY_ID" => $_REQUEST["ENTITY_ID"] ?? '', "FIELD_NAME" => $_REQUEST["FIELD_NAME"] ?? '', "USER_TYPE_ID" => $_REQUEST["USER_TYPE_ID"] ?? '', "XML_ID" => $_REQUEST["XML_ID"] ?? '', "SORT" => $_REQUEST["SORT"] ?? '', "MULTIPLE" => $_REQUEST["MULTIPLE"] ?? '', "MANDATORY" => $_REQUEST["MANDATORY"] ?? '', "SHOW_FILTER" => $_REQUEST["SHOW_FILTER"] ?? '', "SHOW_IN_LIST" => $_REQUEST["SHOW_IN_LIST"] ?? '', "EDIT_IN_LIST" => $_REQUEST["EDIT_IN_LIST"] ?? '', "IS_SEARCHABLE" => $_REQUEST["IS_SEARCHABLE"] ?? '', "SETTINGS" => $_REQUEST["SETTINGS"] ?? '', "EDIT_FORM_LABEL" => $_REQUEST["EDIT_FORM_LABEL"] ?? '', "LIST_COLUMN_LABEL" => $_REQUEST["LIST_COLUMN_LABEL"] ?? '', "LIST_FILTER_LABEL" => $_REQUEST["LIST_FILTER_LABEL"] ?? '', "ERROR_MESSAGE" => $_REQUEST["ERROR_MESSAGE"] ?? '', "HELP_MESSAGE" => $_REQUEST["HELP_MESSAGE"] ?? '', ); $obUserField = new CUserTypeEntity; if($ID > 0) { $res = $obUserField->Update($ID, $arFields); } else { $ID = $obUserField->Add($arFields); $res = ($ID > 0); } if(is_object($obEnum)) { $LIST = $_REQUEST["LIST"] ?? []; if(is_array($LIST)) { foreach($LIST as $id => $value) if(is_array($value)) $LIST[$id]["DEF"] = "N"; } if(isset($LIST["DEF"]) && is_array($LIST["DEF"])) { foreach($LIST["DEF"] as $value) if(is_array($LIST[$value])) $LIST[$value]["DEF"] = "Y"; unset($LIST["DEF"]); } $res = $obEnum->SetEnumValues($ID, $LIST); } if($res) { if ($adminSidePanelHelper->isAjaxRequest()) { $adminSidePanelHelper->sendSuccessResponse("base", array("ID" => $ID)); } else { if (!empty($_POST["apply"])) { $applyUrl = $selfFolderUrl."userfield_edit.php?ID=".$ID."&lang=".LANG."&back_url=". urlencode($back_url)."&".$tabControl->ActiveTabParam(); $applyUrl = $adminSidePanelHelper->setDefaultQueryParams($applyUrl); LocalRedirect($applyUrl); } elseif ($back_url) { $back_url = $adminSidePanelHelper->editUrlToPublicPage($back_url); $adminSidePanelHelper->localRedirect($back_url); LocalRedirect($back_url); } else { $redirectUrl = $selfFolderUrl."userfield_admin.php?lang=".LANG; $redirectUrl = $adminSidePanelHelper->editUrlToPublicPage($redirectUrl); $adminSidePanelHelper->localRedirect($redirectUrl); LocalRedirect($redirectUrl); } } } else { if($e = $APPLICATION->GetException()) { $message = new CAdminMessage(GetMessage("USER_TYPE_SAVE_ERROR"), $e); $adminSidePanelHelper->sendJsonErrorResponse($e->GetString()); } $bVarsFromForm = true; } } if($ID>0) { $arUserField = CUserTypeEntity::GetByID($ID); if(!$arUserField) $ID=0; } else { $arUserField = array( "ENTITY_ID" => $_GET["ENTITY_ID"] ?? "", "FIELD_NAME" => $_GET["FIELD_NAME"] ?? "UF_", "USER_TYPE_ID" => $_GET["USER_TYPE_ID"] ?? "", "XML_ID" => "", "SORT" => 100, "MULTIPLE" => "N", "MANDATORY" => "N", "SHOW_FILTER" => "N", "SHOW_IN_LIST" => "Y", "EDIT_IN_LIST" => "Y", "IS_SEARCHABLE" => "N", "SETTINGS" => array(), ); } if($bVarsFromForm) { $ENTITY_ID = htmlspecialcharsbx($_REQUEST["ENTITY_ID"] ?? ''); $FIELD_NAME = htmlspecialcharsbx($_REQUEST["FIELD_NAME"] ?? ''); $USER_TYPE_ID = htmlspecialcharsbx($_REQUEST["USER_TYPE_ID"] ?? ''); $XML_ID = htmlspecialcharsbx($_REQUEST["XML_ID"] ?? ''); $SORT = htmlspecialcharsbx($_REQUEST["SORT"] ?? ''); $MULTIPLE = htmlspecialcharsbx($_REQUEST["MULTIPLE"] ?? ''); $MANDATORY = htmlspecialcharsbx($_REQUEST["MANDATORY"] ?? ''); $SHOW_FILTER = htmlspecialcharsbx($_REQUEST["SHOW_FILTER"] ?? ''); $SHOW_IN_LIST = htmlspecialcharsbx($_REQUEST["SHOW_IN_LIST"] ?? ''); $EDIT_IN_LIST = htmlspecialcharsbx($_REQUEST["EDIT_IN_LIST"] ?? ''); $IS_SEARCHABLE = htmlspecialcharsbx($_REQUEST["IS_SEARCHABLE"] ?? ''); } else { $ENTITY_ID = htmlspecialcharsbx($arUserField["ENTITY_ID"]); $FIELD_NAME = htmlspecialcharsbx($arUserField["FIELD_NAME"]); $USER_TYPE_ID = htmlspecialcharsbx($arUserField["USER_TYPE_ID"]); $XML_ID = htmlspecialcharsbx($arUserField["XML_ID"]); $SORT = htmlspecialcharsbx($arUserField["SORT"]); $MULTIPLE = htmlspecialcharsbx($arUserField["MULTIPLE"]); $MANDATORY = htmlspecialcharsbx($arUserField["MANDATORY"]); $SHOW_FILTER = htmlspecialcharsbx($arUserField["SHOW_FILTER"]); $SHOW_IN_LIST = htmlspecialcharsbx($arUserField["SHOW_IN_LIST"]); $EDIT_IN_LIST = htmlspecialcharsbx($arUserField["EDIT_IN_LIST"]); $IS_SEARCHABLE = htmlspecialcharsbx($arUserField["IS_SEARCHABLE"]); } $arUserTypes = $USER_FIELD_MANAGER->GetUserType(); Main\Type\Collection::sortByColumn($arUserTypes, 'DESCRIPTION', '', null, true); $arUserType = $USER_FIELD_MANAGER->GetUserType($USER_TYPE_ID); if(!$arUserType) { $arUserType = reset($arUserTypes); } /** @var Main\UserField\Types\BaseType $userTypeClass */ $userTypeClass = $arUserType['CLASS_NAME']; if (!(is_a($userTypeClass, Main\UserField\Types\BaseType::class, true))) { $userTypeClass = Main\UserField\Types\BaseType::class; } $APPLICATION->SetTitle(($ID>0? GetMessage("USER_TYPE_EDIT_TITLE", array("#ID#"=>$ID)) : GetMessage("USER_TYPE_ADD_TITLE"))); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); // validate list_url if (!empty($list_url)) { $list_url = mb_substr($list_url, 0, 1) === '/' ? $list_url : '/'.$list_url; } $aMenu = array(); if (!$adminSidePanelHelper->isPublicFrame()) { $aMenu[] = array( "TEXT"=>GetMessage("USER_TYPE_LIST"), "TITLE"=>GetMessage("USER_TYPE_LIST_TITLE"), "LINK"=>!empty($list_url)? $list_url : "userfield_admin.php?lang=".LANG, "ICON"=>"btn_list", ); } if($ID>0) { $aMenu[] = array("SEPARATOR"=>"Y"); $aMenu[] = array( "TEXT"=>GetMessage("MAIN_ADD"), "TITLE"=>GetMessage("USER_TYPE_ADD"), "LINK"=>"userfield_edit.php?lang=".LANG, "ICON"=>"btn_new", ); $aMenu[] = array( "TEXT"=>GetMessage("MAIN_DELETE"), "TITLE"=>GetMessage("USER_TYPE_DELETE"), "LINK"=>"javascript:if(confirm('".GetMessage("USER_TYPE_DELETE_CONF")."'))window.location='userfield_admin.php?ID=".$ID."&action=delete&lang=".LANG."&".bitrix_sessid_get()."';", "ICON"=>"btn_delete", ); } $context = new CAdminContextMenu($aMenu); $context->Show(); ?> if($message) echo $message->Show(); ?> $formAction = $APPLICATION->GetCurPage(); $formAction = $adminSidePanelHelper->setDefaultQueryParams($formAction); ?>