示例#1
0
 /**
  * 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();
             }
         }
     }
 }