/** * 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; }
/** * 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); }