/** * Run startup and localization events on any installed packages. */ public function setupPackages() { $checkAfterStart = false; $config = $this['config']; foreach ($this->packages as $pkg) { // handle updates if ($config->get('concrete.updates.enable_auto_update_packages')) { $dbPkg = \Package::getByHandle($pkg->getPackageHandle()); $pkgInstalledVersion = $dbPkg->getPackageVersion(); $pkgFileVersion = $pkg->getPackageVersion(); if (version_compare($pkgFileVersion, $pkgInstalledVersion, '>')) { $currentLocale = Localization::activeLocale(); if ($currentLocale != 'en_US') { Localization::changeLocale('en_US'); } $dbPkg->upgradeCoreData(); $dbPkg->upgrade(); if ($currentLocale != 'en_US') { Localization::changeLocale($currentLocale); } } } $pkg->setupPackageLocalization(); } $config->set('app.bootstrap.packages_loaded', true); \Localization::setupSiteLocalization(); foreach ($this->packages as $pkg) { if (method_exists($pkg, 'on_start')) { $pkg->on_start(); } if (method_exists($pkg, 'on_after_packages_start')) { $checkAfterStart = true; } } if ($checkAfterStart) { foreach ($this->packages as $pkg) { if (method_exists($pkg, 'on_after_packages_start')) { $pkg->on_after_packages_start(); } } } }