function listCategory($base, $category, $info = false, $channel = false)
    {
        if ($info == false) {
            $url = '%s'.'c/%s/packages.xml';
        } else {
            $url = '%s'.'c/%s/packagesinfo.xml';
        }
        $url = sprintf($url,
                    $base,
                    urlencode($category));

        // gives '404 Not Found' error when category doesn't exist
        $packagelist = $this->_rest->retrieveData($url, false, false, $channel);
        if (PEAR::isError($packagelist)) {
            return $packagelist;
        }
        if (!is_array($packagelist)) {
            return array();
        }

        if ($info == false) {
            if (!isset($packagelist['p'])) {
                return array();
            }
            if (!is_array($packagelist['p']) ||
                !isset($packagelist['p'][0])) { // only 1 pkg
                $packagelist = array($packagelist['p']);
            } else {
                $packagelist = $packagelist['p'];
            }
            return $packagelist;
        }

        // info == true
        if (!isset($packagelist['pi'])) {
            return array();
        }

        if (!is_array($packagelist['pi']) ||
            !isset($packagelist['pi'][0])) { // only 1 pkg
            $packagelist_pre = array($packagelist['pi']);
        } else {
            $packagelist_pre = $packagelist['pi'];
        }

        $packagelist = array();
        foreach ($packagelist_pre as $i => $item) {
            // compatibility with r/<latest.txt>.xml
            if (isset($item['a']['r'][0])) {
                // multiple releases
                $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'],
                                     'info' => $item['p']);
        }

        return $packagelist;
    }
function listCategory($base, $category, $info = false, $channel = false)
    {
        if ($info == false) {
            $url = '%s'.'c/%s/packages.xml';
        } else {
            $url = '%s'.'c/%s/packagesinfo.xml';
        }
        $url = sprintf($url,
                    $base,
                    urlencode($category));

        // gives '404 Not Found' error when category doesn't exist
        $packagelist = $this->_rest->retrieveData($url, false, false, $channel);
        if (PEAR::isError($packagelist)) {
            return $packagelist;
        }
        if (!is_array($packagelist)) {
            return array();
        }

        if ($info == false) {
            if (!isset($packagelist['p'])) {
                return array();
            }
            if (!is_array($packagelist['p']) ||
                !isset($packagelist['p'][0])) { // only 1 pkg
                $packagelist = array($packagelist['p']);
            } else {
                $packagelist = $packagelist['p'];
            }
            return $packagelist;
        }

        // info == true
        if (!isset($packagelist['pi'])) {
            return array();
        }

        if (!is_array($packagelist['pi']) ||
            !isset($packagelist['pi'][0])) { // only 1 pkg
            $packagelist_pre = array($packagelist['pi']);
        } else {
            $packagelist_pre = $packagelist['pi'];
        }

        $packagelist = array();
        foreach ($packagelist_pre as $i => $item) {
            // compatibility with r/<latest.txt>.xml
            if (isset($item['a']['r'][0])) {
                // multiple releases
                $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'],
                                     'info' => $item['p']);
        }

        return $packagelist;
    }
function listCategory ( $ base , $ category , $ info = false , $ channel = false ) { if ( $ info == false ) { $ url = '%s' . 'c/%s/packages.xml' ; } else { $ url = '%s' . 'c/%s/packagesinfo.xml' ; } $ url = sprintf ( $ url , $ base , urlencode ( $ category ) ) ; // gives '404 Not Found' error when category doesn't exist $ packagelist = $ this -> _rest -> retrieveData ( $ url , false , false , $ channel ) ; if ( PEAR :: isError ( $ packagelist ) ) { return $ packagelist ; } if ( ! is_array ( $ packagelist ) ) { return array ( ) ; } if ( $ info == false ) { if ( ! isset ( $ packagelist [ 'p' ] ) ) { return array ( ) ; } if ( ! is_array ( $ packagelist [ 'p' ] ) || ! isset ( $ packagelist [ 'p' ] [ 0 ] ) ) { // only 1 pkg $ packagelist = array ( $ packagelist [ 'p' ] ) ; } else { $ packagelist = $ packagelist [ 'p' ] ; } return $ packagelist ; } // info == true if ( ! isset ( $ packagelist [ 'pi' ] ) ) { return array ( ) ; } if ( ! is_array ( $ packagelist [ 'pi' ] ) || ! isset ( $ packagelist [ 'pi' ] [ 0 ] ) ) { // only 1 pkg $ packagelist_pre = array ( $ packagelist [ 'pi' ] ) ; } else { $ packagelist_pre = $ packagelist [ 'pi' ] ; } $ packagelist = array ( ) ; foreach ( $ packagelist_pre as $ i => $ item ) { // compatibility with r/<latest.txt>.xml if ( isset ( $ item [ 'a' ] [ 'r' ] [ 0 ] ) ) { // multiple releases $ 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' ] , 'info' => $ item [ 'p' ] ) ; } return $ packagelist ; }
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
List packages in a category of a REST server