diff options
Diffstat (limited to 'class')
-rw-r--r-- | class/CommonTable.php | 40 | ||||
-rw-r--r-- | class/TableRpmRepo.php | 113 |
2 files changed, 149 insertions, 4 deletions
diff --git a/class/CommonTable.php b/class/CommonTable.php index 51c0cd6..a7d029d 100644 --- a/class/CommonTable.php +++ b/class/CommonTable.php @@ -147,9 +147,40 @@ abstract class CommonTable } /** + * Update a row in the table + * + * @param integer $id of the record + * @param hashtable $fields of key => value + * + * @return integer : number of row deleted + */ + public function update($id, array $fields) + { + $sql = "UPDATE `".$this->table."` "; + + $link = 'SET'; + foreach ($fields as $key => $value) { + $sql .= "$link `$key`="; + if (is_null($value)) { + $sql .= 'NULL'; + } else if (is_numeric($value)) { + $sql .= $value; + } else { + $sql .= "'".addslashes($value)."'"; + } + $link = ','; + } + $sql .= " WHERE `id`=".intval($id); + + $nb = $this->exec($sql); + + return $nb; + } + + /** * Create the table - * - * @return void + * + * @return void */ abstract protected function createTable(); @@ -219,14 +250,15 @@ abstract class CommonTable * Retrieve a big array with all date from the table * * @param array|string $crit for the request + * @param string $key name of the key for the return array * * @return array, index is rowid, value is a hastable */ - public function getArray($crit='') + public function getArray($crit='', $key='id') { $tab = array(); foreach ($this->request($crit) as $id => $data) { - $tab[$id] = $data; + $tab[$data[$key]] = $data; } return $tab; } diff --git a/class/TableRpmRepo.php b/class/TableRpmRepo.php new file mode 100644 index 0000000..a8ae44f --- /dev/null +++ b/class/TableRpmRepo.php @@ -0,0 +1,113 @@ +<?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; + } +} + +?>
\ No newline at end of file |