27 private $extensions = [];
78 $this->modules[] = $module;
91 $list = $appendDependencies ? Extension::getDependencyList(
$name) : [];
92 if (!in_array(
$name, $list))
97 $this->extensions = array_unique(array_merge($this->extensions, $list));
99 $list = array_diff($list, $this->modules);
100 $list = array_filter(
107 $this->modules = array_merge($this->modules, $list);
122 private function convertExtensionsToModules()
124 foreach ($this->modules as $index => $module)
126 if ($module ===
'main.core')
128 $module .=
'.minimal';
136 if (!is_string($module))
142 $extension = Extension::getResourceList(
$name, [
'with_dependency' =>
false]);
144 $package = (
new Resource\Package());
145 $profile = (
new Resource\Profile());
146 foreach ($extension as
$key => $values)
148 if (
$key ===
'options')
154 if (!in_array(
$key, Resource\Asset::getTypeList()))
159 foreach ($values as
$path)
167 $package->addAsset(Resource\Asset::create(
$path));
171 $this->modules[$index] =
new Module(
$name, $package, $profile);
198 if (!is_array($extensionOptions))
205 if (is_array($properties))
212 $profile->useAllLangs(!!self::getValueByKey($webPacker,
Resource\Profile::USE_ALL_LANGS));
213 $profile->useLangCamelCase(!!self::getValueByKey($webPacker,
Resource\Profile::USE_LANG_CAMEL_CASE));
215 if (is_array($deleteLangPrefixes))
217 $profile->deleteLangPrefixes($deleteLangPrefixes);
223 $profile->setCallMethod($callMethod);
229 if (!is_array($array))
234 return (isset($array[
$key]) && $array[
$key]) ? $array[
$key] :
null;
244 $this->convertExtensionsToModules();
249 return $module instanceof
Module;
264 if ($module->getName() ===
$name)
292 return self::$siteUri;
298 self::$siteUri =
$url;
302 $server = Context::getCurrent()->getServer();
303 $url = $server->getHttpHost();
305 $canSave = !empty(
$url) && (!defined(
'BX_CRONTAB') || !
BX_CRONTAB);
318 $url =
$url ?: $server->getServerName();
321 $defaultSites = \CSite::getDefList();
322 while($defaultSite = $defaultSites->fetch())
324 $url = $defaultSite[
'SERVER_NAME'];
336 if (!str_contains(
$url,
':') && $server->getServerPort())
338 if (!in_array($server->getServerPort(),
array(
'80',
'443')))
340 $url .=
':' . $server->getServerPort();
344 $url = (Context::getCurrent()->getRequest()->isHttps() ?
"https" :
"http")
350 if (str_ends_with(
$url,
'/'))
360 self::$siteUri =
$url;
static get($moduleId, $name, $default="", $siteId=false)
static set($moduleId, $name, $value="", $siteId="")
addExtension($name, $appendDependencies=true)
setOutput(Output\Base $output)
static getDefaultSiteUri()
addModule(Module $module)
applyExtensionOptions($profile, $extensionOptions)
getValueByKey($array, $key)
static stringify(Builder $builder)
if(file_exists($_SERVER['DOCUMENT_ROOT'] . "/urlrewrite.php")) $uri