• Модуль: forum
  • Путь к файлу: ~/bitrix/modules/forum/classes/general/forum_new.php
  • Класс: CAllForumNew
  • Вызов: CAllForumNew::GetByIDEx
static function GetByIDEx($ID, $SITE_ID = false, $arAddParams = array())
{
	global $DB, $CACHE_MANAGER;
	$ID = intval($ID);
	if ($ID <= 0)
	{
		return false;
	}

	$SITE_ID = $SITE_ID ?? false;
	$key = (empty($SITE_ID) ? "EX" : "EX_PATH_".mb_strtoupper($SITE_ID));

	if (!isset($GLOBALS["FORUM_CACHE"]["FORUM"][$ID]))
	{
		$GLOBALS["FORUM_CACHE"]["FORUM"][$ID] = array();
	}

	if (!array_key_exists($key, $GLOBALS["FORUM_CACHE"]["FORUM"][$ID]))
	{
		$cache_id = "b_forum_".$ID.mb_strtolower($key);
		if (CACHED_b_forum !== false && $CACHE_MANAGER->Read(CACHED_b_forum, $cache_id, "b_forum"))
		{
			$GLOBALS["FORUM_CACHE"]["FORUM"][$ID][$key] = $CACHE_MANAGER->Get($cache_id);
		}
		else
		{
			$arSQL = array("select" => "", "join" => "");
			if (!empty($arAddParams["sNameTemplate"]))
			{
				$arSQL = array_merge_recursive(
					CForumUser::GetFormattedNameFieldsForSelect(array_merge(
						$arAddParams, array(
						"sUserTablePrefix" => "U_LAST.",
						"sForumUserTablePrefix" => "FU_LAST.",
						"sFieldName" => "LAST_POSTER_NAME_FRMT",
						"sUserIDFieldName" => "F.LAST_POSTER_ID"))),
					CForumUser::GetFormattedNameFieldsForSelect(array_merge(
						$arAddParams, array(
						"sUserTablePrefix" => "U_ABS_LAST.",
						"sForumUserTablePrefix" => "FU_ABS_LAST.",
						"sFieldName" => "ABS_LAST_POSTER_NAME_FRMT",
						"sUserIDFieldName" => "F.ABS_LAST_POSTER_ID"))));
				$arSQL["select"] = ",nt".implode(",nt", $arSQL["select"]);
				$arSQL["join"] = "n".implode("n", $arSQL["join"]);
			}
			$strSql = "SELECT F.ID, F.NAME, F.DESCRIPTION, F.ACTIVE, F.MODERATION, F.INDEXATION, F.DEDUPLICATION,
					F.ALLOW_MOVE_TOPIC, '' as LID, F.TOPICS, F.POSTS, F.LAST_POSTER_ID, F.LAST_POSTER_NAME,
					".$DB->DateToCharFunction("F.LAST_POST_DATE", "FULL")." as LAST_POST_DATE,
					F.LAST_MESSAGE_ID, FM.TOPIC_ID as TID, F.LAST_MESSAGE_ID as MID,
					F.POSTS_UNAPPROVED, F.ABS_LAST_POSTER_ID, F.ABS_LAST_POSTER_NAME,
					".$DB->DateToCharFunction("F.ABS_LAST_POST_DATE", "FULL")." as ABS_LAST_POST_DATE,
					F.ABS_LAST_MESSAGE_ID, FT.TITLE, F.SORT, '' as DIR, F.ORDER_BY, F.ORDER_DIRECTION,
					F.ALLOW_HTML, F.ALLOW_ANCHOR, F.ALLOW_BIU, F.ALLOW_TABLE, F.ALLOW_ALIGN, F.ALLOW_SIGNATURE,
					F.ALLOW_IMG, F.ALLOW_VIDEO, F.ALLOW_LIST, F.ALLOW_QUOTE, F.ALLOW_CODE, F.ALLOW_TOPIC_TITLED,
					F.ALLOW_FONT, F.ALLOW_SMILES, F.ALLOW_UPLOAD, F.EVENT1, F.EVENT2,
					F.EVENT3, F.ALLOW_NL2BR, ".(!$SITE_ID ? "''" : "FS.PATH2FORUM_MESSAGE")." as PATH2FORUM_MESSAGE, F.ALLOW_UPLOAD_EXT,
					F.FORUM_GROUP_ID, F.ASK_GUEST_EMAIL, F.USE_CAPTCHA, F.HTML, FT.HTML AS TOPIC_HTML, F.XML_ID".$arSQL["select"]."
				FROM b_forum F
					LEFT JOIN b_forum_group FG ON (F.FORUM_GROUP_ID = FG.ID) ".
					(!$SITE_ID ? "" : "
					LEFT JOIN b_forum2site FS ON (F.ID = FS.FORUM_ID AND FS.SITE_ID = '".$DB->ForSql($SITE_ID)."') ").
					$arSQL["join"]."
					LEFT JOIN b_forum_message FM ON (F.LAST_MESSAGE_ID = FM.ID)
					LEFT JOIN b_forum_topic FT ON (FM.TOPIC_ID = FT.ID)
				WHERE (F.ID=".$ID.")";
			$db_res = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); $db_res = new _CForumDBResult($db_res, $arAddParams); $GLOBALS["FORUM_CACHE"]["FORUM"][$ID][$key] = $db_res->Fetch(); if (CACHED_b_forum !== false) $CACHE_MANAGER->Set($cache_id, $GLOBALS["FORUM_CACHE"]["FORUM"][$ID][$key]); } } return $GLOBALS["FORUM_CACHE"]["FORUM"][$ID][$key]; }