• Модуль: forum
  • Путь к файлу: ~/bitrix/modules/forum/classes/general/message.php
  • Класс: _CMessageDBResult
  • Вызов: _CMessageDBResult::Fetch
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; }