From 377c319bd2e023b11935e7430b84d2bc7efd64a3 Mon Sep 17 00:00:00 2001 From: Timothy Warren Date: Tue, 7 Feb 2012 15:53:46 -0500 Subject: [PATCH] Created abstract base database manip class --- src/common/db_pdo.php | 23 +++++++++++++++++++++++ src/databases/firebird.php | 16 +++++++++++++++- src/databases/firebird_manip.php | 7 +------ src/databases/mysql_manip.php | 8 ++++---- src/databases/odbc_manip.php | 7 ++++--- src/databases/pgsql_manip.php | 6 +++--- src/databases/sqlite_manip.php | 7 +------ 7 files changed, 51 insertions(+), 23 deletions(-) diff --git a/src/common/db_pdo.php b/src/common/db_pdo.php index cdadf8f..944f51b 100644 --- a/src/common/db_pdo.php +++ b/src/common/db_pdo.php @@ -24,6 +24,9 @@ abstract class DB_PDO extends PDO { function __construct($dsn, $username=NULL, $password=NULL, $driver_options=array()) { parent::__construct($dsn, $username, $password, $driver_options); + + $class = __CLASS__.'_manip'; + $this->manip = new $class; } // ------------------------------------------------------------------------- @@ -135,4 +138,24 @@ abstract class DB_PDO extends PDO { */ abstract function num_rows(); } + +// ------------------------------------------------------------------------- + +/** + * Abstract parent for database manipulation subclasses + */ +abstract class db_manip { + + /** + * Get database-specific sql to create a new table + * + * @param string $name + * @param array $columns + * @param array $constraints + * @param array $indexes + * + * @return string + */ + abstract function create_table($name, $columns, $constraints, $indexes); +} // End of db_pdo.php \ No newline at end of file diff --git a/src/databases/firebird.php b/src/databases/firebird.php index ef7f72f..3f8d4e6 100644 --- a/src/databases/firebird.php +++ b/src/databases/firebird.php @@ -156,7 +156,21 @@ class firebird { */ function num_rows() { - // TODO: Implement + $count = 0; + + if(isset($this->statement)) + { + while($row = $this->fetch()) + { + $count++; + } + } + else + { + return FALSE; + } + + return $count; } } // End of firebird.php \ No newline at end of file diff --git a/src/databases/firebird_manip.php b/src/databases/firebird_manip.php index 674b7e0..f55b834 100644 --- a/src/databases/firebird_manip.php +++ b/src/databases/firebird_manip.php @@ -17,12 +17,7 @@ * * PDO-firebird isn't stable, so this is a wrapper of the ibase_ functions. */ -class firebird_manip extends firebird { - - function __construct($db, $user="sysdba", $pass="masterkey") - { - parent::__construct($db, $user, $pass); - } +class firebird_manip extends db_manip{ function create_table($name, $fields, $constraints=array()) { diff --git a/src/databases/mysql_manip.php b/src/databases/mysql_manip.php index bf6a8c2..3561247 100644 --- a/src/databases/mysql_manip.php +++ b/src/databases/mysql_manip.php @@ -15,11 +15,11 @@ /** * MySQL Database manipulation class */ - class MySQL_manip extends MySQL { + class MySQL_manip extends db_manip{ - function __construct($dsn, $user=null, $pass=null, $opt=array()) + function create_table($name, $columns, $constraints, $indexes) { - parent::__construct($dsn, $user, $pass, $opt); + //TODO: implement } } -//End of mysqlL_manip.php \ No newline at end of file +//End of mysql_manip.php \ No newline at end of file diff --git a/src/databases/odbc_manip.php b/src/databases/odbc_manip.php index 5ef49a7..0f55e4f 100644 --- a/src/databases/odbc_manip.php +++ b/src/databases/odbc_manip.php @@ -17,11 +17,12 @@ * * @extends ODBC */ -class ODBC_manip extends ODBC { +class ODBC_manip extends db_manip { - function __construct($dsn, $username=null, $password=null, $options=array()) + function create_table() { - parent::__construct("odbc:$dsn", $username, $password, $options); + //ODBC can't know how to create a table + return FALSE; } } // End of odbc_manip.php \ No newline at end of file diff --git a/src/databases/pgsql_manip.php b/src/databases/pgsql_manip.php index f37d01a..ace0c62 100644 --- a/src/databases/pgsql_manip.php +++ b/src/databases/pgsql_manip.php @@ -17,11 +17,11 @@ * * @extends PgSQL */ -class pgSQL_manip extends pgSQL { +class pgSQL_manip extends db_manip { - function __construct($dsn, $username=null, $password=null, $options=array()) + function create_table($name, $columns, $constraints, $indexes) { - parent::__construct($dsn, $username, $password, $options); + //TODO: implement } } diff --git a/src/databases/sqlite_manip.php b/src/databases/sqlite_manip.php index faf0e35..3200663 100644 --- a/src/databases/sqlite_manip.php +++ b/src/databases/sqlite_manip.php @@ -15,12 +15,7 @@ /** * SQLite Database manipulation class */ -class SQLite_manip extends SQLite { - - function __construct($dsn) - { - parent::__construct($dsn); - } +class SQLite_manip extends db_manip { /** * Convenience function to create a new table