- Модуль: search
- Путь к файлу: ~/bitrix/modules/search/classes/general/search.php
- Класс: CAllSearch
- Вызов: CAllSearch::DeleteOld
static function DeleteOld($SESS_ID, $MODULE_ID = "", $SITE_ID = "")
{
$DB = CDatabase::GetModuleConnection('search');
$strFilter = "";
if ($MODULE_ID != "")
$strFilter .= " AND MODULE_ID = '".$DB->ForSql($MODULE_ID)."' ";
$strJoin = "";
if ($SITE_ID != "")
{
$strFilter .= " AND scsite.SITE_ID = '".$DB->ForSql($SITE_ID)."' ";
$strJoin .= " INNER JOIN b_search_content_site scsite ON sc.ID=scsite.SEARCH_CONTENT_ID ";
}
if (!is_array($SESS_ID))
$SESS_ID = array($SESS_ID);
foreach ($SESS_ID as $key => $value)
$SESS_ID[$key] = $DB->ForSql($value);
$strSql = "
SELECT ID
FROM b_search_content sc
".$strJoin."
WHERE (UPD not in ('".implode("', '", $SESS_ID)."') OR UPD IS NULL)
".$strFilter."
";
$arEvents = GetModuleEvents("search", "OnBeforeIndexDelete", true);
$rs = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__);
while ($ar = $rs->Fetch())
{
foreach ($arEvents as $arEvent)
ExecuteModuleEventEx($arEvent, array("SEARCH_CONTENT_ID = ".$ar["ID"]));
$DB->Query("DELETE FROM b_search_content_param WHERE SEARCH_CONTENT_ID = ".$ar["ID"], false, "File: ".__FILE__."
Line: ".__LINE__);
$DB->Query("DELETE FROM b_search_content_right WHERE SEARCH_CONTENT_ID = ".$ar["ID"], false, "File: ".__FILE__."
Line: ".__LINE__);
$DB->Query("DELETE FROM b_search_content_site WHERE SEARCH_CONTENT_ID = ".$ar["ID"], false, "File: ".__FILE__."
Line: ".__LINE__);
$DB->Query("DELETE FROM b_search_content_title WHERE SEARCH_CONTENT_ID = ".$ar["ID"], false, "File: ".__FILE__."
Line: ".__LINE__);
$DB->Query("DELETE FROM b_search_tags WHERE SEARCH_CONTENT_ID = ".$ar["ID"], false, "File: ".__FILE__."
Line: ".__LINE__);
CSearchFullText::getInstance()->deleteById($ar["ID"]);
$DB->Query("DELETE FROM b_search_content WHERE ID = ".$ar["ID"], false, "File: ".__FILE__."
Line: ".__LINE__);
}
CSearchTags::CleanCache();
}