- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/search.php
- Класс: CSocNetSearch
- Вызов: CSocNetSearch::OnSearchReindex
static function OnSearchReindex($NS = Array(), $oCallback = NULL, $callback_method = "")
{
global $DB;
$arResult = array();
if ($NS["MODULE"] === "socialnetwork" && $NS["ID"] <> '')
{
$id = (int)$NS["ID"];
}
else
{
$id = 0;//very first id
}
$strNSJoin1 = "";
$strNSFilter1 = "";
if($NS["SITE_ID"]!="")
{
$strNSJoin1 .= " INNER JOIN b_sonet_group_site sgs ON sgs.GROUP_ID=g.ID ";
$strNSFilter1 .= " AND sgs.SITE_ID='".$DB->ForSQL($NS["SITE_ID"])."' ";
}
$strSql = "
SELECT
g.ID
,".$DB->DateToCharFunction("g.DATE_UPDATE")." as DATE_UPDATE
,g.NAME
,g.DESCRIPTION
,g.SUBJECT_ID
,g.KEYWORDS
,g.VISIBLE
FROM
b_sonet_group g
".$strNSJoin1."
WHERE
g.ACTIVE = 'Y'
".$strNSFilter1."
AND g.ID > ".$id."
ORDER BY
g.ID
";
$rs = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__);
while ($ar = $rs->Fetch())
{
$arSearchIndexSiteID = array();
$rsGroupSite = CSocNetGroup::GetSite($ar["ID"]);
while($arGroupSite = $rsGroupSite->Fetch())
$arSearchIndexSiteID[$arGroupSite["LID"]] = str_replace("#group_id#", $ar["ID"], BitrixSocialnetworkHelperPath::get('group_path_template', $arGroupSite['LID']));
$Result = Array(
"ID" => "G".$ar["ID"],
"LAST_MODIFIED" => $ar["DATE_UPDATE"],
"TITLE" => $ar["NAME"],
"BODY" => CSocNetTextParser::killAllTags($ar["DESCRIPTION"]),
"SITE_ID" => $arSearchIndexSiteID,
"PARAM1" => $ar["SUBJECT_ID"],
"PARAM2" => $ar["ID"],
"PARAM3" => "GROUP",
"PERMISSIONS" => (
$ar["VISIBLE"] === "Y"?
array('G2')://public
array(
'SG'.$ar["ID"].'_A',//admins
'SG'.$ar["ID"].'_E',//moderators
'SG'.$ar["ID"].'_K',//members
)
),
"PARAMS" =>array(
"socnet_group" => $ar["ID"],
"entity" => "socnet_group",
),
"TAGS" => $ar["KEYWORDS"],
);
if($oCallback)
{
$res = call_user_func(array(&$oCallback, $callback_method), $Result);
if(!$res)
return $Result["ID"];
}
else
$arResult[] = $Result;
}
if ($oCallback)
return false;
return $arResult;
}