• Модуль: search
  • Путь к файлу: ~/bitrix/modules/search/classes/mysql/search.php
  • Класс: CSearch
  • Вызов: CSearch::RegisterStem
static function RegisterStem($stem)
{
	$DB = CDatabase::GetModuleConnection('search');
	static $cache = array();

	if (is_array($stem)) //This is batch check of the already exist stems
	{
		ksort($stem);

		$strSqlPrefix = "select * from b_search_stem where stem in (";
		$maxValuesLen = 4096;
		$maxValuesCnt = 1500;
		$strSqlValues = "";
		$i = 0;
		foreach ($stem as $word => $count)
		{
			$strSqlValues .= ",'".$DB->ForSQL($word)."'";
			$i++;

			if (mb_strlen($strSqlValues) > $maxValuesLen || $i > $maxValuesCnt)
			{
				$rs = $DB->Query($strSqlPrefix.mb_substr($strSqlValues, 1).")", false, "File: ".__FILE__."
Line: ".__LINE__); while ($ar = $rs->Fetch()) $cache[$ar["STEM"]] = $ar["ID"]; $strSqlValues = ""; $i = 0; } } if ($strSqlValues <> '') { $rs = $DB->Query($strSqlPrefix.mb_substr($strSqlValues, 1).")", false, "File: ".__FILE__."
Line: ".__LINE__); while ($ar = $rs->Fetch()) $cache[$ar["STEM"]] = $ar["ID"]; } return; } if (!isset($cache[$stem])) { $rs = $DB->Query("insert into b_search_stem (STEM) values ('".$DB->ForSQL($stem)."')", true); if ($rs === false) { $rs = $DB->Query("select ID from b_search_stem WHERE STEM = '".$DB->ForSQL($stem)."'"); $ar = $rs->Fetch(); $cache[$stem] = $ar["ID"]; } else { $cache[$stem] = $DB->LastID(); } } return $cache[$stem]; }