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];
}