Contact Horde servers and get version information.
public checkVersions ( ) : array | ||
Résultat | array | Keys are app names, values are arrays with two keys: 'version' and 'url'. |
/** * Perform all functions for this task. */ public function execute() { global $notification, $registry; $hconfig = new Horde_Config(); try { $versions = $hconfig->checkVersions(); foreach ($versions as &$app) { $app['version'] = preg_replace('/H\\d \\((.*)\\)/', '$1', $app['version']); } } catch (Horde_Exception $e) { return; } $pearConfig = PEAR_Config::singleton(); $packageFile = new PEAR_PackageFile($pearConfig); $packages = array(); foreach ($pearConfig->getRegistry()->packageInfo(null, null, 'pear.horde.org') as $package) { $packages[$package['name']] = $package['version']['release']; } $configLink = Horde::link(Horde::url('admin/config/index.php', false, array('app' => 'horde'))); if (class_exists('Horde_Bundle') && isset($versions[Horde_Bundle::NAME]) && version_compare($versions[Horde_Bundle::NAME]['version'], Horde_Bundle::VERSION, '>')) { $notification->push($configLink . sprintf(_("A newer version of %s exists."), Horde_Bundle::FULLNAME) . '</a>', 'horde.warning', array('content.raw', 'sticky')); return; } foreach ($registry->listAllApps() as $app) { if (($version = $registry->getVersion($app, true)) && isset($versions[$app]) && version_compare($versions[$app]['version'], $version, '>')) { $notification->push($configLink . _("A newer version of an application exists.") . '</a>', 'horde.warning', array('content.raw', 'sticky')); return; } } foreach ($packages as $app => $version) { if (isset($versions[$app]) && version_compare($versions[$app]['version'], $version, '>')) { $notification->push($configLink . _("A newer version of a library exists.") . '</a>', 'horde.warning', array('content.raw', 'sticky')); return; } } }
$versions = array(); if ($vars->check_versions) { $pearConfig = PEAR_Config::singleton(); $packageFile = new PEAR_PackageFile($pearConfig); $packages = array(); foreach ($pearConfig->getRegistry()->packageInfo(null, null, 'pear.horde.org') as $package) { $packages[$package['name']] = $package['version']['release']; } foreach (glob(__DIR__ . '/../../../framework/*/package.xml') as $packagexml) { $package = $packageFile->fromPackageFile($packagexml, PEAR_VALIDATE_NORMAL); if (!$package instanceof PEAR_Error) { $packages[$package->getName()] = $package->getVersion(); } } try { $versions = $hconfig->checkVersions(); } catch (Horde_Exception $e) { $notification->push(_("Could not contact server. Try again later."), 'horde.error'); } } /* Update configurations if requested. */ if ($vars->action == 'config') { foreach ($a as $app) { $path = $registry->get('fileroot', $app) . '/config'; if (!file_exists($path . '/conf.xml') || file_exists($path . '/conf.php') && ($xml_ver = $hconfig->getVersion(@file_get_contents($path . '/conf.xml'))) !== false && ($php_ver = $hconfig->getVersion(@file_get_contents($path . '/conf.php'))) !== false && $xml_ver == $php_ver) { continue; } $vars = new Horde_Variables(); $form = new Horde_Config_Form($vars, $app, true); $form->setSubmitted(true); if ($form->validate($vars)) {