Horde_Config::checkVersions PHP Метод

checkVersions() публичный Метод

Contact Horde servers and get version information.
public checkVersions ( ) : array
Результат array Keys are app names, values are arrays with two keys: 'version' and 'url'.
    public function checkVersions()
    {
        $response = $GLOBALS['injector']->getInstance('Horde_Core_Factory_HttpClient')->create(array('request.timeout' => 60, 'request.userAgent' => 'Horde ' . $GLOBALS['registry']->getVersion('horde', true)))->get($this->_versionUrl);
        if ($response->code != 200) {
            throw new Horde_Exception('Unexpected response from server.');
        }
        if (!is_array($result = json_decode($response->getBody(), true))) {
            throw new Horde_Exception('Unexpected response from server.');
        }
        $versions = array();
        foreach ($result as $package) {
            uksort($package['versions'], 'version_compare');
            $version = end($package['versions']);
            $versions[str_replace('pear-horde/', '', $package['name'])] = array('version' => $version['version'], 'url' => 'http://pear.horde.org/');
        }
        return $versions;
    }

Usage Example

Пример #1
0
 /**
  * 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;
         }
     }
 }
All Usage Examples Of Horde_Config::checkVersions