function Fetch()
{
global $DB;
$arFields = array();
if($res = parent::Fetch())
{
if (COption::GetOptionString("forum", "MESSAGE_HTML", "N") == "Y" ||
COption::GetOptionString("forum", "FILTER", "Y") == "Y")
{
$res["POST_MESSAGE_HTML"] = trim($res["POST_MESSAGE_HTML"]);
$res["POST_MESSAGE_FILTER"] = trim($res["POST_MESSAGE_FILTER"]);
if (empty($res["POST_MESSAGE_HTML"]) && COption::GetOptionString("forum", "MESSAGE_HTML", "N") == "Y" ||
empty($res["POST_MESSAGE_FILTER"]) && COption::GetOptionString("forum", "FILTER", "Y") == "Y")
{
$arForum = CForumNew::GetByID($res["FORUM_ID"]);
if ((COption::GetOptionString("forum", "FILTER", "Y") == "Y") && empty($res["POST_MESSAGE_FILTER"]))
{
$arFields["POST_MESSAGE_FILTER"] = CFilterUnquotableWords::Filter($res["POST_MESSAGE"]);
$arFields["POST_MESSAGE_FILTER"] = (empty($arFields["POST_MESSAGE_FILTER"]) ? "*" : $arFields["POST_MESSAGE_FILTER"]);
}
if (COption::GetOptionString("forum", "MESSAGE_HTML", "N") == "Y" && empty($res["POST_MESSAGE_HTML"]))
{
/* Info about one file is saved in old table field ATTACH_IMG */
$arFiles = false;
if (intval($res["ATTACH_IMG"]) > 0)
{
$arFiles = array();
$db_files = CForumFiles::GetList(array("MESSAGE_ID" => "ASC"), array("MESSAGE_ID" => $res["ID"]));
if ($db_files && $res_file = $db_files->Fetch())
{
do
{
$res_file["SRC"] = CFile::GetFileSRC($res);
$arFiles[$res_file["ID"]] = $res_file;
} while ($res_file = $db_files->Fetch());
}
}
$parser = new forumTextParser(LANGUAGE_ID);
$allow = forumTextParser::GetFeatures($arForum);
$allow['SMILES'] = ($res["USE_SMILES"] == "Y" ? $allow['SMILES'] : "N");
$POST_MESSAGE_HTML = (is_set($arFields, "POST_MESSAGE_FILTER") ? $arFields["POST_MESSAGE_FILTER"] : $res["POST_MESSAGE"]);
$arFields["POST_MESSAGE_HTML"] = $parser->convert($POST_MESSAGE_HTML, $allow, "html", $arFiles);
}
$strUpdate = $DB->PrepareUpdate("b_forum_message", $arFields);
$strSql = "UPDATE b_forum_message SET ".$strUpdate." WHERE ID = ".intval($res["ID"]);
if ($DB->QueryBind($strSql, $arFields, false, "File: ".__FILE__."
Line: ".__LINE__))
{
foreach ($arFields as $key => $val)
$res[$key] = $val;
}
}
}
if (COption::GetOptionString("forum", "FILTER", "Y") == "Y")
{
if (is_set($res, "HTML") || is_set($res, "FM_HTML"))
{
$arr = @unserialize(is_set($res, "HTML") ? $res["HTML"] : $res["FM_HTML"], ["allowed_classes" => false]);
if (empty($arr) || !is_array($arr))
{
$arr = array(
"AUTHOR_NAME" => $res["AUTHOR_NAME"],
"AUTHOR_EMAIL" => $res["AUTHOR_EMAIL"],
"EDITOR_NAME" => $res["EDITOR_NAME"],
"EDITOR_EMAIL" => $res["EDITOR_EMAIL"],
"EDIT_REASON" => $res["EDIT_REASON"]);
foreach ($arr as $key => $val)
{
if (!empty($val)):
$val = CFilterUnquotableWords::Filter($val);
$arr[$key] = (empty($val) ? "*" : $val);
else:
$arr[$key] = '';
endif;
}
$arFields = array("HTML" => serialize($arr));
$strUpdate = $DB->PrepareUpdate("b_forum_message", $arFields);
$strSql = "UPDATE b_forum_message SET ".$strUpdate." WHERE ID = ".intval($res["ID"]);
$DB->QueryBind($strSql, $arFields, false, "File: ".__FILE__."
Line: ".__LINE__);
}
foreach ($arr as $key => $val)
{
$res["~".$key] = $res[$key];
$res["".$key] = $val;
}
}
if (!empty($res["FT_HTML"]))
{
$arr = @unserialize($res["FT_HTML"], ["allowed_classes" => false]);
if (is_array($arr) && !empty($arr["TITLE"]))
{
foreach ($arr as $key => $val)
{
$res["~FT_".$key] = $res["FT_".$key];
$res["FT_".$key] = $val;
}
}
}
if (!empty($res["F_HTML"]))
{
$arr = @unserialize($res["F_HTML"], ["allowed_classes" => false]);
if (is_array($arr))
{
foreach ($arr as $key => $val)
{
$res["~F_".$key] = $res["F_".$key];
$res["F_".$key] = $val;
}
}
if (!empty($res["FT_TITLE"]))
$res["F_TITLE"] = $res["FT_TITLE"];
}
}
if (!empty($this->sNameTemplate))
{
$arTmp = array();
foreach (array(
"AUTHOR_ID" => "AUTHOR_NAME",
"EDITOR_ID" => "EDITOR_NAME",
"USER_START_ID" => "USER_START_NAME") as $id => $name)
{
if (array_key_exists($id, $res))
{
$tmp = "";
if (!empty($res[$id]))
{
if (in_array($res[$id], $arTmp))
{
$tmp = $arTmp[$res[$id]];
}
else
{
$arTmp[$res[$id]] = $tmp = (!empty($res[$name."_FRMT"]) ? $res[$name."_FRMT"] :
CForumUser::GetFormattedNameByUserID($res[$id], $this->sNameTemplate, ($id == "AUTHOR_ID" ? $res : array())));
}
}
$res[$name] = (!empty($tmp) ? $tmp : $res[$name]);
unset($res[$name."_FRMT"]);
}
}
}
if ($this->checkUserFields)
{
$arUF = array_intersect_key($res, $this->arUserFields);
if (empty($arUF))
$this->checkUserFields = false;
else
{
foreach($arUF as $k => $v)
{
$res[$k] = $this->arUserFields[$k];
$res[$k]["ENTITY_VALUE_ID"] = $res["ID"];
$res[$k]["VALUE"] = $v;
if (method_exists($GLOBALS['USER_FIELD_MANAGER'], 'getCustomData'))
{
$res[$k]["CUSTOM_DATA"] = $GLOBALS['USER_FIELD_MANAGER']->getCustomData(
$res[$k],
(int)$res["ID"]
);
}
}
}
}
}
return $res;
}