%PDF- %PDF-
Direktori : /proc/self/root/home/bitrix/www/bitrix/components/bitrix/forum/ |
Current File : //proc/self/root/home/bitrix/www/bitrix/components/bitrix/forum/component.php |
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); if (!IsModuleInstalled("forum")): ShowError(GetMessage("F_NO_MODULE")); return 0; endif; /******************************************************************** Input params ********************************************************************/ /***************** BASE ********************************************/ /***************** URL *********************************************/ /***************** TAGS ********************************************/ /******************************************************************** /Input params ********************************************************************/ /******************************************************************** Default params ********************************************************************/ $componentPage = "index"; $arResult = array(); $arParams["SHOW_FORUM_USERS"] = ($arParams["SHOW_FORUM_USERS"] == "N" ? "N" : "Y"); $arDefaultUrlTemplates404 = array( "active" => "topic/new/", "forums" => "group#GID#/", "help" => "help/", "index" => "index.php", "list" => "forum#FID#/", "message" => "messages/forum#FID#/topic#TID#/message#MID#/", "message_small" => "forum#FID#/topic#TID#/message#MID#/", "message_appr" => "messages/approve/forum#FID#/topic#TID#/", "message_move" => "messages/move/forum#FID#/topic#TID#/message#MID#/", "message_send" => "user/#UID#/send/#TYPE#/", "pm_list" => "pm/folder#FID#/", "pm_edit" => "pm/folder#FID#/message#MID#/user#UID#/#mode#/", "pm_read" => "pm/folder#FID#/message#MID#/", "pm_search" => "pm/search/", "pm_folder" => "pm/folders/", "profile" => "user/#UID#/edit/", "profile_view" => "user/#UID#/", "read" => "forum#FID#/topic#TID#/", "rules" => "rules.php", "rss" => "rss/#TYPE#/#MODE#/#IID#/", "search" => "search/", "subscr_list" => "subscribe/", "topic_move" => "topic/move/forum#FID#/topic#TID#/", "topic_new" => "topic/add/forum#FID#/", "topic_search" => "topic/search/", "user_list" => "users/", "user_post" => "user/#UID#/post/#mode#/", ); $arDefaultVariableAliasesForPages = Array( "active" => array("PAGE_NAME" => "PAGE_NAME"), "forums" => array("PAGE_NAME" => "PAGE_NAME", "GID" => "GID"), "help" => array("PAGE_NAME" => "PAGE_NAME"), "index" => array("PAGE_NAME" => "PAGE_NAME"), "list" => array("PAGE_NAME" => "PAGE_NAME", "FID" => "FID"), "message" => array("PAGE_NAME" => "PAGE_NAME", "FID" => "FID", "TID" => "TID", "TITLE_SEO" => "TITLE_SEO", "MID" => "MID"), "message_small" => array("PAGE_NAME" => "PAGE_NAME", "FID" => "FID", "TID" => "TID", "TITLE_SEO" => "TITLE_SEO", "MID" => "MID"), "message_appr" => array("PAGE_NAME" => "PAGE_NAME", "FID" => "FID", "TID" => "TID"), "message_move" => array("PAGE_NAME" => "PAGE_NAME", "FID" => "FID", "TID" => "TID", "MID" => "MID"), "message_send" => array("PAGE_NAME" => "PAGE_NAME", "UID" => "UID", "TYPE" => "TYPE"), "pm_list" => array("PAGE_NAME" => "PAGE_NAME", "FID" => "FID"), "pm_edit" => array("PAGE_NAME" => "PAGE_NAME", "FID" => "FID", "MID" => "MID", "UID" => "UID", "mode" => "mode"), "pm_read" => array("PAGE_NAME" => "PAGE_NAME", "FID" => "FID", "MID" => "MID"), "pm_search" => array("PAGE_NAME" => "PAGE_NAME"), "pm_folder" => array("PAGE_NAME" => "PAGE_NAME"), "profile" => array("PAGE_NAME" => "PAGE_NAME", "UID" => "UID"), "profile_view" => array("PAGE_NAME" => "PAGE_NAME", "UID" => "UID"), "read" => array("PAGE_NAME" => "PAGE_NAME", "FID" => "FID", "TID" => "TID", "TITLE_SEO" => "TITLE_SEO"), "rules" => array("PAGE_NAME" => "PAGE_NAME"), "rss" => array("PAGE_NAME" => "PAGE_NAME", "IDD" => "IID", "TYPE" => "TYPE", "MODE" => "MODE"), "search" => array("PAGE_NAME" => "PAGE_NAME"), "subscr_list" => array("PAGE_NAME" => "PAGE_NAME"), "topic_move" => array("PAGE_NAME" => "PAGE_NAME", "FID" => "FID", "TID" => "TID"), "topic_new" => array("PAGE_NAME" => "PAGE_NAME", "FID" => "FID"), "topic_search" => array("PAGE_NAME" => "PAGE_NAME"), "user_list" => array("PAGE_NAME" => "PAGE_NAME"), "user_post" => array("PAGE_NAME" => "PAGE_NAME", "UID" => "UID", "mode" => "mode") ); $arDefaultVariableAliases404 = Array(); $arDefaultVariableAliases = Array( "ACTION" => "ACTION", "COUNT" => "COUNT", "FID" => "FID", "FORUM_RANGE" => "FORUM_RANGE", "GID" => "GID", // Group forums ID "IDD" => "IID", "MID" => "MID", "mode" => "mode", "MODE" => "MODE", "PAGE_NAME" => "PAGE_NAME", "TID" => "TID", "TITLE_SEO" => "TITLE_SEO", "TYPE" => "TYPE", "UID" => "UID"); $arComponentVariables = Array( "ACTION", "COUNT", "FID", "FORUM_RANGE", "GID", "IID", "MID", "mode", "MODE", "PAGE_NAME", "TID", "TITLE_SEO", "TYPE", "UID"); $arVariables = array(); /******************************************************************** Default params ********************************************************************/ $arAuthPageParams = array("login", "logout", "register", "forgot_password", "change_password", "auth"); if (($_REQUEST["auth"]=="yes" || $_REQUEST["register"] == "yes" || $_REQUEST["login"] == "yes") && $USER->IsAuthorized() || $_REQUEST["logout"] == "yes") { LocalRedirect($APPLICATION->GetCurPageParam("", $arAuthPageParams)); } elseif ($arParams["SHOW_AUTH_FORM"] != "N") { foreach ($arAuthPageParams as $key): if (is_set($_REQUEST, $key)): $this->IncludeComponentTemplate("auth"); return false; endif; endforeach; } /******************************************************************** Data ********************************************************************/ if ($arParams["SEF_MODE"] == "Y") { if (!function_exists("CheckPathParams")): function CheckPathParams($url, $params, $Aliases) { $params = (is_array($params) ? $params : array()); foreach ($params as $val): if ($val == "PAGE_NAME") { continue; } if (in_array("TITLE_SEO", $params) && ($val == "TID" || $val == "TITLE_SEO")) { if (strpos($url, "#TID#") === false && strpos($url, "#TITLE_SEO#") === false) { return false; } continue; } $val = (!empty($Aliases[$val]) ? $Aliases[$val] : $val); if (strpos($url, "#".$val."#") === false): return false; endif; endforeach; return true; } endif; $arUrlTemplates = CComponentEngine::MakeComponentUrlTemplates($arDefaultUrlTemplates404, $arParams["SEF_URL_TEMPLATES"]); $arVariableAliases = CComponentEngine::MakeComponentVariableAliases($arDefaultVariableAliases404, $arParams["VARIABLE_ALIASES"]); if ($arParams["CHECK_CORRECT_TEMPLATES"] != "N"): foreach ($arUrlTemplates as $url => $value) { if (!CheckPathParams($arUrlTemplates[$url], $arDefaultVariableAliasesForPages[$url], $arVariableAliases[$url])) $arUrlTemplates[$url] = $arDefaultUrlTemplates404[$url]; } endif; $componentPage = CComponentEngine::ParseComponentPath($arParams["SEF_FOLDER"], $arUrlTemplates, $arVariables); CComponentEngine::InitComponentVariables($componentPage, $arComponentVariables, $arVariableAliases, $arVariables); foreach ($arUrlTemplates as $url => $value) { if (empty($arUrlTemplates[$url])) { $arResult["URL_TEMPLATES_".strToUpper($url)] = $arParams["SEF_FOLDER"].$arDefaultUrlTemplates404[$url]; } elseif (substr($arUrlTemplates[$url], 0, 1) == "/" || substr($arUrlTemplates[$url], 0, 4) == "http") $arResult["URL_TEMPLATES_".strToUpper($url)] = $arUrlTemplates[$url]; else $arResult["URL_TEMPLATES_".strToUpper($url)] = $arParams["SEF_FOLDER"].$arUrlTemplates[$url]; } if ($arParams["SEF_MODE_NSEF"] == "Y" && (empty($componentPage) || $componentPage == "index") && !empty($_REQUEST["PAGE_NAME"])) { $arVariableAliases = CComponentEngine::MakeComponentVariableAliases($arDefaultVariableAliases, array()); CComponentEngine::InitComponentVariables(false, $arComponentVariables, $arVariableAliases, $arVariables); $componentPage = strToLower($arVariables["PAGE_NAME"]); } } else { $arVariableAliases = CComponentEngine::MakeComponentVariableAliases($arDefaultVariableAliases, $arParams["VARIABLE_ALIASES"]); CComponentEngine::InitComponentVariables(false, $arComponentVariables, $arVariableAliases, $arVariables); $componentPage = strToLower($arVariables["PAGE_NAME"]); foreach ($arDefaultVariableAliasesForPages as $url => $value) { $arURL = array("PAGE_NAME" => $url); unset($value["PAGE_NAME"]); foreach($value as $k => $v) { $arURL[$arVariableAliases[$k]] = "#".$v."#"; } $arResult["URL_TEMPLATES_".strToUpper($url)] = $APPLICATION->GetCurPageParam(str_replace("%23", "#", http_build_query($arURL)), array_merge($arVariableAliases, array("sessid", "result", "MESSAGE_TYPE", "PAGEN_".($GLOBALS["NavNum"] + 1)))); } } $bFounded = false; if (in_array($componentPage, array("message", "message_small"))): $componentPage = "read"; $bFounded = true; elseif (($componentPage == 'user_list') && ($arParams['SHOW_FORUM_USERS'] !== 'Y')): $componentPage = "index"; $bFounded = true; elseif (in_array($componentPage, array("forums"))): $componentPage = "index"; $bFounded = true; elseif ($componentPage && array_key_exists($componentPage, $arDefaultUrlTemplates404)): $bFounded = true; else: $componentPage = "index"; endif; $arVariables["PAGE_NAME"] = $componentPage; if (!$bFounded) { $folder404 = str_replace("\\", "/", $arParams["SEF_FOLDER"]); if ($folder404 != "/") $folder404 = "/".trim($folder404, "/ \t\n\r\0\x0B")."/"; if (substr($folder404, -1) == "/") $folder404 .= "index.php"; if($folder404 != $APPLICATION->GetCurPage(true)) CHTTP::SetStatus("404 Not Found"); } $arResult = array_merge( array( "SEF_MODE" => $arParams["SEF_MODE"], "SEF_FOLDER" => $arParams["SEF_FOLDER"], "URL_TEMPLATES" => $arUrlTemplates, "VARIABLES" => $arVariables, "ALIASES" => $arVariableAliases, "PAGE_NAME" => $arVariables["PAGE_NAME"], "FID" => ($arVariables["PAGE_NAME"] == "index") ? $arParams["FID"] : $arVariables["FID"], "GID" => $arVariables["GID"], "TID" => $arVariables["TID"], "TITLE_SEO" => $arVariables["TITLE_SEO"], "MID" => $arVariables["MID"], "UID" => $arVariables["UID"], "IID" => $arVariables["IID"], "ACTION" => $arVariables["ACTION"], "TYPE" => $arVariables["TYPE"], "mode" => $arVariables["mode"], "MODE" => $arVariables["MODE"], "SET_TITLE" => $arParams["SET_TITLE"], "SET_PAGE_PROPERTY" => $arParams["SET_PAGE_PROPERTY"], "CACHE_TIME" => $arParams["CACHE_TIME"], "CACHE_TYPE" => $arParams["CACHE_TYPE"], "SET_NAVIGATION" => $arParams["SET_NAVIGATION"], "DATE_FORMAT" => $arParams["DATE_FORMAT"], "DATE_TIME_FORMAT" => $arParams["DATE_TIME_FORMAT"], "NAME_TEMPLATE" => $arParams["NAME_TEMPLATE"], "FORUMS_PER_PAGE" => $arParams["FORUMS_PER_PAGE"], "TOPICS_PER_PAGE" => $arParams["TOPICS_PER_PAGE"], "MESSAGES_PER_PAGE" => $arParams["MESSAGES_PER_PAGE"], "PATH_TO_AUTH_FORM" => $arParams["PATH_TO_AUTH_FORM"], "SHOW_FORUM_ANOTHER_SITE" => $arParams["SHOW_FORUM_ANOTHER_SITE"], "SHOW_FORUMS_LIST" => $arParams["SHOW_FORUMS_LIST"], "HELP_CONTENT" => $arParams["HELP_CONTENT"], "RULES_CONTENT" => $arParams["RULES_CONTENT"], ), $arResult); // BASE $arParams["FID"] = (is_array($arParams["FID"]) ? $arParams["FID"] : array()); if ($arResult["TID"] <= 0 && strlen($arResult["TITLE_SEO"]) > 0) $arResult["TID"] = intval(strtok($arResult["TITLE_SEO"], "-")); //$arParams["TID"] - topic id //$arParams["MID"] - message id || message id (pm) //$arParams["UID"] - user id //$arParams["HELP_CONTENT"] //$arParams["RULES_CONTENT"] $arParams["TIME_INTERVAL_FOR_USER_STAT"] = intval($arParams["TIME_INTERVAL_FOR_USER_STAT"]); $arParams["TIME_INTERVAL_FOR_USER_STAT"] = ($arParams["TIME_INTERVAL_FOR_USER_STAT"] > 0 ? $arParams["TIME_INTERVAL_FOR_USER_STAT"] : 60) / 60; $arParams["USE_DESC_PAGE_TOPIC"] = ($arParams["USE_DESC_PAGE_TOPIC"] == "N" ? "N" : "Y"); $arParams["RSS_FID_RANGE"] = (!is_array($arParams["RSS_FID_RANGE"]) ? array() : $arParams["RSS_FID_RANGE"]); $arParams["RSS_FID_RANGE"] = (empty($arParams["RSS_FID_RANGE"]) && !empty($arParams["FID"]) ? $arParams["FID"] : array()); // // URL //$arParams["SEF_MODE"] //$arParams["SEF_FOLDER"] // ADDITIONAL // Serch page //$arParams["CHECK_DATES"] //$arParams["TAGS_SORT"] //$arParams["TAGS_INHERIT"] //$arParams["FONT_MAX"] //$arParams["FONT_MIN"] //$arParams["COLOR_NEW"] //$arParams["COLOR_OLD"] //$arParams["PERIOD_NEW_TAGS"] //$arParams["SHOW_CHAIN"] //$arParams["COLOR_TYPE"] //$arParams["WIDTH"] //$arParams["RESTART"] $arParams['AJAX_POST'] = ($arParams["AJAX_POST"] == "Y" ? "Y" : "N"); //$arParams["DATE_FORMAT"], //$arParams["DATE_TIME_FORMAT"], //$arParams["FORUMS_PER_PAGE"], //$arParams["TOPICS_PER_PAGE"], //$arParams["MESSAGES_PER_PAGE"], if (!isset($arParams["ATTACH_MODE"])) { if (intVal($arParams["IMAGE_SIZE"]) > 0) { $arParams["ATTACH_MODE"] = array("THUMB", "NAME"); $arParams["ATTACH_SIZE"] = $arParams["IMAGE_SIZE"]; } else { $arParams["ATTACH_MODE"] = array("NAME"); $arParams["ATTACH_SIZE"] = 0; } } $arParams["IMAGE_SIZE"] = intVal(intVal($arParams["IMAGE_SIZE"]) > 0 ? $arParams["IMAGE_SIZE"] : 500); $arParams["ATTACH_MODE"] = (is_array($arParams["ATTACH_MODE"]) ? $arParams["ATTACH_MODE"] : array("NAME")); $arParams["ATTACH_MODE"] = (!in_array("NAME", $arParams["ATTACH_MODE"]) && !in_array("THUMB", $arParams["ATTACH_MODE"]) ? array("NAME") : $arParams["ATTACH_MODE"]); $arParams["ATTACH_SIZE"] = intVal(intVal($arParams["ATTACH_SIZE"]) > 0 ? $arParams["ATTACH_SIZE"] : 90); if (!array_key_exists("USER_FIELDS", $arParams)) { $arParams["USER_FIELDS"] = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("FORUM_MESSAGE", 0, LANGUAGE_ID); $arParams["USER_FIELDS"] = (is_array($arParams["USER_FIELDS"]) ? array_keys($arParams["USER_FIELDS"]) : array()); } //$arParams["PATH_TO_AUTH_FORM"] $arParams["MINIMIZE_SQL"] = "N"; //$arParams["USER_PROPERTY"] - user property //$arParams["SHOW_FORUM_ANOTHER_SITE"] //$arParams["SHOW_FORUMS_LIST"] $arParams["SHOW_TAGS"] = (is_set($arParams["SHOW_TAGS"]) ? $arParams["SHOW_TAGS"] : "Y"); $arParams["SEND_MAIL"] = (in_array($arParams["SEND_MAIL"], array("A", "E", "U", "Y")) ? $arParams["SEND_MAIL"] : "E"); $arParams["SEND_ICQ"] = "A"; //$arParams["SHOW_FORUM_ANOTHER_SITE"] //$arParams["SHOW_FORUMS_LIST"] //$arParams["SHOW_USER_STATUS"] //$arParams["FORUMS_ANOTHER"] $arParams["SET_NAVIGATION"] = ($arParams["SET_NAVIGATION"] == "N" ? "N" : "Y"); // add items into chain item // $arParams["DISPLAY_PANEL"] = ($arParams["DISPLAY_PANEL"] == "Y" ? "Y" : "N"); // add buttons unto top panel if (!array_key_exists("CACHE_TIME_USER_STAT", $arParams)) $arParams["CACHE_TIME_USER_STAT"] = 60; $arParams["EDITOR_CODE_DEFAULT"] = ($arParams["EDITOR_CODE_DEFAULT"] == "Y" ? "Y" : "N"); $arParams["USE_RSS"] = ($arParams["USE_RSS"] == "N" ? "N" : "Y"); $arParams["AJAX_MODE"] = ($arParams["AJAX_MODE"] == "Y" ? "Y" : "N"); $arParams["AJAX_TYPE"] = (($arParams["AJAX_TYPE"] == "Y" && $arParams["AJAX_MODE"] == "N") ? "Y" : "N"); // CACHE & TITLE //$arParams["CACHE_TIME"] //$arParams["CACHE_TYPE"] $arParams["SET_TITLE"] = ($arParams["SET_TITLE"] == "N" ? "N" : "Y"); $arParams["SET_PAGE_PROPERTY"] = ($arParams["SET_PAGE_PROPERTY"] == "N" ? "N" : "Y"); $arParams["SET_DESCRIPTION"] = ($arParams["SET_DESCRIPTION"] == "Y" ? "Y" : "N"); $arParams["USE_NAME_TEMPLATE"] = ($arParams["USE_NAME_TEMPLATE"] == "Y" ? "Y" : "N"); if ($arParams["USE_NAME_TEMPLATE"] == "Y") { $arParams["NAME_TEMPLATE"] = str_replace( array("#NOBR#", "#/NOBR#"), "", !empty($arParams["NAME_TEMPLATE"]) ? $arParams["NAME_TEMPLATE"] : CSite::GetNameFormat()); } else { $arParams["NAME_TEMPLATE"] = false; } $arParams["SHOW_ADD_MENU"] = ($arParams["TMPLT_SHOW_BOTTOM"] == "SET_BE_READ" ? "N" : "Y"); if (!$GLOBALS["USER"]->IsAuthorized() && COption::GetOptionString("forum", "USE_COOKIE", "N") == "N") { $arParams["SHOW_ADD_MENU"] = "N"; $arParams["TMPLT_SHOW_BOTTOM"] = ""; } $arParams["VOTE_CHANNEL_ID"] = intVal($arParams["VOTE_CHANNEL_ID"]); $arParams["SHOW_VOTE"] = ($arParams["SHOW_VOTE"] == "Y" && $arParams["VOTE_CHANNEL_ID"] > 0 && IsModuleInstalled("vote") ? "Y" : "N"); if ($arParams["SHOW_VOTE"] == "Y"): $arParams["VOTE_GROUP_ID"] = (!is_array($arParams["VOTE_GROUP_ID"]) || empty($arParams["VOTE_GROUP_ID"]) ? array() : $arParams["VOTE_GROUP_ID"]); $arParams["VOTE_TEMPLATE"] = (strlen(trim($arParams["VOTE_TEMPLATE"])) > 0 ? trim($arParams["VOTE_TEMPLATE"]) : "light"); endif; $arParams["RATING_ID"] = $arParams["RATING_ID"]; // activation rating CRatingsComponentsMain::GetShowRating($arParams); if ($arVariables["PAGE_NAME"] !== "rss" && CModule::IncludeModule("forum")) ForumSetLastVisit((strpos($arVariables["PAGE_NAME"], "pm_") !== 0 ? $arResult["FID"] : 0), $arResult["TID"]); $this->IncludeComponentTemplate($arVariables["PAGE_NAME"]); ?>