$arError[] = array("code" => "not_add", "title" => GetMessage("ERROR_ADD_GROUP")); } } } } if (!empty($arError) && ($e = $GLOBALS["APPLICATION"]->GetException())) { $message = new CAdminMessage($ID > 0 ? GetMessage("ERROR_EDIT_GROUP") : GetMessage("ERROR_ADD_GROUP"), $e); } $bInitVars = !empty($arError) ? true : false; if (strlen($save) > 0 && empty($arError)) { BXClearCache(true, "bitrix/forum/group/"); LocalRedirect("forum_group.php?lang=" . LANG . "&" . GetFilterParams("filter_", false)); } } if ($ID > 0) { $db_group = CForumGroup::GetList(array(), array("ID" => $ID)); $db_group->ExtractFields("str_", False); } if ($bInitVars) { $DB->InitTableVarsForEdit("b_forum_group", "", "str_"); } $sDocTitle = $ID > 0 ? str_replace("#ID#", $ID, GetMessage("FORUM_EDIT_RECORD")) : GetMessage("FORUM_NEW_RECORD"); $APPLICATION->SetTitle($sDocTitle); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"; /*********************************************************************/ /******************** BODY *****************************************/ /*********************************************************************/ ?> <?php $aMenu = array(array("TEXT" => GetMessage("FGN_2FLIST"), "LINK" => "/bitrix/admin/forum_group.php?lang=" . LANG . "&" . GetFilterParams("filter_", false), "ICON" => "btn_list"));
if (!is_array($arParams)) { $arParams = array(); } if (strlen($arParams["site_id"]) <= 0) { $arParams["site_id"] = "s1"; } //Forum creation if (CModule::IncludeModule('forum')) { $rsForums = CForumNew::GetList(); while ($arForum = $rsForums->Fetch()) { if ($arForum["NAME"] == GetMessage("DEMO_IBLOCK_ESTORE_BOOKS_FORUM_NAME")) { break; } } if (!$arForum) { $rsForumGroups = CForumGroup::GetList(); while ($arForumGroup = $rsForumGroups->Fetch()) { $arForumGroup = CForumGroup::GetLangByID($arForumGroup["ID"], LANGUAGE_ID); if ($arForumGroup["NAME"] === GetMessage("DEMO_IBLOCK_ESTORE_BOOKS_FORUM_GROUP_NAME")) { break; } } if (!$arForumGroup) { $arFields = array("SORT" => 150, "LANG" => array()); $rsLanguages = CLanguage::GetList($b = "sort", $o = "asc"); while ($arLang = $rsLanguages->Fetch()) { $file = dirname(__FILE__) . "/lang/" . $arLang["LANGUAGE_ID"] . "/books-files.php"; include $file; $arFields["LANG"][] = array("LID" => $arLang["LANGUAGE_ID"], "NAME" => GetMessage("DEMO_IBLOCK_ESTORE_BOOKS_FORUM_GROUP_NAME"), "DESCRIPTION" => ""); } $arForumGroup = array("FORUM_GROUP_ID" => CForumGroup::Add($arFields));
function Delete($ID) { global $DB; $ID = intVal($ID); $aMsg = array(); $res = CForumGroup::GetByIDEx($ID, LANGUAGE_ID); if (!$res) { return true; } $db_res = CForumGroup::GetList(array(), array("PARENT_ID" => $ID)); if ($db_res->Fetch()) { $aMsg[] = array("id" => 'FORUM_GROUP_GROUPS', "text" => str_replace(array("#GROUP_NAME#", "#GROUP_ID#"), array($res["NAME"], $ID), GetMessage("FG_ERROR_CONTENT_GROUP"))); } $db_res = CForumNew::GetList(array(), array("FORUM_GROUP_ID" => $ID)); if ($db_res->Fetch()) { $aMsg[] = array("id" => 'FORUM_GROUP_FORUMS', "text" => str_replace(array("#GROUP_NAME#", "#GROUP_ID#"), array($res["NAME"], $ID), GetMessage("FG_ERROR_CONTENT_FORUM"))); } if (!empty($aMsg)) { $e = new CAdminException(array_reverse($aMsg)); $GLOBALS["APPLICATION"]->ThrowException($e); return false; } if (CACHED_b_forum_group !== false) { $GLOBALS["CACHE_MANAGER"]->CleanDir("b_forum_group"); } $DB->Query("DELETE FROM b_forum_group_lang WHERE FORUM_GROUP_ID = " . $ID, true); $DB->Query("DELETE FROM b_forum_group WHERE ID = " . $ID, true); CAllForumGroup::Resort(); return true; }
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/forum/include.php"; ClearVars(); IncludeModuleLangFile(__FILE__); require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/forum/prolog.php"; $ID = intval($_REQUEST["ID"]); $arError = array(); $message = false; $arSysLangs = array(); $db_lang = CLanguage::GetList($by = "sort", $order = "desc", array("ACTIVE" => "Y")); while (($arLang = $db_lang->Fetch()) && $arLang) { $arSysLangs[$arLang["LID"]] = htmlspecialcharsbx($arLang["NAME"]); } $arGroups = CForumGroup::GetByLang(LANGUAGE_ID); array_unshift($arGroups, array("ID" => 0, "NAME" => "...")); $gid = $ID ?: $_GET["COPY_ID"]; if ($gid > 0 && ($group = CForumGroup::GetList(array(), array("ID" => $gid))->fetch()) && $group) { $fields = $group + array("LANG" => array()); foreach ($arSysLangs as $lid => $name) { $gLang = CForumGroup::GetLangByID($gid, $lid); $fields["LANG"][$lid] = array("LID" => $lid, "NAME" => $gLang["NAME"], "DESCRIPTION" => $gLang["DESCRIPTION"]); } } else { $fields = array("SORT" => 150, "PARENT_ID" => $_REQUEST["PARENT_ID"] > 0 ? $_REQUEST["PARENT_ID"] : 0, "LANG" => $arSysLangs); foreach ($arSysLangs as $lid => $name) { $fields["LANG"][$lid] = array("LID" => $lid, "NAME" => "", "DESCRIPTION" => ""); } } if ((array_key_exists("save", $_POST) || array_key_exists("apply", $_POST)) && $forumPermissions == "W" && check_bitrix_sessid()) { $fields["SORT"] = intval($_POST["SORT"]); $fields["PARENT_ID"] = intval($_REQUEST["FORUM_GROUP"]["PARENT_ID"]); foreach ($fields["LANG"] as $lid => $name) {
$DB->StartTransaction(); if (!CForumGroup::Delete($ID)) { $DB->Rollback(); if ($ex = $APPLICATION->GetException()) { $lAdmin->AddGroupError($ex->GetString(), $ID); } else { $lAdmin->AddGroupError(GetMessage("ERROR_DEL_GROUP"), $ID); } } $DB->Commit(); break; } } BXClearCache(true, "/" . LANG . "/forum/group/"); } $dbResultList = CForumGroup::GetList(array($by => $order), $arFilter); $dbResultList = new CAdminResult($dbResultList, $sTableID); $dbResultList->NavStart(); $lAdmin->NavText($dbResultList->GetNavPrint(GetMessage("GROUP_NAV"))); $lAdmin->AddHeaders(array(array("id" => "ID", "content" => GetMessage("GROUP_ID"), "sort" => "ID", "default" => true), array("id" => "NAME", "content" => GetMessage('FORUM_NAME'), "sort" => "", "default" => true), array("id" => "SORT", "content" => GetMessage("GROUP_SORT"), "sort" => "SORT", "default" => true, "align" => "right"))); $arVisibleColumns = $lAdmin->GetVisibleHeaderColumns(); /*******************************************************************/ while ($arGroup = $dbResultList->NavNext(true, "f_")) { $row =& $lAdmin->AddRow($f_ID, $arGroup); $row->AddField("ID", $f_ID); $row->AddInputField("SORT", array("size" => 5)); if (in_array("NAME", $arVisibleColumns)) { $arGroupLang = CForumGroup::GetLangByID($f_ID, LANG); $fieldShow = htmlspecialcharsbx($arGroupLang["NAME"]); $row->AddViewField("NAME", '<a title="' . GetMessage("FORUM_EDIT_DESCR") . '" href="' . "forum_group_edit.php?ID=" . $f_ID . "&lang=" . LANG . "&" . GetFilterParams("filter_") . '">' . $fieldShow . '</a>'); }
if ($ex = $APPLICATION->GetException()) { $lAdmin->AddGroupError($ex->GetString(), $ID); } else { $lAdmin->AddGroupError(GetMessage("ERROR_DEL_GROUP"), $ID); } } $DB->Commit(); break; } } } BXClearCache(true, "/" . LANG . "/forum/group/"); } } } $dbResultList = new CAdminResult(CForumGroup::GetList(array($by => $order), $arFilter), $sTableID); $dbResultList->NavStart(); $lAdmin->NavText($dbResultList->GetNavPrint(GetMessage("GROUP_NAV"))); $lAdmin->AddHeaders(array(array("id" => "ID", "content" => GetMessage("GROUP_ID"), "sort" => "ID", "default" => true), array("id" => "NAME", "content" => GetMessage('FORUM_NAME'), "sort" => "LEFT_MARGIN", "default" => true), array("id" => "SORT", "content" => GetMessage("GROUP_SORT"), "sort" => "SORT", "default" => true, "align" => "right"))); $arVisibleColumns = $lAdmin->GetVisibleHeaderColumns(); /*******************************************************************/ while ($group = $dbResultList->NavNext()) { $row =& $lAdmin->AddRow($group["ID"], $group); $row->AddField("ID", $group["ID"]); $row->AddInputField("SORT", array("size" => 5)); if (in_array("NAME", $arVisibleColumns)) { $arGroupLang = CForumGroup::GetLangByID($group["ID"], LANG); $fieldShow = ($by == "LEFT_MARGIN" ? str_pad("", $group["DEPTH_LEVEL"] - 1, ".") : "") . htmlspecialcharsbx($arGroupLang["NAME"]); $row->AddViewField("NAME", '<a title="' . GetMessage("FORUM_EDIT_DESCR") . '" href="forum_group_edit.php?ID=' . $group["ID"] . "&lang=" . LANG . "&" . GetFilterParams("filter_") . '">' . $fieldShow . '</a>'); } $arActions = array();