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