From 9a34fcffb23d9e18c216608040543c423b26264c Mon Sep 17 00:00:00 2001 From: Timothy Warren Date: Thu, 12 Apr 2012 13:44:31 -0400 Subject: [PATCH] Minor filestructure re-arrangement --- autoload.php | 4 +- db_pdo.php => classes/db_pdo.php | 0 classes/db_reg.php | 83 ++++++++++++++++ db_sql.php => classes/db_sql.php | 0 .../query_builder.php | 20 +++- drivers/firebird/firebird_driver.php | 11 --- drivers/firebird/firebird_result.php | 14 +++ drivers/firebird/firebird_sql.php | 91 +++++++++++++++--- drivers/mysql/mysql_driver.php | 4 + drivers/pgsql/pgsql_sql.php | 25 ++++- tests/db_files/FB_TEST_DB.FDB | Bin 802816 -> 802816 bytes tests/db_files/test_sqlite.db | Bin 3072 -> 3072 bytes 12 files changed, 220 insertions(+), 32 deletions(-) rename db_pdo.php => classes/db_pdo.php (100%) create mode 100644 classes/db_reg.php rename db_sql.php => classes/db_sql.php (100%) rename query_builder.php => classes/query_builder.php (98%) diff --git a/autoload.php b/autoload.php index 5d8f021..9465614 100644 --- a/autoload.php +++ b/autoload.php @@ -26,9 +26,7 @@ function do_include($path) } // Load base classes -require_once(BASE_PATH.'db_pdo.php'); -require_once(BASE_PATH.'db_sql.php'); -require_once(BASE_PATH.'query_builder.php'); +array_map('do_include', glob(BASE_PATH.'classes/*.php')); // Load PDO Drivers foreach(pdo_drivers() as $d) diff --git a/db_pdo.php b/classes/db_pdo.php similarity index 100% rename from db_pdo.php rename to classes/db_pdo.php diff --git a/classes/db_reg.php b/classes/db_reg.php new file mode 100644 index 0000000..8456370 --- /dev/null +++ b/classes/db_reg.php @@ -0,0 +1,83 @@ +get_db($key); + + // Set the current key in the registry + self::$instance[$key] = new Query_Builder($db_params); + } + + // -------------------------------------------------------------------------- + + /** + * Return exiting connections + * + * @return array + */ + public static function get_connections() + { + return array_keys(self::$instance); + } + + // -------------------------------------------------------------------------- + + /** + * Remove a database connection + * + * @param string $key + * @return void + */ + public static function remove_db($key) + { + unset(self::$instance[$key]); + } +} +// End of dbreg.php \ No newline at end of file diff --git a/db_sql.php b/classes/db_sql.php similarity index 100% rename from db_sql.php rename to classes/db_sql.php diff --git a/query_builder.php b/classes/query_builder.php similarity index 98% rename from query_builder.php rename to classes/query_builder.php index 1e19d2c..3b8ed3a 100644 --- a/query_builder.php +++ b/classes/query_builder.php @@ -53,6 +53,9 @@ class Query_Builder { // ) private $query_map; + // Convenience property for connection management + public $conn_name = ""; + /** * Constructor * @@ -72,6 +75,11 @@ class Query_Builder { $params = $p; } + + // Let the connection work with 'conn_db' or 'database' + $params->conn_db = ( ! isset($params->database)) + ? @$params->conn_db + : @$params->database; $params->type = strtolower($params->type); $dbtype = ($params->type !== 'postgresql') ? $params->type : 'pgsql'; @@ -80,7 +88,7 @@ class Query_Builder { switch($dbtype) { default: - $dsn = "dbname={$params->database}"; + $dsn = "dbname={$params->conn_db}"; if ( ! empty($params->host)) { @@ -91,6 +99,7 @@ class Query_Builder { { $dsn .= ";port={$params->port}"; } + break; case "sqlite": @@ -102,6 +111,9 @@ class Query_Builder { break; } + // Set the charset + //$dsn .= ";charset=utf-8"; + // Create the database connection if ( ! empty($params->user)) { @@ -112,6 +124,12 @@ class Query_Builder { $this->db = new $dbtype($dsn); } + if (isset($params->name)) + { + $this->conn_name = $params->name; + } + + // Make things just slightly shorter $this->sql =& $this->db->sql; } diff --git a/drivers/firebird/firebird_driver.php b/drivers/firebird/firebird_driver.php index e454fff..f46899a 100644 --- a/drivers/firebird/firebird_driver.php +++ b/drivers/firebird/firebird_driver.php @@ -45,17 +45,6 @@ class firebird extends DB_PDO { // -------------------------------------------------------------------------- - /** - * Close the link to the database and any existing results - */ - public function __destruct() - { - @fbird_close(); - @fbird_free_result($this->statement); - } - - // -------------------------------------------------------------------------- - /** * Doesn't apply to Firebird */ diff --git a/drivers/firebird/firebird_result.php b/drivers/firebird/firebird_result.php index fe6994b..3d08fa4 100644 --- a/drivers/firebird/firebird_result.php +++ b/drivers/firebird/firebird_result.php @@ -85,6 +85,20 @@ class Firebird_Result { return $all; } + + // -------------------------------------------------------------------------- + + /** + * Emulate PDOStatement::fetchColumn + * + * @param int $colum_num + * @return mixed + */ + public function fetchColumn($column_num=0) + { + $row = $this->fetch(PDO::FETCH_NUM); + return $row[$column_num]; + } // -------------------------------------------------------------------------- diff --git a/drivers/firebird/firebird_sql.php b/drivers/firebird/firebird_sql.php index e632f17..66491a1 100644 --- a/drivers/firebird/firebird_sql.php +++ b/drivers/firebird/firebird_sql.php @@ -232,10 +232,9 @@ class Firebird_SQL extends DB_SQL { public function table_list() { return << "SET NAMES UTF-8 COLLATE 'UTF-8'", + )); + parent::__construct("mysql:$dsn", $username, $password, $options); $class = __CLASS__.'_sql'; diff --git a/drivers/pgsql/pgsql_sql.php b/drivers/pgsql/pgsql_sql.php index 4553c9c..79becfd 100644 --- a/drivers/pgsql/pgsql_sql.php +++ b/drivers/pgsql/pgsql_sql.php @@ -277,6 +277,29 @@ SQL; ORDER BY "relname" ASC SQL; } - + + // -------------------------------------------------------------------------- + + /** + * Return sql to list columns of the specified table + * + * @param string $table + * @return string + */ + public function column_list($table) + { + return <<GAW#%mV5wD#L+$eL&Rh18;JSOvI_2Y_vT{SUy!7yn$ToRk3`*!a85hK1*_ z`s34=f2dsdBF~CEJMs#V=R}?xdBw<^iM&$e&EE3Lj%R;X{i#?hZ_Ipk-dnNG-FV~k zQnXgSwPu{}!%MC>*K^A{0b7M7c;udeZ`~!>D%Rk9aS?7hHTcq5gh$RCoGR9#q>>a?NJY~$*G=KmJn z+w7=K7L8GxW>Ei?bbKZ4CtI2g76yh{2V7_e?auaXa9il&i3B7#4!a6aN)2*e!b7gR z!R~XtU~lU%$sA%IIdmNy)BHu8RT4NQ;pl9!uSS!6WQPw|s_}RGrWW73Yo4{ycyPyD zu(zx6^LI=&4)2-yS21gvkdjDPTS#R6G}8hf-bTOo(eGRAzaIZLFe~<@ zYP|ced4Y5_?!Sfi=swYAAF0hIW-^`Ld?H!OD2BJwy-mI+;d$(zM!rm^NqXLhGp5(x z-pj~QT0T07KN$$UCr>ukshdQj{~;Zp)v2$Nr+Lnq56Un=+?C$b9fZ7jXm;1 zO@N6nfd!~Eztu~Dm2-Rv5|%HES7lJp6!lG>jNfL3u(SI*_-lEQcMArMqM_=q0wp!rp#tcSRR5D({UP)$|GAN zaDB+XB*KZegeq-=OVcE#G6ztX>~Q2IaXisJy0X$z?PRF@p^y0HzFAl$z0s1TvEI@; zJGMb_-iY4b&-A9V$rHV9rFQ1^reGAL+64lIIjZfY_D%|NE@w-WBlU)b2@}^;rWCo{ zmW6}@XqyB%mjG7YVLvZws5MN9{`_g7MYn8i%%iu5gX(cF&S6Z5-H}xecmg@Hz!pGhgE}hnUi| z&l3a^4-QPtZgVBOKvyd0@_lek_T2pBhgbaYu6d@S`SVT!hz|y4>9pQt2nbcvWoXs- ij{~!?AOLB^=u0B~6e{7P#3tWD%lU61_nU|2_5T4k+pHb{ delta 1847 zcma)-&ubGw6vy9AlBU^5?I5*^UCK6TYbl~hjfkbFJ&2`X@kgmp1#|LL6#WBqv1N}E z1Um;I2Px`NYl-MVK|~4)Uc9KKl2&iJ=}i#>&d$zjw~NKykllP|XWwT&*_~O(DL77H z%z(rBzE0TKI64WP{Ns`Z@Kt^Rm~rLlvFU}e#v^$RhnaSm)AP-4-mK;^`RH6a6%?lZgwYC9 zm<1dA;Dgx%Wwhb7*#aY&g9UkNTBS@>h-U{2;Cd2BQLU@en_#Y_*C5kG%m7n`xf z?^U$LpoeXu@*P{mc@Hxjc!amB;o8_q@p7{;##G?~(}Fz^ae6Vfu#04P#r1{^^4 z_wAYd%40+JEnb&xFI1Z$+YSO{KlwE&`&Y>G#6OA&_2EuLy?Y1wj+ujI`GSMg#tvl?N({6TLx6TNS zGSMg#tv&3vL%VH{>&7EA%0#0~wC1o|TDv6!w*#AJK!<P@_?;V^y<@ng86BvMx6ms6dx9zVR(ZWra&6*K>e_w0s57dKY>HuxTyk1W#G( T=BLaOlXcuZ>*22ZYk2A}PNX}i diff --git a/tests/db_files/test_sqlite.db b/tests/db_files/test_sqlite.db index 0f0f59bbcf56b4cfff0f22cd708f9d9bda8f0b18..fdc78a932ef284562811c45e8ae6ac74f4f538e6 100755 GIT binary patch delta 19 ZcmZpWXpop7#l$2wQN{^KZcJFf4FE2%1iAnK delta 19 ZcmZpWXpop7#l*OFqKp%e+?cR{8vr;C1?B(%