function listCategory($base, $category, $info = false, $channel = false)
    {
        // gives '404 Not Found' error when category doesn't exist
        $packagelist = $this->_rest->retrieveData($base.'c/'.urlencode($category).'/packages.xml', false, false, $channel);
        if (PEAR::isError($packagelist)) {
            return $packagelist;
        }

        if (!is_array($packagelist) || !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'];
        }

        if ($info == true) {
            // get individual package info
            PEAR::pushErrorHandling(PEAR_ERROR_RETURN);
            foreach ($packagelist as $i => $packageitem) {
                $url = sprintf('%s'.'r/%s/latest.txt',
                        $base,
                        strtolower($packageitem['_content']));
                $version = $this->_rest->retrieveData($url, false, false, $channel);
                if (PEAR::isError($version)) {
                    break; // skipit
                }
                $url = sprintf('%s'.'r/%s/%s.xml',
                        $base,
                        strtolower($packageitem['_content']),
                        $version);
                $info = $this->_rest->retrieveData($url, false, false, $channel);
                if (PEAR::isError($info)) {
                    break; // skipit
                }
                $packagelist[$i]['info'] = $info;
            }
            PEAR::popErrorHandling();
        }

        return $packagelist;
    }
function listCategory($base, $category, $info = false, $channel = false)
    {
        // gives '404 Not Found' error when category doesn't exist
        $packagelist = $this->_rest->retrieveData($base.'c/'.urlencode($category).'/packages.xml', false, false, $channel);
        if (PEAR::isError($packagelist)) {
            return $packagelist;
        }

        if (!is_array($packagelist) || !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'];
        }

        if ($info == true) {
            // get individual package info
            PEAR::pushErrorHandling(PEAR_ERROR_RETURN);
            foreach ($packagelist as $i => $packageitem) {
                $url = sprintf('%s'.'r/%s/latest.txt',
                        $base,
                        strtolower($packageitem['_content']));
                $version = $this->_rest->retrieveData($url, false, false, $channel);
                if (PEAR::isError($version)) {
                    break; // skipit
                }
                $url = sprintf('%s'.'r/%s/%s.xml',
                        $base,
                        strtolower($packageitem['_content']),
                        $version);
                $info = $this->_rest->retrieveData($url, false, false, $channel);
                if (PEAR::isError($info)) {
                    break; // skipit
                }
                $packagelist[$i]['info'] = $info;
            }
            PEAR::popErrorHandling();
        }

        return $packagelist;
    }
function listCategory ( $ base , $ category , $ info = false , $ channel = false ) { // gives '404 Not Found' error when category doesn't exist $ packagelist = $ this -> _rest -> retrieveData ( $ base . 'c/' . urlencode ( $ category ) . '/packages.xml' , false , false , $ channel ) ; if ( PEAR :: isError ( $ packagelist ) ) { return $ packagelist ; } if ( ! is_array ( $ packagelist ) || ! 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' ] ; } if ( $ info == true ) { // get individual package info PEAR :: pushErrorHandling ( PEAR_ERROR_RETURN ) ; foreach ( $ packagelist as $ i => $ packageitem ) { $ url = sprintf ( '%s' . 'r/%s/latest.txt' , $ base , strtolower ( $ packageitem [ '_content' ] ) ) ; $ version = $ this -> _rest -> retrieveData ( $ url , false , false , $ channel ) ; if ( PEAR :: isError ( $ version ) ) { break ; // skipit } $ url = sprintf ( '%s' . 'r/%s/%s.xml' , $ base , strtolower ( $ packageitem [ '_content' ] ) , $ version ) ; $ info = $ this -> _rest -> retrieveData ( $ url , false , false , $ channel ) ; if ( PEAR :: isError ( $ info ) ) { break ; // skipit } $ packagelist [ $ i ] [ 'info' ] = $ info ; } PEAR :: popErrorHandling ( ) ; } return $ packagelist ; }
List 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 a category of a REST server