diff options
author | Remi Collet <fedora@famillecollet.com> | 2010-11-01 09:25:57 +0100 |
---|---|---|
committer | Remi Collet <fedora@famillecollet.com> | 2010-11-01 09:25:57 +0100 |
commit | 72eaeb9aedf14936ae7601ed0ac61c4014943129 (patch) | |
tree | 101e1a68f27664718a4d2196988cb570b886caff | |
parent | c28b13eaeca04574994d5a7c2320bbce4c63450f (diff) |
add TableAcls class ans use it in refresh
-rw-r--r-- | class/CommonTable.php | 20 | ||||
-rw-r--r-- | class/TableAcls.php | 63 | ||||
-rw-r--r-- | refresh.php | 56 | ||||
-rw-r--r-- | testdb.php | 2 |
4 files changed, 98 insertions, 43 deletions
diff --git a/class/CommonTable.php b/class/CommonTable.php index 0aeeb29..b7cc93e 100644 --- a/class/CommonTable.php +++ b/class/CommonTable.php @@ -306,6 +306,26 @@ abstract class CommonTable } return $tab; } + + /** + * Truncate the table + */ + public function truncate() + { + return $this->exec('TRUNCATE `'.$this->table.'`'); + } + + /** + * Get the number of rows in the table + */ + public function getCount() + { + $sql = 'SELECT COUNT(*) AS cpt FROM `'.$this->table.'`'; + foreach ($this->request($sql) as $row) { + return ($row['cpt']); + } + return 0; + } } ?>
\ No newline at end of file diff --git a/class/TableAcls.php b/class/TableAcls.php new file mode 100644 index 0000000..bbf72a1 --- /dev/null +++ b/class/TableAcls.php @@ -0,0 +1,63 @@ +<?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 TableAcls extends CommonTable +{ + /** + * Create the table and populate it with known repo + * + * @return void + */ + protected function createTable() + { + // Table schema + $sql = "CREATE TABLE IF NOT EXISTS `acls` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `collection` varchar(100) NOT NULL, + `name` varchar(100) NOT NULL, + `summary` varchar(200) NOT NULL, + `owner` varchar(50) DEFAULT NULL, + `qa` varchar(50) DEFAULT NULL, + `cc` varchar(100) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `name` (`name`), + KEY `collection` (`collection`), + KEY `owner` (`owner`) + ) ENGINE=MyISAM DEFAULT CHARSET=utf8;"; + $this->exec($sql); + } +} +?>
\ No newline at end of file diff --git a/refresh.php b/refresh.php index 4ab482a..117af84 100644 --- a/refresh.php +++ b/refresh.php @@ -477,26 +477,7 @@ try { // ------------------------------------------------------------------- if ($_SERVER['argc']==1 || in_array('owner', $_SERVER['argv'])) { - $sql="CREATE TABLE IF NOT EXISTS `acls` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `collection` varchar(100) NOT NULL, - `name` varchar(100) NOT NULL, - `summary` varchar(200) NOT NULL, - `owner` varchar(50) DEFAULT NULL, - `qa` varchar(50) DEFAULT NULL, - `cc` varchar(100) DEFAULT NULL, - PRIMARY KEY (`ID`), - KEY `name` (`name`), - KEY `collection` (`collection`), - KEY `owner` (`owner`)) ENGINE=MyISAM"; - - if ($db->exec($sql)!==false) { - echo date("r : ") . "Check table 'acls' ok\n"; - } else { - echo date("r : ") . "SQL ERROR = " . - implode(" ", $db->errorInfo()) . "\n"; - } - + $acls = new TableAcls($db); $fic=fopen( "https://admin.fedoraproject.org/pkgdb/lists/bugzilla?tg_format=plain", "r" @@ -504,42 +485,31 @@ try { if (!$fic) { echo date("r : ") . "ERROR reading pkgdb\n"; } else { - $sql="TRUNCATE `acls`"; - $nb=$db->exec($sql); - if ($nb===false) { - echo date("r : ") . "SQL ERROR = " . - implode(" ", $db->errorInfo()) . "\n"; - } else { - echo date("r : ") . "Delete $nb packages\n"; - } + $nb = $acls->getCount(); + $acls->truncate(); + echo date("r : ") . "Delete $nb owners\n"; for ($tot=0 ; $line=fgetcsv($fic, 1024, '|'); ) { if (count($line)>5 && substr($line[0], 0, 1)!='#') { for ($i=0; $i<6; $i++) { $line[$i]=trim($line[$i]); } - $sql=sprintf( - "INSERT INTO `acls` - SET collection='%s', name='%s', summary='%s'", - $line[0], - $line[1], - addslashes($line[2]) + $input = array( + 'collection' => $line[0], + 'name' => $line[1], + 'summary' => $line[2], ); if (!empty($line[3])) { - $sql .= sprintf(", owner='%s'", $line[3]); + $input['owner'] = $line[3]; } if (!empty($line[4])) { - $sql .= sprintf(", qa='%s'", $line[4]); + $input['qa'] = $line[3]; } if (!empty($line[5])) { - $sql .= sprintf(", cc='%s'", $line[5]); + $input['cc'] = $line[3]; } - $nb=$db->exec($sql); - if ($nb) { - $tot+=$nb; - } else { - echo date("r : ") . "SQL ERROR = " . - implode(" ", $db->errorInfo()) . "\n"; + if ($acls->add($input)) { + $tot++; } } } @@ -94,4 +94,6 @@ foreach($up->request(array('type'=>'test', 'ORDER'=>'name')) as $upstr) { } $rpm = new TableRpm($db); +$acl = new TableAcls($db); +echo "Acls number : ".$acl->getCount()."\n"; ?> |