function ChangeIndex($MODULE_ID, $arFields, $ITEM_ID=false, $PARAM1=false, $PARAM2=false, $SITE_ID=false) { $DB = CDatabase::GetModuleConnection('search'); if(array_key_exists("TITLE", $arFields)) $arFields["TITLE"] = Trim($arFields["TITLE"]); if(array_key_exists("BODY", $arFields)) $arFields["BODY"] = Trim($arFields["BODY"]); if(array_key_exists("PERMISSIONS", $arFields) && is_array($arFields["PERMISSIONS"])) CSearch::ChangePermission($MODULE_ID, $arFields["PERMISSIONS"], $ITEM_ID, $PARAM1, $PARAM2, $SITE_ID); if(array_key_exists("SITE_ID", $arFields) && is_array($arFields["SITE_ID"])) CSearch::ChangeSite($MODULE_ID, $arFields["SITE_ID"], $ITEM_ID, $PARAM1, $PARAM2, $SITE_ID); $strUpdate = $DB->PrepareUpdate("b_search_content", $arFields); if(strlen($strUpdate) > 0) { $strSqlWhere = CSearch::__PrepareFilter(Array("MODULE_ID"=>$MODULE_ID, "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": "")." ".(strlen($strSqlWhere)>0? "WHERE ".$strSqlWhere: "")." "; $rs = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); while($ar = $rs->Fetch()) { $strSql = "UPDATE b_search_content SET ".$strUpdate." WHERE ID=".$ar["ID"]; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); if(array_key_exists("PARAMS", $arFields)) CSearch::SetContentItemParams($ar["ID"], $arFields["PARAMS"]); } } }
function Update($ID, $arFields) { $DB = CDatabase::GetModuleConnection('search'); $bUpdate = false; if(array_key_exists("~DATE_CHANGE", $arFields)) { $arFields["DATE_CHANGE"] = $arFields["~DATE_CHANGE"]; unset($arFields["~DATE_CHANGE"]); } elseif(array_key_exists("LAST_MODIFIED", $arFields)) { $arFields["DATE_CHANGE"] = $arFields["LAST_MODIFIED"]; unset($arFields["LAST_MODIFIED"]); } elseif(array_key_exists("DATE_CHANGE", $arFields)) { $arFields["DATE_CHANGE"] = $DB->FormatDate($arFields["DATE_CHANGE"], "DD.MM.YYYY HH:MI:SS", CLang::GetDateFormat()); } if(BX_SEARCH_VERSION > 1) unset($arFields["SEARCHABLE_CONTENT"]); if (array_key_exists("SITE_ID", $arFields)) { CSearch::UpdateSite($ID, $arFields["SITE_ID"]); $bUpdate = true; } if (array_key_exists("PERMISSIONS", $arFields)) { $arNewGroups = array(); foreach($arFields["PERMISSIONS"] as $group_id) { if(is_numeric($group_id)) $arNewGroups[$group_id] = "G".intval($group_id); else $arNewGroups[$group_id] = $group_id; } CSearch::SetContentItemGroups($ID, $arNewGroups); $bUpdate = true; } if(array_key_exists("PARAMS", $arFields)) { CSearch::SetContentItemParams($ID, $arFields["PARAMS"]); $bUpdate = true; } $strUpdate = $DB->PrepareUpdate("b_search_content", $arFields); if(strlen($strUpdate) > 0) { $arBinds=Array(); if(is_set($arFields, "BODY")) $arBinds["BODY"] = $arFields["BODY"]; if(is_set($arFields, "SEARCHABLE_CONTENT")) $arBinds["SEARCHABLE_CONTENT"] = $arFields["SEARCHABLE_CONTENT"]; if(is_set($arFields, "TAGS")) $arBinds["TAGS"] = $arFields["TAGS"]; $DB->QueryBind("UPDATE b_search_content SET ".$strUpdate." WHERE ID=".intval($ID), $arBinds); $bUpdate = true; } if ($bUpdate) CSearchFullText::getInstance()->update($ID, $arFields); }