<?php /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ /** * FedoraClient is a PHP class to interact with web services * * PHP version 5 * * Copyright (C) 2010 Remi Collet * http://github.com/remicollet/rpmphp. * * Inspired from python-fedora * * FedoraClient is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * FedoraClient is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * See <http://www.gnu.org/licenses/> * * @category Main * @package FedoraClient * * @author Remi Collet <unknown@unknwown.com> * @author Johan Cwiklinski <johan@x-tnd.be> * @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']; } } ?>