• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/config/option.php
  • Класс: BitrixMainConfigOption
  • Вызов: Option::load
static function load($moduleId)
{
	$cache = MainApplication::getInstance()->getManagedCache();
	$cacheTtl = static::getCacheTtl();
	$loadFromDb = true;

	if ($cacheTtl !== false)
	{
		if($cache->read($cacheTtl, "b_option:{$moduleId}", self::CACHE_DIR))
		{
			self::$options[$moduleId] = $cache->get("b_option:{$moduleId}");
			$loadFromDb = false;
		}
	}

	if($loadFromDb)
	{
		self::$loading[$moduleId] = true;

		$con = MainApplication::getConnection();
		$sqlHelper = $con->getSqlHelper();

		// prevents recursion and cache miss
		self::$options[$moduleId] = ["-" => []];

		$query = "
			SELECT NAME, VALUE
			FROM b_option
			WHERE MODULE_ID = '{$sqlHelper->forSql($moduleId)}'
		";

		$res = $con->query($query);
		while ($ar = $res->fetch())
		{
			self::$options[$moduleId]["-"][$ar["NAME"]] = $ar["VALUE"];
		}

		try
		{
			//b_option_site possibly doesn't exist

			$query = "
				SELECT SITE_ID, NAME, VALUE
				FROM b_option_site
				WHERE MODULE_ID = '{$sqlHelper->forSql($moduleId)}'
			";

			$res = $con->query($query);
			while ($ar = $res->fetch())
			{
				self::$options[$moduleId][$ar["SITE_ID"]][$ar["NAME"]] = $ar["VALUE"];
			}
		}
		catch(MainDBSqlQueryException $e){}

		if($cacheTtl !== false)
		{
			$cache->setImmediate("b_option:{$moduleId}", self::$options[$moduleId]);
		}

		unset(self::$loading[$moduleId]);
	}

	/*patchvalidationoptions4*/
}