* * @category Main * @package FedoraClient * * @author Remi Collet * @author Johan Cwiklinski * @copyright 2010 Remi Collet * @license http://www.gnu.org/licenses/lgpl-2.1.txt LGPL License 2.1 or (at your option) any later version * @link http://github.com/remicollet/rpmphp/ * @since The begining of times. */ class FedoraPkgdb extends FedoraClient { private $suburl; function __construct (array $options=array()) { parent::__construct('https://admin.fedoraproject.org/pkgdb/', $options); $this->suburl = 'acls/name/'; $this->logDebug( 3, __CLASS__."::".__FUNCTION__ ); } function getBranches($refresh=false) { $rep = ($refresh ? false : $this->cache->get(__FUNCTION__, __CLASS__)); if ($rep) { $this->logDebug( 2, __CLASS__."::".__FUNCTION__."() get from cache" ); } else { $rep =$this->sendRequest('collections'); $this->cache->save($rep, __FUNCTION__, __CLASS__); $this->logDebug( 2, __CLASS__."::".__FUNCTION__."() save to cache" ); } $branches = array(); if (isset($rep['collections'])) { foreach ($rep['collections'] as $coll) { if (isset($coll[0]['branchname'])) { $branches[$coll[0]['branchname']] = $coll[0]; } } } return $branches; } function getPackageURL($name) { return $this->url.$this->suburl.$name; } function getPackageInfo($name, $refresh=false) { $url=$this->suburl.urlencode($name); $rep = ($refresh ? false : $this->cache->get($url, __CLASS__)); if ($rep) { $this->logDebug( 2, __CLASS__."::".__FUNCTION__."($name) get from cache" ); } else { $rep =$this->sendRequest($url); $this->cache->save($rep, $url, __CLASS__); $this->logDebug( 2, __CLASS__."::".__FUNCTION__."($name) save to cache" ); } if (isset($rep['status']) && !$rep['status']) { $this->logDebug( 1, __CLASS__."::".__FUNCTION__."($name) ".$rep['message'] ); return false; } $this->logDebug(8,print_r($rep,true)); $branches = array(); foreach ($rep['packageListings'] as $pack) { $branches[$pack['collection']['branchname']] = $pack; } $this->logDebug(7,print_r($branches,true)); return $branches; } function getBranch($name, $refresh=false) { $branches = $this->getBranches($refresh); if (isset($branches[$name])) { return $branches[$name]; } return false; } function getCritPath($refresh=false) { $url="lists/critpath"; $rep = ($refresh ? false : $this->cache->get($url, __CLASS__)); if ($rep) { $this->logDebug( 2, __CLASS__."::".__FUNCTION__." get from cache" ); } else { $rep =$this->sendRequest($url); $this->cache->save($rep, $url, __CLASS__); $this->logDebug( 2, __CLASS__."::".__FUNCTION__." save to cache" ); } return $rep['pkgs']; } } ?>