• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/jscore.php
  • Класс: CJSCore
  • Вызов: CJSCore::Init
static function Init($arExt = array(), $bReturn = false)
{
	if (!self::$bInited)
	{
		self::_RegisterStandardExt();
		self::$bInited = true;
	}

	if (!is_array($arExt) && $arExt <> '')
		$arExt = array($arExt);

	$bReturn = ($bReturn === true); // prevent syntax mistake

	$bNeedCore = false;
	if (!empty($arExt))
	{
		foreach ($arExt as $ext)
		{
			if (
				isset(self::$arRegisteredExt[$ext])
				&& (
					!isset(self::$arRegisteredExt[$ext]['skip_core'])
					|| !self::$arRegisteredExt[$ext]['skip_core']
				)
			)
			{
				$bNeedCore = true;
				break;
			}
		}
	}
	else
	{
		$bNeedCore = true;
	}

	$ret = '';

	if ($bNeedCore && !self::isCoreLoaded())
	{
		$config = self::getCoreConfig();

		self::markExtensionLoaded('core');
		self::markExtensionLoaded('main.core');

		$includes = '';
		if (is_array($config['includes']))
            {
                foreach ($config['includes'] as $key => $item)
                {
				self::markExtensionLoaded($item);
                }

			$assets = Extension::getAssets($config['includes']);
                $includes .= static::registerAssetsAsLoaded($assets);
            }

		$relativities = '';

		if (is_array($config['rel']))
            {
                $relativities .= self::init($config['rel'], true);
            }

		$coreLang = self::_loadLang($config['lang'], true);
		$coreSettings = self::loadSettings('main.core', $config['settings'], true);
            $coreJs = self::_loadJS($config['js'], true);

		if ($bReturn)
		{
		    $ret .= $coreLang;
		    $ret .= $coreSettings;
			$ret .= $relativities;
		    $ret .= $coreJs;
		    $ret .= $includes;
            }

		$asset = Asset::getInstance();
		$asset->addString($coreLang, true, AssetLocation::AFTER_CSS);
		$asset->addString($coreSettings, true, AssetLocation::AFTER_CSS);
            $asset->addString($relativities, true, AssetLocation::AFTER_CSS);
            $asset->addString($coreJs, true, AssetLocation::AFTER_CSS);
            $asset->addString($includes, true, AssetLocation::AFTER_CSS);
	}

	for ($i = 0, $len = count($arExt); $i < $len; $i++)
	{
		$ret .= self::_loadExt($arExt[$i], $bReturn);
	}

	if (!defined('PUBLIC_MODE') && defined('BX_PUBLIC_MODE') && BX_PUBLIC_MODE == 1)
		echo $ret;

	return $bReturn ? $ret : true;
}