- Модуль: 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;
}