• Модуль: forum
  • Путь к файлу: ~/bitrix/modules/forum/lib/integration/search/message.php
  • Класс: BitrixForumIntegrationSearchMessage
  • Вызов: Message::index
static function index(ForumForum $forum, ForumTopic $topic, array $message)
{
	if (!MainLoader::includeModule("search") || $message["SERVICE_TYPE"] > 0)
	{
		return; 
	}

	if (MainConfigOption::get("forum", "FILTER", "Y") == "Y" && $message["POST_MESSAGE_FILTER"] !== null)
	{
		$message["POST_MESSAGE"] = $message["POST_MESSAGE_FILTER"];
	}

	$arParams = [
		"PERMISSION" => [1],
		"SITE" => $forum->getSites(),
		"DEFAULT_URL" => "/"
	];

	foreach ($forum->getPermissions() as $groupId => $permission)
	{
		if (
			$message["APPROVED"] == "Y" && $permission >= Permission::CAN_READ
			||
			$message["APPROVED"] != "Y" && $permission >= Permission::CAN_MODERATE
		)
		{
			$arParams["PERMISSION"][] = $groupId;
		}
	}


	$arSearchInd = array(
		"LID" => array(),
		"LAST_MODIFIED" => $message["POST_DATE"],
		"PARAM1" => $message["FORUM_ID"],
		"PARAM2" => $message["TOPIC_ID"],
		"ENTITY_TYPE_ID"  => ($message["NEW_TOPIC"] == "Y"? "FORUM_TOPIC": "FORUM_POST"),
		"ENTITY_ID" => ($message["NEW_TOPIC"] == "Y"? $message["TOPIC_ID"]: $message["ID"]),
		"USER_ID" => $message["AUTHOR_ID"],
		"PERMISSIONS" => $arParams["PERMISSION"],
		"TITLE" => $topic["TITLE"].( $message["NEW_TOPIC"] == "Y" && !empty($topic["DESCRIPTION"]) ? ", ".$topic["DESCRIPTION"] : ""),
		"TAGS" => ($message["NEW_TOPIC"] == "Y" ? $topic["TAGS"] : ""),
		"BODY" => GetMessage("AVTOR_PREF")." ".$message["AUTHOR_NAME"].". ".(CSearch::KillTags(forumTextParser::clearAllTags($message["POST_MESSAGE"]))),
		"URL" => "",
		"INDEX_TITLE" => $message["NEW_TOPIC"] == "Y",
	);

	// get mentions
	$arMentionedUserID = CForumMessage::GetMentionedUserID($message["POST_MESSAGE"]);
	if (!empty($arMentionedUserID))
	{
		$arSearchInd["PARAMS"] = array(
			"mentioned_user_id" => $arMentionedUserID
		);
	}

	$urlPatterns = array(
		"FORUM_ID" => $message["FORUM_ID"],
		"TOPIC_ID" => $message["TOPIC_ID"],
		"TITLE_SEO" => $topic["TITLE_SEO"],
		"MESSAGE_ID" => $message["ID"],
		"SOCNET_GROUP_ID" => $topic["SOCNET_GROUP_ID"],
		"OWNER_ID" => $topic["OWNER_ID"],
		"PARAM1" => $message["PARAM1"],
		"PARAM2" => $message["PARAM2"]);
	foreach ($arParams["SITE"] as $key => $val)
	{
		$arSearchInd["LID"][$key] = CForumNew::PreparePath2Message($val, $urlPatterns);
		if (empty($arSearchInd["URL"]) && !empty($arSearchInd["LID"][$key]))
			$arSearchInd["URL"] = $arSearchInd["LID"][$key];
	}

	if (empty($arSearchInd["URL"]) && ($res = CLang::GetByID(SITE_ID)->fetch()))
	{
		$arParams["DEFAULT_URL"] .= $res["DIR"].
			MainConfigOption::get("forum", "REL_FPATH", "").
			"forum/read.php?FID=#FID#&TID=#TID#&MID=#MID##message#MID#";
		$arSearchInd["URL"] = CForumNew::PreparePath2Message($arParams["DEFAULT_URL"], $urlPatterns);
	}
		/***************** Events onMessageIsIndexed ***********************/
	$index = true;
	foreach(GetModuleEvents("forum", "onMessageIsIndexed", true) as $arEvent)
	{
		if (ExecuteModuleEventEx($arEvent, array($message["ID"], $message, &$arSearchInd)) === false)
		{
			$index = false;
			break;
		}
	}
	/***************** /Events *****************************************/
	if ($index == true)
	{
		CSearch::Index("forum", $message["ID"], $arSearchInd, true);
	}
}