From 3c22a10c40837b1695ae04d120bbfc68da01059c Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 8 Jun 2010 20:04:48 +0200 Subject: add TableRRepo class and use it --- class/CommonTable.php | 20 +++++++- class/TablePearRepo.php | 2 +- class/TableRRepo.php | 120 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 139 insertions(+), 3 deletions(-) create mode 100644 class/TableRRepo.php (limited to 'class') 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 @@ +. + * + * @category Main + * @package RPMPHP + * + * @author Remi Collet + * @author Johan Cwiklinski + * @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 -- cgit