Source for file 11.php
Documentation is available at 11.php
* PEAR_REST_11 - implement faster list-all/remote-list command
* @author Greg Beaver <cellog@php.net>
* @copyright 1997-2009 The Authors
* @license http://opensource.org/licenses/bsd-license.php New BSD License
* @version CVS: $Id: 11.php 313023 2011-07-06 19:17:11Z dufuz $
* @link http://pear.php.net/package/PEAR
* @since File available since Release 1.4.3
* For downloading REST xml/txt files
require_once 'PEAR/REST.php';
* @author Greg Beaver <cellog@php.net>
* @copyright 1997-2009 The Authors
* @license http://opensource.org/licenses/bsd-license.php New BSD License
* @version Release: 1.9.4
* @link http://pear.php.net/package/PEAR
* @since Class available since Release 1.4.3
$this->_rest = &new PEAR_REST($config, $options);
function listAll($base, $dostable, $basic = true , $searchpackage = false , $searchsummary = false , $channel = false )
$categorylist = $this->_rest->retrieveData($base . 'c/categories.xml', false , false , $channel);
if (!is_array($categorylist['c']) || !isset ($categorylist['c'][0 ])) {
$categorylist['c'] = array ($categorylist['c']);
foreach ($categorylist['c'] as $progress => $category) {
$category = $category['_content'];
'c/' . urlencode($category) . '/packagesinfo.xml', false , false , $channel);
if (!is_array($packagesinfo) || !isset ($packagesinfo['pi'])) {
if (!is_array($packagesinfo['pi']) || !isset ($packagesinfo['pi'][0 ])) {
$packagesinfo['pi'] = array ($packagesinfo['pi']);
foreach ($packagesinfo['pi'] as $packageinfo) {
if (empty ($packageinfo)) {
$info = $packageinfo['p'];
$releases = isset ($packageinfo['a']) ? $packageinfo['a'] : false;
if (!isset ($releases['r'][0 ])) {
$releases['r'] = array ($releases['r']);
foreach ($releases['r'] as $release) {
if ($dostable && $release['s'] == 'stable') {
if (!isset ($stable) && $release['s'] == 'stable') {
if (!isset ($unstable) && $release['s'] != 'stable') {
$unstable = $release['v'];
if (isset ($latest) && !isset ($state)) {
if (isset ($latest) && isset ($stable) && isset ($unstable)) {
if ($basic) { // remote-list command
// $state is not set if there are no releases
if (isset ($state) && $state == 'stable') {
$ret[$package] = array ('stable' => $latest);
$ret[$package] = array ('stable' => '-n/a-');
$ret[$package] = array ('stable' => $latest);
$latest = $unstable = $stable;
if ($latest && isset ($packageinfo['deps'])) {
!isset ($packageinfo['deps'][0 ])
$packageinfo['deps'] = array ($packageinfo['deps']);
foreach ($packageinfo['deps'] as $dep) {
if ($dep['v'] == $latest) {
if (isset ($d['required'])) {
require_once 'PEAR/PackageFile/v2.php';
foreach ($tdeps as $dep) {
if ($dep['type'] !== 'pkg') {
'description' => $info['d'],
'category' => $info['ca']['_content'],
* List all categories of a REST server
* @param string $base base URL of the server
* @return array of categorynames
$categorylist = $this->_rest->retrieveData($base . 'c/categories.xml', false , false , $channel);
if (!is_array($categorylist) || !isset ($categorylist['c'])) {
if (isset ($categorylist['c']['_content'])) {
$categorylist['c'] = array ($categorylist['c']);
return $categorylist['c'];
* List packages in a category of a REST server
* @param string $base base URL of the server
* @param string $category name of the category
* @param boolean $info also download full package info
* @return array of packagenames
function listCategory($base, $category, $info = false , $channel = false )
$url = '%s'. 'c/%s/packages.xml';
$url = '%s'. 'c/%s/packagesinfo.xml';
// gives '404 Not Found' error when category doesn't exist
$packagelist = $this->_rest->retrieveData($url, false , false , $channel);
if (!isset ($packagelist['p'])) {
!isset ($packagelist['p'][0 ])) { // only 1 pkg
$packagelist = array ($packagelist['p']);
$packagelist = $packagelist['p'];
if (!isset ($packagelist['pi'])) {
!isset ($packagelist['pi'][0 ])) { // only 1 pkg
$packagelist_pre = array ($packagelist['pi']);
$packagelist_pre = $packagelist['pi'];
foreach ($packagelist_pre as $i => $item) {
// compatibility with r/<latest.txt>.xml
if (isset ($item['a']['r'][0 ])) {
$item['p']['v'] = $item['a']['r'][0 ]['v'];
$item['p']['st'] = $item['a']['r'][0 ]['s'];
} elseif (isset ($item['a'])) {
// first and only release
$item['p']['v'] = $item['a']['r']['v'];
$item['p']['st'] = $item['a']['r']['s'];
$packagelist[$i] = array ('attribs' => $item['p']['r'],
'_content' => $item['p']['n'],
* Return an array containing all of the states that are more stable than
* or equal to the passed in state
* @param string Release state
* @param boolean Determines whether to include $state in the list
* @return false|arrayFalse if $state is not a valid release state
static $states = array ('snapshot', 'devel', 'alpha', 'beta', 'stable');
$i = array_search ($state, $states);
Documentation generated on Wed, 06 Jul 2011 23:30:24 +0000 by phpDocumentor 1.4.3. PEAR Logo Copyright © PHP Group 2004.
|