/** * Initializes all packages. */ public static function initialize($dbExists = true) { if ($dbExists) { $config = rex::getConfig('package-config', []); } else { $config = []; foreach (rex::getProperty('setup_addons') as $addon) { $config[$addon]['install'] = false; } } $addons = self::$addons; self::$addons = []; foreach ($config as $addonName => $addonConfig) { $addon = isset($addons[$addonName]) ? $addons[$addonName] : new self($addonName); $addon->setProperty('install', isset($addonConfig['install']) ? $addonConfig['install'] : false); $addon->setProperty('status', isset($addonConfig['status']) ? $addonConfig['status'] : false); self::$addons[$addonName] = $addon; if (!$dbExists && is_array($plugins = $addon->getProperty('system_plugins'))) { foreach ($plugins as $plugin) { $config[$addonName]['plugins'][$plugin]['install'] = false; } } if (isset($config[$addonName]['plugins']) && is_array($config[$addonName]['plugins'])) { $plugins = $addon->plugins; $addon->plugins = []; foreach ($config[$addonName]['plugins'] as $pluginName => $pluginConfig) { $plugin = isset($plugins[$pluginName]) ? $plugins[$pluginName] : new rex_plugin($pluginName, $addon); $plugin->setProperty('install', isset($pluginConfig['install']) ? $pluginConfig['install'] : false); $plugin->setProperty('status', isset($pluginConfig['status']) ? $pluginConfig['status'] : false); $addon->plugins[$pluginName] = $plugin; } } } }