/** * (non-PHPdoc) * @see \oat\oatbox\action\Action::__invoke() */ public function __invoke($params) { $merged = array_merge(common_ext_ExtensionsManager::singleton()->getInstalledExtensions(), $this->getMissingExtensions()); $sorted = \helpers_ExtensionHelper::sortByDependencies($merged); $report = new common_report_Report(common_report_Report::TYPE_INFO, 'Running extension update'); foreach ($sorted as $ext) { try { if (!common_ext_ExtensionsManager::singleton()->isInstalled($ext->getId())) { $installer = new \tao_install_ExtensionInstaller($ext); $installer->install(); $report->add(new common_report_Report(common_report_Report::TYPE_SUCCESS, 'Installed ' . $ext->getName())); } else { $report->add($this->updateExtension($ext)); } } catch (common_ext_MissingExtensionException $ex) { $report->add(new common_report_Report(common_report_Report::TYPE_ERROR, $ex->getMessage())); break; } catch (common_ext_OutdatedVersionException $ex) { $report->add(new common_report_Report(common_report_Report::TYPE_ERROR, $ex->getMessage())); break; } catch (Exception $e) { $this->logError('Exception during update of ' . $ext->getId() . ': ' . get_class($e) . ' "' . $e->getMessage() . '"'); $report->setType(common_report_Report::TYPE_ERROR); $report->setTitle('Update failed'); $report->add(new common_report_Report(common_report_Report::TYPE_ERROR, 'Exception during update of ' . $ext->getId() . '.')); break; } } $this->logInfo(helpers_Report::renderToCommandline($report, false)); return $report; }