function UpdateForumTopicIndex($topic_id, $entity_type, $entity_id, $feature, $operation, $path_template) { global $DB; if (!CModule::IncludeModule("forum")) { return; } $topic_id = intval($topic_id); $rsForumTopic = $DB->Query("SELECT FORUM_ID FROM b_forum_topic WHERE ID = " . $topic_id); $arForumTopic = $rsForumTopic->Fetch(); if (!$arForumTopic) { return; } $arGroups = $this->GetSearchGroups($entity_type, $entity_id, $feature, $operation); CSearch::ChangePermission("forum", $arGroups, false, $arForumTopic["FORUM_ID"], $topic_id); $rsForumMessages = $DB->Query("\n\t\t\tSELECT ID\n\t\t\tFROM b_forum_message\n\t\t\tWHERE TOPIC_ID = " . intval($topic_id) . "\n\t\t"); while ($arMessage = $rsForumMessages->Fetch()) { $url = str_replace(array("#topic_id#", "#message_id#", "#action#"), array($arTopic["ID"], $arMessage["ID"], ""), $path_template); CSearch::ChangeSite("forum", array(SITE_ID => $url), $arMessage["ID"]); $this->_counter++; } $arParams = $this->GetSearchParams($entity_type, $entity_id, $feature, $operation); CSearch::ChangeIndex("forum", array("UPD" => $this->_sess_id, "PARAMS" => $arParams), false, $arForumTopic["FORUM_ID"], $topic_id); }
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 UpdateForumTopicIndex($topic_id, $entity_type, $entity_id, $feature, $operation, $path, $arPermissions, $siteID) { global $DB; if (!CModule::IncludeModule("forum")) { return; } $topic_id = intval($topic_id); $rsForumTopic = $DB->Query("SELECT FORUM_ID FROM b_forum_topic WHERE ID = " . $topic_id); $arForumTopic = $rsForumTopic->Fetch(); if (!$arForumTopic) { return; } CSearch::ChangePermission("forum", $arPermissions, false, $arForumTopic["FORUM_ID"], $topic_id); $rsForumMessages = $DB->Query("\n\t\t\tSELECT ID\n\t\t\tFROM b_forum_message\n\t\t\tWHERE TOPIC_ID = " . $topic_id . "\n\t\t"); while ($arMessage = $rsForumMessages->Fetch()) { CSearch::ChangeSite("forum", array($siteID => $path), $arMessage["ID"]); } $arParams = array("feature_id" => "S" . $entity_type . "_" . $entity_id . "_" . $feature . "_" . $operation, "socnet_user" => $entity_id); CSearch::ChangeIndex("forum", array("PARAMS" => $arParams), false, $arForumTopic["FORUM_ID"], $topic_id); }