Example #1
0
 /**
  * List release info with dependencies formatted for easy processing
  * by a web frontend.
  *
  * @param string $package Package name eg: PEAR2_SimpleChannelServer
  *
  * @return array
  */
 function listReleases($package)
 {
     $path = $this->rest->getRESTPath('r', strtolower($package) . '/allreleases2.xml');
     if (!file_exists($path)) {
         return array();
     }
     try {
         $list = $reader->parse($path);
     } catch (Exception $e) {
         throw new PEAR2_SimpleChannelServer_Exception('Unable to list releases of ' . $package . ' package', $e);
     }
     if (!isset($list['a']['r'][0])) {
         $list['a']['r'] = array($list['a']['r']);
     }
     $ret = array();
     foreach ($list['a']['r'] as $info) {
         $inf = array('version' => $info['v'], 'stability' => $info['s'], 'minimum PHP version' => $info['m']);
         $deps = unserialize(file_get_contents($this->rest->getPath('r', strtolower($package) . '/deps.' . $info['v'] . '.txt')));
         $inf['required'] = array();
         if (isset($deps['required']['package'])) {
             $inf['required']['package'] = $deps['required']['package'];
             if (!isset($inf['required']['package'][0])) {
                 $inf['required']['package'] = array($inf['required']['package']);
             }
         }
         if (isset($deps['required']['subpackage'])) {
             if (!isset($deps['required']['subpackage'][0])) {
                 $deps['required']['subpackage'] = array($deps['required']['subpackage']);
             }
             foreach ($deps['required']['subpackage'] as $s) {
                 $inf['required']['package'][] = $s;
             }
         }
         if (isset($deps['required']['extension'])) {
             if (!isset($deps['required']['extension'][0])) {
                 $deps['required']['extension'] = array($deps['required']['extension']);
             }
             foreach ($deps['required']['extension'] as $s) {
                 $inf['required']['extension'][] = $s;
             }
         }
         if (isset($deps['optional']['package'])) {
             $inf['optional'] = array();
             $inf['optional']['package'] = $deps['optional']['package'];
             if (!isset($inf['optional']['package'][0])) {
                 $inf['optional']['package'] = array($inf['optional']['package']);
             }
         }
         if (isset($deps['optional']['extension'])) {
             if (!isset($deps['optional']['extension'][0])) {
                 $deps['optional']['extension'] = array($deps['optional']['extension']);
             }
             foreach ($deps['optional']['extension'] as $s) {
                 $inf['optional']['extension'][] = $s;
             }
         }
         if (isset($deps['optional']['subpackage'])) {
             if (!isset($deps['optional']['subpackage'][0])) {
                 $deps['optional']['subpackage'] = array($deps['optional']['subpackage']);
             }
             foreach ($deps['optional']['subpackage'] as $s) {
                 $inf['optional']['package'][] = $s;
             }
         }
         if (isset($deps['group'])) {
             $inf['groups'] = array();
             if (!isset($deps['group'][0])) {
                 $deps['group'] = array($deps['group']);
             }
             foreach ($deps['group'] as $group) {
                 $inf['groups'] = $group['attribs'];
             }
         }
         $ret[] = $inf;
     }
     return $ret;
 }
Example #2
0
 /**
  * Construct a new rest category object
  * 
  * @param string $savepath   full path to REST files
  * @param string $channel    the channel name
  * @param string $serverpath relative path within URI to REST files
  */
 function __construct($savepath, $channel, $serverpath = 'rest/')
 {
     parent::__construct($savepath, $channel, $serverpath);
 }