<?php /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ /** * Class for "repo" Table management * * PHP version 5 * * Copyright © 2010 Remi Collet * * This file is part of rpmphp. * * rpmphp is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * rpmphp 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with rpmphp. If not, see <http://www.gnu.org/licenses/>. * * @category Main * @package RPMPHP * * @author Remi Collet <unknown@unknwown.com> * @author Johan Cwiklinski <johan@x-tnd.be> * @copyright 2010 Remi Collet * @license http://www.gnu.org/licenses/agpl-3.0-standalone.html AGPL License 3.0 or (at your option) any later version * @link http://github.com/remicollet/rpmphp/ * @since The begining of times. */ class TableRpmRepo extends CommonTable { /** * Instanciate a TablePearRepo to manage pearrepo table * * @param object $db PDO instance of the DB connection */ function __construct($db) { parent::__construct($db, 'repo'); } /** * Create the table and populate it with known repo * * @return void */ protected function createTable() { // Table schema $sql = "CREATE TABLE IF NOT EXISTS `repo` ( `id` int(11) NOT NULL, `main` varchar(16) NOT NULL, `sub` varchar(16) NOT NULL, `url` varchar(200) NOT NULL, `stamp` int(11) DEFAULT NULL, `active` tinyint(1) NOT NULL DEFAULT '1', PRIMARY KEY (`ID`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8"; $this->exec($sql); // add 'devel' repo, other could be add manually $this->add( array('id' => 999, 'main' => 'devel', 'sub' => '', 'url' => 'http://download.fedora.redhat.com/pub/fedora/linux/development/rawhide/source/SRPMS/') ); } /** * Retrieve all the known repository * * @param boolean $active true for only active repo (false for all) * * @return hastable of id => hastable */ function getAllRepo($active=true) { $crit = array("ORDER" => 'id'); if ($active) { $crit['active'] = 1; } return $this->getArray($crit); } /** * Retrieve all the known repository * * @param boolean $active true for only active repo (false for all) * * @return hastable of alias => url */ function getAllRepoHash($active=true) { $repos = $this->getAllRepo($active); $res = array(); foreach ($repos as $repo) { $res[$repo['main']][$repo['sub']] = $repo; } return $res; } /** * Retrieve the greater update date */ function getMaxStamp() { $sql='SELECT MAX(stamp) AS stamp FROM '.$this->table; foreach ($this->request($sql) as $res) { return $res['stamp']; } return 0; } } ?>