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