• Модуль: search
  • Путь к файлу: ~/bitrix/modules/search/classes/general/search.php
  • Класс: CAllSearch
  • Вызов: CAllSearch::Update
static 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 ($strUpdate <> '')
	{
		$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);
}