- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/jscore.php
- Класс: CJSCore
- Вызов: CJSCore::_loadExt
static function _loadExt($ext, $bReturn)
{
$ret = '';
$ext = preg_replace('/[^a-z0-9_.-]/i', '', $ext);
if (!self::IsExtRegistered($ext))
{
$success = Extension::register($ext);
if (!$success)
{
return "";
}
}
if (self::isExtensionLoaded($ext))
{
return "";
}
if(isset(self::$arRegisteredExt[$ext]['oninit']) && is_callable(self::$arRegisteredExt[$ext]['oninit']))
{
$callbackResult = call_user_func_array(
self::$arRegisteredExt[$ext]['oninit'],
array(self::$arRegisteredExt[$ext])
);
if(is_array($callbackResult))
{
foreach($callbackResult as $key => $value)
{
if(!is_array($value))
{
$value = array($value);
}
if(!isset(self::$arRegisteredExt[$ext][$key]))
{
self::$arRegisteredExt[$ext][$key] = array();
}
elseif(!is_array(self::$arRegisteredExt[$ext][$key]))
{
self::$arRegisteredExt[$ext][$key] = array(self::$arRegisteredExt[$ext][$key]);
}
self::$arRegisteredExt[$ext][$key] = array_merge(self::$arRegisteredExt[$ext][$key], $value);
}
}
unset(self::$arRegisteredExt[$ext]['oninit']);
}
self::markExtensionLoaded($ext);
if (isset(self::$arRegisteredExt[$ext]['rel']) && is_array(self::$arRegisteredExt[$ext]['rel']))
{
foreach (self::$arRegisteredExt[$ext]['rel'] as $rel_ext)
{
$ret .= self::_loadExt($rel_ext, $bReturn);
}
}
if (!empty(self::$arRegisteredExt[$ext]['css']))
{
if (!empty(self::$arRegisteredExt[$ext]['bundle_css']))
{
self::registerCssBundle(
self::$arRegisteredExt[$ext]['bundle_css'],
self::$arRegisteredExt[$ext]['css']
);
}
$ret .= self::_loadCSS(self::$arRegisteredExt[$ext]['css'], $bReturn);
}
if (isset(self::$arRegisteredExt[$ext]['js']))
{
if (!empty(self::$arRegisteredExt[$ext]['bundle_js']))
{
self::registerJsBundle(
self::$arRegisteredExt[$ext]['bundle_js'],
self::$arRegisteredExt[$ext]['js']
);
}
$ret .= self::_loadJS(self::$arRegisteredExt[$ext]['js'], $bReturn);
}
if (isset(self::$arRegisteredExt[$ext]['lang']) || isset(self::$arRegisteredExt[$ext]['lang_additional']))
{
$ret .= self::_loadLang(
self::$arRegisteredExt[$ext]['lang'] ?? null,
$bReturn,
!empty(self::$arRegisteredExt[$ext]['lang_additional'])? self::$arRegisteredExt[$ext]['lang_additional']: false
);
}
if (isset(self::$arRegisteredExt[$ext]['settings']))
{
$ret .= self::loadSettings($ext, self::$arRegisteredExt[$ext]['settings'], $bReturn);
}
if (isset(self::$arRegisteredExt[$ext]['post_rel']) && is_array(self::$arRegisteredExt[$ext]['post_rel']))
{
foreach (self::$arRegisteredExt[$ext]['post_rel'] as $rel_ext)
{
$ret .= self::_loadExt($rel_ext, $bReturn);
}
}
return $ret;
}