Пример #1
0
 /**
  * Update a specific extension
  * 
  * @param common_ext_Extension $ext
  * @return common_report_Report
  */
 protected function updateExtension(common_ext_Extension $ext)
 {
     helpers_ExtensionHelper::checkRequiredExtensions($ext);
     $installed = common_ext_ExtensionsManager::singleton()->getInstalledVersion($ext->getId());
     $codeVersion = $ext->getVersion();
     if ($installed !== $codeVersion) {
         $report = new common_report_Report(common_report_Report::TYPE_INFO, $ext->getName() . ' requires update from ' . $installed . ' to ' . $codeVersion);
         $updaterClass = $ext->getManifest()->getUpdateHandler();
         if (is_null($updaterClass)) {
             $report = new common_report_Report(common_report_Report::TYPE_WARNING, 'No Updater found for  ' . $ext->getName());
         } elseif (!class_exists($updaterClass)) {
             $report = new common_report_Report(common_report_Report::TYPE_ERROR, 'Updater ' . $updaterClass . ' not found');
         } else {
             $updater = new $updaterClass($ext);
             $returnedVersion = $updater->update($installed);
             $currentVersion = common_ext_ExtensionsManager::singleton()->getInstalledVersion($ext->getId());
             if (!is_null($returnedVersion) && $returnedVersion != $currentVersion) {
                 common_ext_ExtensionsManager::singleton()->updateVersion($ext, $returnedVersion);
                 $report->add(new common_report_Report(common_report_Report::TYPE_WARNING, 'Manually saved extension version'));
                 $currentVersion = $returnedVersion;
             }
             if ($currentVersion == $codeVersion) {
                 $report->add(new common_report_Report(common_report_Report::TYPE_SUCCESS, 'Successfully updated ' . $ext->getName() . ' to ' . $currentVersion));
             } else {
                 $report->add(new common_report_Report(common_report_Report::TYPE_WARNING, 'Update of ' . $ext->getName() . ' exited with version ' . $currentVersion));
             }
             common_cache_FileCache::singleton()->purge();
         }
     } else {
         $report = new common_report_Report(common_report_Report::TYPE_INFO, $ext->getName() . ' already up to data');
     }
     return $report;
 }
Пример #2
0
 /**
  * install an extension
  *
  * @access public
  * @author Jerome Bogaerts, <*****@*****.**>
  * @return void
  */
 public function install()
 {
     common_Logger::i('Installing extension ' . $this->extension->getId(), 'INSTALL');
     if ($this->extension->getId() == 'generis') {
         throw new common_ext_ForbiddenActionException('Tried to install generis using the ExtensionInstaller', $this->extension->getId());
     }
     if (common_ext_ExtensionsManager::singleton()->isInstalled($this->extension->getId())) {
         throw new common_ext_AlreadyInstalledException('Problem installing extension ' . $this->extension->getId() . ' : Already installed', $this->extension->getId());
     }
     // we purge the whole cache.
     $cache = common_cache_FileCache::singleton();
     $cache->purge();
     // check reuired extensions, throws exception if failed
     helpers_ExtensionHelper::checkRequiredExtensions($this->getExtension());
     $this->installLoadDefaultConfig();
     $this->installOntology();
     $this->installRegisterExt();
     common_Logger::d('Installing custom script for extension ' . $this->extension->getId());
     $this->installCustomScript();
     common_Logger::d('Done installing custom script for extension ' . $this->extension->getId());
     if ($this->getLocalData() == true) {
         common_Logger::d('Installing local data for extension ' . $this->extension->getId());
         $this->installLocalData();
         common_Logger::d('Done installing local data for extension ' . $this->extension->getId());
     }
     common_Logger::d('Extended install for extension ' . $this->extension->getId());
     // Method to be overriden by subclasses
     // to extend the installation mechanism.
     $this->extendedInstall();
     common_Logger::d('Done extended install for extension ' . $this->extension->getId());
     $eventManager = ServiceManager::getServiceManager()->get(EventManager::CONFIG_ID);
     $eventManager->trigger(new common_ext_event_ExtensionInstalled($this->extension));
 }