- Модуль: search
- Путь к файлу: ~/bitrix/modules/search/classes/general/search.php
- Класс: CAllSearch
- Вызов: CAllSearch::DeleteIndex
static function DeleteIndex($MODULE_ID, $ITEM_ID = false, $PARAM1 = false, $PARAM2 = false, $SITE_ID = false)
{
$DB = CDatabase::GetModuleConnection('search');
$bIncSites = false;
$op = (mb_strpos($ITEM_ID, '%') !== false? '%=': '=');
if ($PARAM1 !== false && $PARAM2 !== false)
{
$strSqlWhere = CSearch::__PrepareFilter(array(
"MODULE_ID" => $MODULE_ID,
$op."ITEM_ID" => $ITEM_ID,
array(
"=PARAM1" => $PARAM1,
"PARAM2" => $PARAM2,
),
"SITE_ID" => $SITE_ID,
), $bIncSites);
}
else
{
$strSqlWhere = CSearch::__PrepareFilter(array(
"MODULE_ID" => $MODULE_ID,
$op."ITEM_ID" => $ITEM_ID,
"PARAM1" => $PARAM1,
"PARAM2" => $PARAM2,
"SITE_ID" => $SITE_ID,
), $bIncSites);
}
$strSql = "
SELECT sc.ID
FROM b_search_content sc
".($bIncSites? "INNER JOIN b_search_content_site scsite ON sc.ID=scsite.SEARCH_CONTENT_ID": "")."
WHERE
".$strSqlWhere."
";
$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();
}