diff options
author | Remi Collet <fedora@famillecollet.com> | 2010-06-08 20:04:48 +0200 |
---|---|---|
committer | Remi Collet <fedora@famillecollet.com> | 2010-06-08 20:04:48 +0200 |
commit | 3c22a10c40837b1695ae04d120bbfc68da01059c (patch) | |
tree | 625b2a793b9999538356feee1cb9f8767f7f0d19 | |
parent | 53454761ed4d619b328d7cb5f628daafe127efb7 (diff) |
add TableRRepo class and use it
-rw-r--r-- | class/CommonTable.php | 20 | ||||
-rw-r--r-- | class/TablePearRepo.php | 2 | ||||
-rw-r--r-- | class/TableRRepo.php | 120 | ||||
-rw-r--r-- | refresh.php | 43 |
4 files changed, 142 insertions, 43 deletions
diff --git a/class/CommonTable.php b/class/CommonTable.php index 1102c4d..e049188 100644 --- a/class/CommonTable.php +++ b/class/CommonTable.php @@ -81,7 +81,7 @@ abstract class CommonTable $res = $this->db->exec($sql); if ($res===false) { $err = $this->db->errorInfo(); - throw new Exception($err[2]); + throw new Exception("\nSQL: $sql\nERROR: ".$err[2]."\nCODE:"); } return $res; } @@ -197,7 +197,7 @@ abstract class CommonTable * * @return hashtable */ - public function getAllArray($fieldkey, $fieldvalue) + public function getHashtable($fieldkey, $fieldvalue) { $crit = array('FIELDS' => array($fieldkey, $fieldvalue), 'ORDER' => $fieldkey); @@ -207,6 +207,22 @@ abstract class CommonTable } return $tab; } + + /** + * Retrieve a big array with all date from the table + * + * @param array|string $crit for the request + * + * @return array, index is rowid, value is a hastable + */ + public function getArray($crit='') + { + $tab = array(); + foreach ($this->request($crit) as $id => $data) { + $tab[$id] = $data; + } + return $tab; + } } ?>
\ No newline at end of file diff --git a/class/TablePearRepo.php b/class/TablePearRepo.php index b0b6465..6ff3eaa 100644 --- a/class/TablePearRepo.php +++ b/class/TablePearRepo.php @@ -90,7 +90,7 @@ class TablePearRepo extends CommonTable */ function getAllRepo() { - return $this->getAllArray('alias', 'url'); + return $this->getHashtable('alias', 'url'); } } diff --git a/class/TableRRepo.php b/class/TableRRepo.php new file mode 100644 index 0000000..75570c3 --- /dev/null +++ b/class/TableRRepo.php @@ -0,0 +1,120 @@ +<?php +/** + * Class for "rrepo" 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 TableRRepo extends CommonTable +{ + + /** + * Instanciate a TablePearRepo to manage pearrepo table + * + * @param object $db PDO instance of the DB connection + */ + function __construct($db) + { + parent::__construct($db, 'rrepo'); + } + + /** + * Create the table and populate it with known repo + * + * @return void + */ + protected function createTable() + { + + // Table schema + $sql = "CREATE TABLE `rrepo` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(30) NOT NULL, + `state` varchar(30) NOT NULL default 'stable', + `url` varchar(255) NOT NULL, + `active` tinyint NOT NULL default 1, + PRIMARY KEY (`id`), + UNIQUE KEY `name_state` (`name`,`state`) + ) DEFAULT CHARSET=utf8"; + + $this->exec($sql); + + // Some known repo, other could be add manually + $repos = array( + array( + "name" => "R", + "url" => "http://cran.at.r-project.org/src/contrib/PACKAGES" + ), + array( + "name" => "biocp", + "url" => "http://www.bioconductor.org/packages/release/bioc/src/contrib/PACKAGES" + ), + array( + "name" => "biocp", + "state" => "unstable", + "url" => "http://www.bioconductor.org/packages/devel/bioc/src/contrib/PACKAGES" + ), + array( + "name" => "bioca", + "url" => "http://www.bioconductor.org/packages/release/data/annotation/src/contrib/PACKAGES" + ), + array( + "name" => "bioca", + "state" => "unstable", + "url" => "http://www.bioconductor.org/packages/devel/data/annotation/src/contrib/PACKAGES" + ), + array( + "name" => "bioce", + "url" => "http://www.bioconductor.org/packages/release/data/experiment/src/contrib/PACKAGES" + ), + array( + "name" => "bioce", + "state" => "unstable", + "url" => "http://www.bioconductor.org/packages/devel/data/experiment/src/contrib/PACKAGES" + ) + ); + + foreach ($repos as $repo) { + $this->add($repo); + } + } + + /** + * Retrieve all the known repository + * + * @return hastable of alias => url + */ + function getAllRepo() + { + return $this->getArray(array('active'=>1)); + } +} + +?>
\ No newline at end of file diff --git a/refresh.php b/refresh.php index 53aef84..7547883 100644 --- a/refresh.php +++ b/refresh.php @@ -508,47 +508,10 @@ try { // ------------------------------------------------------------------- if ($_SERVER['argc']==1 || in_array('R', $_SERVER['argv'])) { - - $repos = array( - array( - "name" => "R", - "state" => "stable", - "url" => "http://cran.at.r-project.org/src/contrib/PACKAGES" - ), - //array("name"=>"R-forge","state"=>"unstable", "url" => "http://r-forge.r-project.org/src/contrib/PACKAGES"), - array( - "name" => "biocp", - "state" => "stable", - "url" => "http://www.bioconductor.org/packages/release/bioc/src/contrib/PACKAGES" - ), - array( - "name" => "biocp", - "state" => "unstable", - "url" => "http://www.bioconductor.org/packages/devel/bioc/src/contrib/PACKAGES" - ), - array( - "name" => "bioca", - "state" => "stable", - "url" => "http://www.bioconductor.org/packages/release/data/annotation/src/contrib/PACKAGES" - ), - array( - "name" => "bioca", - "state" => "unstable", - "url" => "http://www.bioconductor.org/packages/devel/data/annotation/src/contrib/PACKAGES" - ), - array( - "name" => "bioce", - "state" => "stable", - "url" => "http://www.bioconductor.org/packages/release/data/experiment/src/contrib/PACKAGES" - ), - array( - "name" => "bioce", - "state" => "unstable", - "url" => "http://www.bioconductor.org/packages/devel/data/experiment/src/contrib/PACKAGES" - ) - ); +// $tottot=0; - foreach ($repos as $repo) { + $pear = new TableRRepo($db); + foreach ($pear->request() as $repo) { echo date("r : ") . "Reading " . $repo["name"] . " (" . $repo["state"] . ")\n"; $index = @file_get_contents($repo["url"]); |