- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/search_reindex.php
- Класс: CSocNetSearchReindex
- Вызов: CSocNetSearchReindex::ReindexForum
function ReindexForum($entity_type, $last_id, $path_template)
{
global $DB;
if(!CModule::IncludeModule('forum'))
return false;
$rsForumMessages = $DB->Query("
SELECT ft.ID TOPIC_ID, ft.SOCNET_GROUP_ID, ft.OWNER_ID, fm.ID
FROM
b_forum_topic ft
INNER JOIN b_forum_message fm ON fm.TOPIC_ID = ft.ID
WHERE
fm.ID > ".intval($last_id)."
".($entity_type == "G"?
"AND ft.SOCNET_GROUP_ID IS NOT NULL AND ft.SOCNET_GROUP_ID > 0":
"AND (ft.SOCNET_GROUP_ID IS NULL OR ft.SOCNET_GROUP_ID = 0) AND ft.OWNER_ID IS NOT NULL"
)."
ORDER BY fm.ID
");
while($arMessage = $rsForumMessages->Fetch())
{
$url = str_replace(
array(
"#user_id#",
"#group_id#",
"#topic_id#",
"#message_id#",
"#action#",
),
array(
$arMessage["OWNER_ID"],
$arMessage["SOCNET_GROUP_ID"],
$arMessage["TOPIC_ID"],
$arMessage["ID"],
"",
),
$path_template
);
CSearch::ChangeSite("forum", array(
SITE_ID => $url,
), $arMessage["ID"]);
$arGroups = $this->GetSearchGroups(
$entity_type,
$entity_type=="G"? $arMessage["SOCNET_GROUP_ID"]: $arMessage["OWNER_ID"],
'forum',
'view'
);
$arParams = $this->GetSearchParams(
$entity_type,
$entity_type=="G"? $arMessage["SOCNET_GROUP_ID"]: $arMessage["OWNER_ID"],
'forum',
'view'
);
CSearch::ChangePermission('forum', $arGroups, $arMessage["ID"]);
CSearch::ChangeIndex("forum", array("UPD" => $this->_sess_id, "PARAMS" => $arParams), $arMessage["ID"]);
$this->_counter++;
if($this->_end_time && $this->_end_time <= time())
return $arMessage["ID"];
}
return false;
}