• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/search.php
  • Класс: CSocNetSearch
  • Вызов: CSocNetSearch::IndexIBlockElement
function IndexIBlockElement($arFields, $entity_id, $entity_type, $feature, $operation, $path_template, $arFieldList)
{
	global $CACHE_MANAGER;

	$ID = (int)$arFields["ID"];
	$IBLOCK_ID = (int)$arFields["IBLOCK_ID"];
	$IBLOCK_SECTION_ID = (is_array($arFields["IBLOCK_SECTION"])) ? $arFields["IBLOCK_SECTION"][0] : $arFields["IBLOCK_SECTION"];

	if($entity_type === "G")
	{
		$url = str_replace(
			array("#group_id#", "#user_alias#", "#section_id#", "#element_id#", "#action#", "#task_id#", "#name#"),
			array($entity_id, "group_".$entity_id, $IBLOCK_SECTION_ID, $arFields["ID"], "view", $arFields["ID"], rawurlencode($arFields["NAME"])),
			$path_template
		);
	}
	else
	{
		$url = str_replace(
			array("#user_id#", "#user_alias#", "#section_id#", "#element_id#", "#action#", "#task_id#"),
			array($entity_id, "user_".$entity_id, $IBLOCK_SECTION_ID, $arFields["ID"], "view", $arFields["ID"]),
			$path_template
		);
	}

	$body = "";
	if ($feature === "wiki")
	{
		$CWikiParser = new CWikiParser();
	}

	foreach($arFieldList as $field)
	{
		if($field === "PREVIEW_TEXT" || $field === "DETAIL_TEXT")
		{
			$key = $field . "_TYPE";
			if (isset($CWikiParser))
			{
				$arFields[$field] = HTMLToTxt($CWikiParser->parseForSearch($arFields[$field]));
			}
			elseif (isset($arFields[$key]) && $arFields[$key] === "html")
			{
				$arFields[$field] = HTMLToTxt($arFields[$field]);
			}
		}

		$body .= $arFields[$field]."nr";
	}

	if(isset($CWikiParser))
		$title = preg_replace('/^category:/i'.BX_UTF_PCRE_MODIFIER, GetMessage('CATEGORY_NAME').':', $arFields['NAME']);
	else
		$title = $arFields["NAME"];

	$arPermissions = self::GetSearchGroups(
		$entity_type,
		$entity_id,
		$feature,
		$operation
	);

	if (CIBlock::GetArrayByID($IBLOCK_ID, "RIGHTS_MODE") === "E")
	{
		$obElementRights = new CIBlockElementRights($IBLOCK_ID, $arFields["ID"]);
		$arPermissions = $obElementRights->GetGroups(array("element_read"));
	}

	$arSearchIndexParams = self::GetSearchParams(
		$entity_type,
		$entity_id,
		$feature,
		$operation
	);

	CSearch::Index("socialnetwork", $ID, array(
		"LAST_MODIFIED" => ConvertTimeStamp(time()+CTimeZone::GetOffset(), "FULL"),
		"TITLE" => $title,
		"BODY" => $body,
		"SITE_ID" => array(SITE_ID => $url),
		"PARAM1" => CIBlock::GetArrayByID($IBLOCK_ID, "IBLOCK_TYPE_ID"),
		"PARAM2" => $IBLOCK_ID,
		"PARAM3" => $feature,
		"TAGS" => $arFields["TAGS"],
		"PERMISSIONS" => $arPermissions,
		"PARAMS" => $arSearchIndexParams,
	), true);

	if(defined("BX_COMP_MANAGED_CACHE"))
	{
		$CACHE_MANAGER->ClearByTag("sonet_search_".$entity_type."_".$entity_id);
	}
}