GetGroupRight("forum"); if ($forumPermissions == "D") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); /******************************************************************** Simple text ********************************************************************/ CModule::IncludeModule("forum"); IncludeModuleLangFile(__FILE__); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/forum/prolog.php"); $aForumPermissions = \Bitrix\Forum\Permission::getTitledList(); $aForumPermissions = ["reference" => array_values($aForumPermissions), "reference_id" => array_keys($aForumPermissions)]; /******************************************************************** Input params ********************************************************************/ /***************** BASE ********************************************/ $arError = array(); $bVarsFromForm = false; $arFields = array(); $message = false; $ID = intval($_REQUEST["ID"]); $arSites = array(); $db_res = CSite::GetList(); while ($res = $db_res->GetNext()) $arSites[$res["LID"]] = $res; $arGroups = CForumGroup::GetByLang(LANGUAGE_ID); array_unshift($arGroups, array("ID" => 0, "NAME" => GetMessage("FE_ROOT_GROUP"))); /******************************************************************** /Input params ********************************************************************/ /******************************************************************** Action ********************************************************************/ if ($forumPermissions >= "W" && check_bitrix_sessid()) { if ($_SERVER['REQUEST_METHOD'] == "GET" && $_REQUEST["action"] === "delete") { if ($ID <= 0 || !CForumNew::CanUserUpdateForum($ID, $USER->GetUserGroupArray(), $USER->GetID()) || !\CForumNew::Delete($ID) ) { $arError[] = array( "code" => "not_right_for_edit", "title" => GetMessage("FE_NO_PERMS2UPDATE")); } } else if ($_SERVER['REQUEST_METHOD'] == "POST" && $_REQUEST["Update"] == "Y") { if ($ID > 0 && !CForumNew::CanUserUpdateForum($ID, $USER->GetUserGroupArray(), $USER->GetID())) { $arError[] = array( "code" => "not_right_for_edit", "title" => GetMessage("FE_NO_PERMS2UPDATE")); } elseif ($ID <= 0 && !CForumNew::CanUserAddForum($USER->GetUserGroupArray(), $USER->GetID())) { $arError[] = array( "code" => "not_right_for_add", "title" => GetMessage("FE_NO_PERMS2ADD")); } else { $arFields = Array( "NAME" => $_REQUEST["NAME"], "DESCRIPTION" => $_REQUEST["DESCRIPTION"], "FORUM_GROUP_ID" => $_REQUEST["FORUM_GROUP_ID"], "GROUP_ID" => $_REQUEST["GROUP"], "SITES" => array(), "PATH2FORUM_MESSAGE" => $_REQUEST["PATH2FORUM_MESSAGE"], "ACTIVE" => ($_REQUEST["ACTIVE"] == "Y" ? "Y" : "N"), "MODERATION" => ($_REQUEST["MODERATION"] == "Y" ? "Y" : "N"), "INDEXATION" => ($_REQUEST["INDEXATION"] == "Y" ? "Y" : "N"), "DEDUPLICATION" => ($_REQUEST["DEDUPLICATION"] == "Y" ? "Y" : "N"), "SORT" => (intval($_REQUEST["SORT"]) <= 0 ? 150 : $_REQUEST["SORT"]), "ORDER_BY" => $_REQUEST["ORDER_BY"], "ORDER_DIRECTION" => $_REQUEST["ORDER_DIRECTION"], "ASK_GUEST_EMAIL" => ($_REQUEST["ASK_GUEST_EMAIL"] == "Y" ? "Y" : "N"), "USE_CAPTCHA" => ($_REQUEST["USE_CAPTCHA"] == "Y" ? "Y" : "N"), "ALLOW_HTML" => ($_REQUEST["ALLOW_HTML"] == "Y" ? "Y" : "N"), "ALLOW_ANCHOR" => ($_REQUEST["ALLOW_ANCHOR"] == "Y" ? "Y" : "N"), "ALLOW_BIU" => ($_REQUEST["ALLOW_BIU"] == "Y" ? "Y" : "N"), "ALLOW_IMG" => ($_REQUEST["ALLOW_IMG"] == "Y" ? "Y" : "N"), "ALLOW_VIDEO" => ($_REQUEST["ALLOW_VIDEO"] == "Y" ? "Y" : "N"), "ALLOW_LIST" => ($_REQUEST["ALLOW_LIST"] == "Y" ? "Y" : "N"), "ALLOW_QUOTE" => ($_REQUEST["ALLOW_QUOTE"] == "Y" ? "Y" : "N"), "ALLOW_CODE" => ($_REQUEST["ALLOW_CODE"] == "Y" ? "Y" : "N"), "ALLOW_TABLE" => ($_REQUEST["ALLOW_TABLE"] == "Y" ? "Y" : "N"), "ALLOW_ALIGN" => ($_REQUEST["ALLOW_ALIGN"] == "Y" ? "Y" : "N"), "ALLOW_FONT" => ($_REQUEST["ALLOW_FONT"] == "Y" ? "Y" : "N"), "ALLOW_SMILES" => ($_REQUEST["ALLOW_SMILES"] == "Y" ? "Y" : "N"), "ALLOW_UPLOAD" => (in_array($_REQUEST["ALLOW_UPLOAD"], array("Y", "A", "F")) ? $_REQUEST["ALLOW_UPLOAD"] : "N"), "ALLOW_UPLOAD_EXT" => $_REQUEST["ALLOW_UPLOAD_EXT"], "ALLOW_TOPIC_TITLED" => ($_REQUEST["ALLOW_TOPIC_TITLED"] == "Y" ? "Y" : "N"), "ALLOW_NL2BR" => ($_REQUEST["ALLOW_NL2BR"] == "Y" ? "Y" : "N"), "ALLOW_MOVE_TOPIC" => ($_REQUEST["ALLOW_MOVE_TOPIC"] == "Y" ? "Y" : "N"), "ALLOW_SIGNATURE" => ($_REQUEST["ALLOW_SIGNATURE"] == "Y" ? "Y" : "N") ); $db_res = CSite::GetList(); while ($res = $db_res->Fetch()) { if ($_REQUEST["SITE"][$res["LID"]] == "Y") { $arFields["SITES"][$res["LID"]] = $_REQUEST["SITE_PATH"][$res["LID"]]; } } if (CModule::IncludeModule("statistic")) { $arFields["EVENT1"] = $_REQUEST["EVENT1"]; $arFields["EVENT2"] = $_REQUEST["EVENT2"]; $arFields["EVENT3"] = $_REQUEST["EVENT3"]; } if (!IsModuleInstalled("search")) unset($arFields["INDEXATION"]); $res = false; if ($ID > 0) { $res = CForumNew::Update($ID, $arFields, false); } else { $ID = CForumNew::Add($arFields); } } } if (!empty($arError) || ($e = $APPLICATION->GetException())) { $message = new CAdminMessage(($ID > 0 ? GetMessage("FE_ERROR_UPDATE") : GetMessage("FE_ERROR_ADD")), $e); $bVarsFromForm = true; } else { // Clear cache. $nameSpace = "bitrix"; $arComponentPath = array( $nameSpace.":forum.index", $nameSpace.":forum.rss", $nameSpace.":forum.search", $nameSpace.":forum.statistic", $nameSpace.":forum.topic.active", $nameSpace.":forum.topic.move", $nameSpace.":forum.topic.reviews", $nameSpace.":forum.topic.search", $nameSpace.":forum.user.list", $nameSpace.":forum.user.post"); foreach ($arComponentPath as $path) { $componentRelativePath = CComponentEngine::MakeComponentPath($path); $arComponentDescription = CComponentUtil::GetComponentDescr($path); if ($componentRelativePath == '' || !is_array($arComponentDescription)) continue; elseif (!array_key_exists("CACHE_PATH", $arComponentDescription)) continue; foreach ($arSites as $res) { $path = $componentRelativePath; if ($arComponentDescription["CACHE_PATH"] == "Y") $path = "/".$res["LID"].$path; if (!empty($path)) BXClearCache(true, $path); } } if ($_REQUEST["apply"] == '') LocalRedirect("forum_admin.php?lang=".LANG."&".GetFilterParams("filter_", false)); else LocalRedirect("forum_edit.php?lang=".LANG."&ID=".$ID); } } /******************************************************************** /Action ********************************************************************/ $APPLICATION->SetTitle(($ID > 0 ? str_replace("#ID#", $ID, GetMessage("FE_PAGE_TITLE1")) : GetMessage("FE_PAGE_TITLE2"))); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); /******************************************************************** Data ********************************************************************/ $arForum = array( "NAME" => "", "DESCRIPTION" => "", "FORUM_GROUP_ID" => "", "GROUP_ID" => "", "SITES" => array(), "PATH2FORUM_MESSAGE" => "/".SITE_DIR."/forum/message.php?FID=#FORUM_ID#&TID=#TOPIC_ID#&MID=#MESSAGE_ID#", "MODERATION" => "N", "ACTIVE" => "Y", "INDEXATION" => "Y", "DEDUPLICATION" => "Y", "SORT" => 150, "ORDER_BY" => "P", "ORDER_DIRECTION" => "DESC", "ASK_GUEST_EMAIL" => "N", "USE_CAPTCHA" => "Y", "ALLOW_HTML" => "N", "ALLOW_ANCHOR" => "Y", "ALLOW_BIU" => "Y", "ALLOW_IMG" => "Y", "ALLOW_VIDEO" => "Y", "ALLOW_LIST" => "Y", "ALLOW_QUOTE" => "Y", "ALLOW_CODE" => "Y", "ALLOW_TABLE" => "Y", "ALLOW_ALIGN" => "Y", "ALLOW_FONT" => "Y", "ALLOW_SMILES" => "Y", "ALLOW_UPLOAD" => "N", "ALLOW_TOPIC_TITLED" => "N", "ALLOW_NL2BR" => "N", "ALLOW_MOVE_TOPIC" => "N", "ALLOW_SIGNATURE" => "Y", "EVENT1" => "forum", "EVENT2" => "message", "EVENT3" => ""); if ($ID > 0) { $db_res = CForumNew::GetList(array(), array("ID" => $ID)); $arForum = $db_res->Fetch(); $arForum["SITES"] = CForumNew::GetSites($ID); $arForum["GROUP_ID"] = CForumNew::GetAccessPermissions($ID, "TWO"); } if ($bVarsFromForm) { $arForum = $arFields; } if (!function_exists("__recursive_htmlspecialcharsbx")) { function __recursive_htmlspecialcharsbx(&$res) { if (is_array($res)) { foreach ($res as $key => $val) $res[$key] = __recursive_htmlspecialcharsbx($val); } elseif (is_string($res)) { $res = htmlspecialcharsbx($res); } return $res; } } $res = $arForum; foreach ($res as $key => $val) { $arForum["~".$key] = $val; __recursive_htmlspecialcharsbx($arForum[$key]); } /******************************************************************** /Data ********************************************************************/ /******************************************************************** Show ********************************************************************/ $aMenu = array( array( "TEXT" => GetMessage("FEN_2FLIST"), "LINK" => "/bitrix/admin/forum_admin.php?lang=".LANG."&".GetFilterParams("filter_", false), "ICON" => "btn_list", ) ); if ($ID > 0 && $forumPermissions >= "W") { $aMenu[] = array("SEPARATOR" => "Y"); $aMenu[] = array( "TEXT" => GetMessage("FEN_NEW_FORUM"), "LINK" => "/bitrix/admin/forum_edit.php?lang=".LANG."&".GetFilterParams("filter_", false), "ICON" => "btn_new", ); $aMenu[] = array( "TEXT" => GetMessage("FEN_DELETE_FORUM"), "LINK" => "javascript:if(confirm('".GetMessage("FEN_DELETE_FORUM_CONFIRM")."')) window.location='/bitrix/admin/forum_edit.php?action=delete&ID=".$ID."&lang=".LANG."&".bitrix_sessid_get()."';", "ICON" => "btn_delete", ); } $aTabs = array( array("DIV" => "edit1", "TAB" => GetMessage("FEN_TAB_FORUM"), "ICON" => "forum", "TITLE" => GetMessage("FEN_TAB_FORUM_DESCR")), array("DIV" => "edit2", "TAB" => GetMessage("FEN_TAB_SETTINGS"), "ICON" => "forum", "TITLE" => GetMessage("FEN_TAB_SETTINGS_DESCR")), array("DIV" => "edit3", "TAB" => GetMessage("FEN_TAB_ACCESS"), "ICON"=>"forum", "TITLE" => GetMessage("FEN_TAB_ACCESS_DESCR"))); $context = new CAdminContextMenu($aMenu); $tabControl = new CAdminTabControl("tabControl", $aTabs); $context->Show(); if ($message) echo $message->Show(); ?>