From 1382a1021f6393230440b8e44101a29524c53c6e Mon Sep 17 00:00:00 2001 From: David Grudl Date: Sat, 22 Jun 2013 16:54:51 +0200 Subject: [PATCH] all file names correspond with class name --- .../{firebird.php => DibiFirebirdDriver.php} | 0 ...{mssql2005.php => DibiMsSql2005Driver.php} | 2 +- ...flector.php => DibiMsSql2005Reflector.php} | 284 +++++------ .../{mssql.php => DibiMsSqlDriver.php} | 2 +- ...l.reflector.php => DibiMsSqlReflector.php} | 450 +++++++++--------- .../{mysql.php => DibiMySqlDriver.php} | 2 +- ...l.reflector.php => DibiMySqlReflector.php} | 0 .../{mysqli.php => DibiMySqliDriver.php} | 2 +- dibi/drivers/{odbc.php => DibiOdbcDriver.php} | 0 .../{oracle.php => DibiOracleDriver.php} | 0 dibi/drivers/{pdo.php => DibiPdoDriver.php} | 4 +- .../{postgre.php => DibiPostgreDriver.php} | 0 .../{sqlite3.php => DibiSqlite3Driver.php} | 2 +- .../{sqlite.php => DibiSqliteDriver.php} | 2 +- ....reflector.php => DibiSqliteReflector.php} | 0 dibi/libs/DibiConnection.php | 6 +- dibi/libs/DibiDataSource.php | 4 +- dibi/libs/DibiTranslator.php | 2 +- 18 files changed, 381 insertions(+), 381 deletions(-) rename dibi/drivers/{firebird.php => DibiFirebirdDriver.php} (100%) rename dibi/drivers/{mssql2005.php => DibiMsSql2005Driver.php} (99%) rename dibi/drivers/{mssql2005.reflector.php => DibiMsSql2005Reflector.php} (95%) rename dibi/drivers/{mssql.php => DibiMsSqlDriver.php} (99%) rename dibi/drivers/{mssql.reflector.php => DibiMsSqlReflector.php} (96%) mode change 100755 => 100644 rename dibi/drivers/{mysql.php => DibiMySqlDriver.php} (99%) rename dibi/drivers/{mysql.reflector.php => DibiMySqlReflector.php} (100%) rename dibi/drivers/{mysqli.php => DibiMySqliDriver.php} (99%) rename dibi/drivers/{odbc.php => DibiOdbcDriver.php} (100%) rename dibi/drivers/{oracle.php => DibiOracleDriver.php} (100%) rename dibi/drivers/{pdo.php => DibiPdoDriver.php} (98%) rename dibi/drivers/{postgre.php => DibiPostgreDriver.php} (100%) rename dibi/drivers/{sqlite3.php => DibiSqlite3Driver.php} (99%) rename dibi/drivers/{sqlite.php => DibiSqliteDriver.php} (99%) rename dibi/drivers/{sqlite.reflector.php => DibiSqliteReflector.php} (100%) diff --git a/dibi/drivers/firebird.php b/dibi/drivers/DibiFirebirdDriver.php similarity index 100% rename from dibi/drivers/firebird.php rename to dibi/drivers/DibiFirebirdDriver.php diff --git a/dibi/drivers/mssql2005.php b/dibi/drivers/DibiMsSql2005Driver.php similarity index 99% rename from dibi/drivers/mssql2005.php rename to dibi/drivers/DibiMsSql2005Driver.php index de888801..d502dee3 100644 --- a/dibi/drivers/mssql2005.php +++ b/dibi/drivers/DibiMsSql2005Driver.php @@ -10,7 +10,7 @@ */ -require_once dirname(__FILE__) . '/mssql2005.reflector.php'; +require_once dirname(__FILE__) . '/DibiMsSql2005Reflector.php'; /** diff --git a/dibi/drivers/mssql2005.reflector.php b/dibi/drivers/DibiMsSql2005Reflector.php similarity index 95% rename from dibi/drivers/mssql2005.reflector.php rename to dibi/drivers/DibiMsSql2005Reflector.php index ced1d584..2a19cfc2 100644 --- a/dibi/drivers/mssql2005.reflector.php +++ b/dibi/drivers/DibiMsSql2005Reflector.php @@ -1,142 +1,142 @@ -driver = $driver; - } - - - - /** - * Returns list of tables. - * @return array - */ - public function getTables() - { - $res = $this->driver->query('SELECT TABLE_NAME, TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES'); - $tables = array(); - while ($row = $res->fetch(FALSE)) { - $tables[] = array( - 'name' => $row[0], - 'view' => isset($row[1]) && $row[1] === 'VIEW', - ); - } - return $tables; - } - - - - /** - * Returns metadata for all columns in a table. - * @param string - * @return array - */ - public function getColumns($table) - { - $res = $this->driver->query(" - SELECT c.name as COLUMN_NAME, c.is_identity AS AUTO_INCREMENT - FROM sys.columns c - INNER JOIN sys.tables t ON c.object_id = t.object_id - WHERE t.name = {$this->driver->escape($table, dibi::TEXT)} - "); - - $autoIncrements = array(); - while ($row = $res->fetch(TRUE)) { - $autoIncrements[$row['COLUMN_NAME']] = (bool) $row['AUTO_INCREMENT']; - } - - $res = $this->driver->query(" - SELECT C.COLUMN_NAME, C.DATA_TYPE, C.CHARACTER_MAXIMUM_LENGTH , C.COLUMN_DEFAULT , C.NUMERIC_PRECISION, C.NUMERIC_SCALE , C.IS_NULLABLE, Case When Z.CONSTRAINT_NAME Is Null Then 0 Else 1 End As IsPartOfPrimaryKey - FROM INFORMATION_SCHEMA.COLUMNS As C - Outer Apply ( - SELECT CCU.CONSTRAINT_NAME - FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS As TC - Join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE As CCU - On CCU.CONSTRAINT_NAME = TC.CONSTRAINT_NAME - WHERE TC.TABLE_SCHEMA = C.TABLE_SCHEMA - And TC.TABLE_NAME = C.TABLE_NAME - And TC.CONSTRAINT_TYPE = 'PRIMARY KEY' - And CCU.COLUMN_NAME = C.COLUMN_NAME - ) As Z - WHERE C.TABLE_NAME = {$this->driver->escape($table, dibi::TEXT)} - "); - $columns = array(); - while ($row = $res->fetch(TRUE)) { - $columns[] = array( - 'name' => $row['COLUMN_NAME'], - 'table' => $table, - 'nativetype' => strtoupper($row['DATA_TYPE']), - 'size' => $row['CHARACTER_MAXIMUM_LENGTH'], - 'unsigned' => TRUE, - 'nullable' => $row['IS_NULLABLE'] === 'YES', - 'default' => $row['COLUMN_DEFAULT'], - 'autoincrement' => $autoIncrements[$row['COLUMN_NAME']], - 'vendor' => $row, - ); - } - return $columns; - } - - - - /** - * Returns metadata for all indexes in a table. - * @param string - * @return array - */ - public function getIndexes($table) - { - $keyUsagesRes = $this->driver->query("SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = {$this->driver->escape($table, dibi::TEXT)}"); - $keyUsages = array(); - while( $row = $keyUsagesRes->fetch(TRUE) ) { - $keyUsages[$row['CONSTRAINT_NAME']][(int) $row['ORDINAL_POSITION'] - 1] = $row['COLUMN_NAME']; - } - - $res = $this->driver->query("SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = {$this->driver->escape($table, dibi::TEXT)}"); - $indexes = array(); - while ($row = $res->fetch(TRUE)) { - $indexes[$row['CONSTRAINT_NAME']]['name'] = $row['CONSTRAINT_NAME']; - $indexes[$row['CONSTRAINT_NAME']]['unique'] = $row['CONSTRAINT_TYPE'] === 'UNIQUE'; - $indexes[$row['CONSTRAINT_NAME']]['primary'] = $row['CONSTRAINT_TYPE'] === 'PRIMARY KEY'; - $indexes[$row['CONSTRAINT_NAME']]['columns'] = isset($keyUsages[$row['CONSTRAINT_NAME']]) ? $keyUsages[$row['CONSTRAINT_NAME']] : array(); - } - return array_values($indexes); - } - - - - /** - * Returns metadata for all foreign keys in a table. - * @param string - * @return array - */ - public function getForeignKeys($table) - { - throw new DibiNotImplementedException; - } - -} +driver = $driver; + } + + + + /** + * Returns list of tables. + * @return array + */ + public function getTables() + { + $res = $this->driver->query('SELECT TABLE_NAME, TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES'); + $tables = array(); + while ($row = $res->fetch(FALSE)) { + $tables[] = array( + 'name' => $row[0], + 'view' => isset($row[1]) && $row[1] === 'VIEW', + ); + } + return $tables; + } + + + + /** + * Returns metadata for all columns in a table. + * @param string + * @return array + */ + public function getColumns($table) + { + $res = $this->driver->query(" + SELECT c.name as COLUMN_NAME, c.is_identity AS AUTO_INCREMENT + FROM sys.columns c + INNER JOIN sys.tables t ON c.object_id = t.object_id + WHERE t.name = {$this->driver->escape($table, dibi::TEXT)} + "); + + $autoIncrements = array(); + while ($row = $res->fetch(TRUE)) { + $autoIncrements[$row['COLUMN_NAME']] = (bool) $row['AUTO_INCREMENT']; + } + + $res = $this->driver->query(" + SELECT C.COLUMN_NAME, C.DATA_TYPE, C.CHARACTER_MAXIMUM_LENGTH , C.COLUMN_DEFAULT , C.NUMERIC_PRECISION, C.NUMERIC_SCALE , C.IS_NULLABLE, Case When Z.CONSTRAINT_NAME Is Null Then 0 Else 1 End As IsPartOfPrimaryKey + FROM INFORMATION_SCHEMA.COLUMNS As C + Outer Apply ( + SELECT CCU.CONSTRAINT_NAME + FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS As TC + Join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE As CCU + On CCU.CONSTRAINT_NAME = TC.CONSTRAINT_NAME + WHERE TC.TABLE_SCHEMA = C.TABLE_SCHEMA + And TC.TABLE_NAME = C.TABLE_NAME + And TC.CONSTRAINT_TYPE = 'PRIMARY KEY' + And CCU.COLUMN_NAME = C.COLUMN_NAME + ) As Z + WHERE C.TABLE_NAME = {$this->driver->escape($table, dibi::TEXT)} + "); + $columns = array(); + while ($row = $res->fetch(TRUE)) { + $columns[] = array( + 'name' => $row['COLUMN_NAME'], + 'table' => $table, + 'nativetype' => strtoupper($row['DATA_TYPE']), + 'size' => $row['CHARACTER_MAXIMUM_LENGTH'], + 'unsigned' => TRUE, + 'nullable' => $row['IS_NULLABLE'] === 'YES', + 'default' => $row['COLUMN_DEFAULT'], + 'autoincrement' => $autoIncrements[$row['COLUMN_NAME']], + 'vendor' => $row, + ); + } + return $columns; + } + + + + /** + * Returns metadata for all indexes in a table. + * @param string + * @return array + */ + public function getIndexes($table) + { + $keyUsagesRes = $this->driver->query("SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = {$this->driver->escape($table, dibi::TEXT)}"); + $keyUsages = array(); + while( $row = $keyUsagesRes->fetch(TRUE) ) { + $keyUsages[$row['CONSTRAINT_NAME']][(int) $row['ORDINAL_POSITION'] - 1] = $row['COLUMN_NAME']; + } + + $res = $this->driver->query("SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = {$this->driver->escape($table, dibi::TEXT)}"); + $indexes = array(); + while ($row = $res->fetch(TRUE)) { + $indexes[$row['CONSTRAINT_NAME']]['name'] = $row['CONSTRAINT_NAME']; + $indexes[$row['CONSTRAINT_NAME']]['unique'] = $row['CONSTRAINT_TYPE'] === 'UNIQUE'; + $indexes[$row['CONSTRAINT_NAME']]['primary'] = $row['CONSTRAINT_TYPE'] === 'PRIMARY KEY'; + $indexes[$row['CONSTRAINT_NAME']]['columns'] = isset($keyUsages[$row['CONSTRAINT_NAME']]) ? $keyUsages[$row['CONSTRAINT_NAME']] : array(); + } + return array_values($indexes); + } + + + + /** + * Returns metadata for all foreign keys in a table. + * @param string + * @return array + */ + public function getForeignKeys($table) + { + throw new DibiNotImplementedException; + } + +} diff --git a/dibi/drivers/mssql.php b/dibi/drivers/DibiMsSqlDriver.php similarity index 99% rename from dibi/drivers/mssql.php rename to dibi/drivers/DibiMsSqlDriver.php index 06b37fad..55c40316 100644 --- a/dibi/drivers/mssql.php +++ b/dibi/drivers/DibiMsSqlDriver.php @@ -9,7 +9,7 @@ * the file license.txt that was distributed with this source code. */ -require_once dirname(__FILE__) . '/mssql.reflector.php'; +require_once dirname(__FILE__) . '/DibiMsSqlReflector.php'; /** * The dibi driver for MS SQL database. diff --git a/dibi/drivers/mssql.reflector.php b/dibi/drivers/DibiMsSqlReflector.php old mode 100755 new mode 100644 similarity index 96% rename from dibi/drivers/mssql.reflector.php rename to dibi/drivers/DibiMsSqlReflector.php index 66e4bb53..4b853054 --- a/dibi/drivers/mssql.reflector.php +++ b/dibi/drivers/DibiMsSqlReflector.php @@ -1,225 +1,225 @@ -driver = $driver; - } - - - - /** - * Returns list of tables. - * @return array - */ - public function getTables() - { - $res = $this->driver->query(" - SELECT TABLE_NAME, TABLE_TYPE - FROM INFORMATION_SCHEMA.TABLES - "); - $tables = array(); - while ($row = $res->fetch(FALSE)) { - $tables[] = array( - 'name' => $row[0], - 'view' => isset($row[1]) && $row[1] === 'VIEW', - ); - } - return $tables; - } - - - - /** - * Returns count of rows in a table - * @param string - * @return integer - */ - public function getTableCount($table, $fallback=true) - { - if (empty($table)) { - return false; - } - $result = $this->driver->query(" - SELECT MAX(rowcnt) - FROM sys.sysindexes - WHERE id=OBJECT_ID({$this->driver->escape($table, dibi::IDENTIFIER)}) - "); - $row = $result->fetch(FALSE); - - if (!is_array($row) || count($row) < 1) { - if ($fallback) { - $row = $this->driver->query("SELECT COUNT(*) FROM {$this->driver->escape($table, dibi::IDENTIFIER)}")->fetch(FALSE); - $count = intval($row[0]); - } else { - $count = false; - } - } else { - $count = intval($row[0]); - } - - return $count; - } - - - - /** - * Returns metadata for all columns in a table. - * @param string - * @return array - */ - public function getColumns($table) - { - $res = $this->driver->query(" - SELECT * FROM - INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = {$this->driver->escape($table, dibi::TEXT)} - ORDER BY TABLE_NAME, ORDINAL_POSITION - "); - $columns = array(); - while ($row = $res->fetch(TRUE)) { - $size = false; - $type = strtoupper($row['DATA_TYPE']); - - $size_cols = array( - 'DATETIME'=>'DATETIME_PRECISION', - 'DECIMAL'=>'NUMERIC_PRECISION', - 'CHAR'=>'CHARACTER_MAXIMUM_LENGTH', - 'NCHAR'=>'CHARACTER_OCTET_LENGTH', - 'NVARCHAR'=>'CHARACTER_OCTET_LENGTH', - 'VARCHAR'=>'CHARACTER_OCTET_LENGTH' - ); - - if (isset($size_cols[$type])) { - if ($size_cols[$type]) { - $size = $row[$size_cols[$type]]; - } - } - - $columns[] = array( - 'name' => $row['COLUMN_NAME'], - 'table' => $table, - 'nativetype' => $type, - 'size' => $size, - 'unsigned' => NULL, - 'nullable' => $row['IS_NULLABLE'] === 'YES', - 'default' => $row['COLUMN_DEFAULT'], - 'autoincrement' => false, - 'vendor' => $row, - ); - } - - return $columns; - } - - - - /** - * Returns metadata for all indexes in a table. - * @param string - * @return array - */ - public function getIndexes($table) - { - $res = $this->driver->query( - "SELECT ind.name index_name, ind.index_id, ic.index_column_id, - col.name column_name, ind.is_unique, ind.is_primary_key - FROM sys.indexes ind - INNER JOIN sys.index_columns ic ON - (ind.object_id = ic.object_id AND ind.index_id = ic.index_id) - INNER JOIN sys.columns col ON - (ic.object_id = col.object_id and ic.column_id = col.column_id) - INNER JOIN sys.tables t ON - (ind.object_id = t.object_id) - WHERE t.name = {$this->driver->escape($table, dibi::TEXT)} - AND t.is_ms_shipped = 0 - ORDER BY - t.name, ind.name, ind.index_id, ic.index_column_id - "); - - $indexes = array(); - while ($row = $res->fetch(TRUE)) { - $index_name = $row['index_name']; - - if (!isset($indexes[$index_name])) { - $indexes[$index_name] = array(); - $indexes[$index_name]['name'] = $index_name; - $indexes[$index_name]['unique'] = (bool)$row['is_unique']; - $indexes[$index_name]['primary'] = (bool)$row['is_primary_key']; - $indexes[$index_name]['columns'] = array(); - } - $indexes[$index_name]['columns'][] = $row['column_name']; - } - - return array_values($indexes); - } - - - - /** - * Returns metadata for all foreign keys in a table. - * @param string - * @return array - */ - public function getForeignKeys($table) - { - $res = $this->driver->query(" - SELECT f.name AS foreign_key, - OBJECT_NAME(f.parent_object_id) AS table_name, - COL_NAME(fc.parent_object_id, - fc.parent_column_id) AS column_name, - OBJECT_NAME (f.referenced_object_id) AS reference_table_name, - COL_NAME(fc.referenced_object_id, - fc.referenced_column_id) AS reference_column_name, - fc.* - FROM sys.foreign_keys AS f - INNER JOIN sys.foreign_key_columns AS fc - ON f.OBJECT_ID = fc.constraint_object_id - WHERE OBJECT_NAME(f.parent_object_id) = {$this->driver->escape($table, dibi::TEXT)} - "); - - $keys = array(); - while ($row = $res->fetch(TRUE)) { - $key_name = $row['foreign_key']; - - if (!isset($keys[$key_name])) { - $keys[$key_name]['name'] = $row['foreign_key']; // foreign key name - $keys[$key_name]['local'] = array($row['column_name']); // local columns - $keys[$key_name]['table'] = $row['reference_table_name']; // referenced table - $keys[$key_name]['foreign'] = array($row['reference_column_name']); // referenced columns - $keys[$key_name]['onDelete'] = false; - $keys[$key_name]['onUpdate'] = false; - } else { - $keys[$key_name]['local'][] = $row['column_name']; // local columns - $keys[$key_name]['foreign'][] = $row['reference_column_name']; // referenced columns - } - } - return array_values($keys); - } - -} +driver = $driver; + } + + + + /** + * Returns list of tables. + * @return array + */ + public function getTables() + { + $res = $this->driver->query(" + SELECT TABLE_NAME, TABLE_TYPE + FROM INFORMATION_SCHEMA.TABLES + "); + $tables = array(); + while ($row = $res->fetch(FALSE)) { + $tables[] = array( + 'name' => $row[0], + 'view' => isset($row[1]) && $row[1] === 'VIEW', + ); + } + return $tables; + } + + + + /** + * Returns count of rows in a table + * @param string + * @return integer + */ + public function getTableCount($table, $fallback=true) + { + if (empty($table)) { + return false; + } + $result = $this->driver->query(" + SELECT MAX(rowcnt) + FROM sys.sysindexes + WHERE id=OBJECT_ID({$this->driver->escape($table, dibi::IDENTIFIER)}) + "); + $row = $result->fetch(FALSE); + + if (!is_array($row) || count($row) < 1) { + if ($fallback) { + $row = $this->driver->query("SELECT COUNT(*) FROM {$this->driver->escape($table, dibi::IDENTIFIER)}")->fetch(FALSE); + $count = intval($row[0]); + } else { + $count = false; + } + } else { + $count = intval($row[0]); + } + + return $count; + } + + + + /** + * Returns metadata for all columns in a table. + * @param string + * @return array + */ + public function getColumns($table) + { + $res = $this->driver->query(" + SELECT * FROM + INFORMATION_SCHEMA.COLUMNS + WHERE TABLE_NAME = {$this->driver->escape($table, dibi::TEXT)} + ORDER BY TABLE_NAME, ORDINAL_POSITION + "); + $columns = array(); + while ($row = $res->fetch(TRUE)) { + $size = false; + $type = strtoupper($row['DATA_TYPE']); + + $size_cols = array( + 'DATETIME'=>'DATETIME_PRECISION', + 'DECIMAL'=>'NUMERIC_PRECISION', + 'CHAR'=>'CHARACTER_MAXIMUM_LENGTH', + 'NCHAR'=>'CHARACTER_OCTET_LENGTH', + 'NVARCHAR'=>'CHARACTER_OCTET_LENGTH', + 'VARCHAR'=>'CHARACTER_OCTET_LENGTH' + ); + + if (isset($size_cols[$type])) { + if ($size_cols[$type]) { + $size = $row[$size_cols[$type]]; + } + } + + $columns[] = array( + 'name' => $row['COLUMN_NAME'], + 'table' => $table, + 'nativetype' => $type, + 'size' => $size, + 'unsigned' => NULL, + 'nullable' => $row['IS_NULLABLE'] === 'YES', + 'default' => $row['COLUMN_DEFAULT'], + 'autoincrement' => false, + 'vendor' => $row, + ); + } + + return $columns; + } + + + + /** + * Returns metadata for all indexes in a table. + * @param string + * @return array + */ + public function getIndexes($table) + { + $res = $this->driver->query( + "SELECT ind.name index_name, ind.index_id, ic.index_column_id, + col.name column_name, ind.is_unique, ind.is_primary_key + FROM sys.indexes ind + INNER JOIN sys.index_columns ic ON + (ind.object_id = ic.object_id AND ind.index_id = ic.index_id) + INNER JOIN sys.columns col ON + (ic.object_id = col.object_id and ic.column_id = col.column_id) + INNER JOIN sys.tables t ON + (ind.object_id = t.object_id) + WHERE t.name = {$this->driver->escape($table, dibi::TEXT)} + AND t.is_ms_shipped = 0 + ORDER BY + t.name, ind.name, ind.index_id, ic.index_column_id + "); + + $indexes = array(); + while ($row = $res->fetch(TRUE)) { + $index_name = $row['index_name']; + + if (!isset($indexes[$index_name])) { + $indexes[$index_name] = array(); + $indexes[$index_name]['name'] = $index_name; + $indexes[$index_name]['unique'] = (bool)$row['is_unique']; + $indexes[$index_name]['primary'] = (bool)$row['is_primary_key']; + $indexes[$index_name]['columns'] = array(); + } + $indexes[$index_name]['columns'][] = $row['column_name']; + } + + return array_values($indexes); + } + + + + /** + * Returns metadata for all foreign keys in a table. + * @param string + * @return array + */ + public function getForeignKeys($table) + { + $res = $this->driver->query(" + SELECT f.name AS foreign_key, + OBJECT_NAME(f.parent_object_id) AS table_name, + COL_NAME(fc.parent_object_id, + fc.parent_column_id) AS column_name, + OBJECT_NAME (f.referenced_object_id) AS reference_table_name, + COL_NAME(fc.referenced_object_id, + fc.referenced_column_id) AS reference_column_name, + fc.* + FROM sys.foreign_keys AS f + INNER JOIN sys.foreign_key_columns AS fc + ON f.OBJECT_ID = fc.constraint_object_id + WHERE OBJECT_NAME(f.parent_object_id) = {$this->driver->escape($table, dibi::TEXT)} + "); + + $keys = array(); + while ($row = $res->fetch(TRUE)) { + $key_name = $row['foreign_key']; + + if (!isset($keys[$key_name])) { + $keys[$key_name]['name'] = $row['foreign_key']; // foreign key name + $keys[$key_name]['local'] = array($row['column_name']); // local columns + $keys[$key_name]['table'] = $row['reference_table_name']; // referenced table + $keys[$key_name]['foreign'] = array($row['reference_column_name']); // referenced columns + $keys[$key_name]['onDelete'] = false; + $keys[$key_name]['onUpdate'] = false; + } else { + $keys[$key_name]['local'][] = $row['column_name']; // local columns + $keys[$key_name]['foreign'][] = $row['reference_column_name']; // referenced columns + } + } + return array_values($keys); + } + +} diff --git a/dibi/drivers/mysql.php b/dibi/drivers/DibiMySqlDriver.php similarity index 99% rename from dibi/drivers/mysql.php rename to dibi/drivers/DibiMySqlDriver.php index 5ba883c2..01b96706 100644 --- a/dibi/drivers/mysql.php +++ b/dibi/drivers/DibiMySqlDriver.php @@ -10,7 +10,7 @@ */ -require_once dirname(__FILE__) . '/mysql.reflector.php'; +require_once dirname(__FILE__) . '/DibiMySqlReflector.php'; /** diff --git a/dibi/drivers/mysql.reflector.php b/dibi/drivers/DibiMySqlReflector.php similarity index 100% rename from dibi/drivers/mysql.reflector.php rename to dibi/drivers/DibiMySqlReflector.php diff --git a/dibi/drivers/mysqli.php b/dibi/drivers/DibiMySqliDriver.php similarity index 99% rename from dibi/drivers/mysqli.php rename to dibi/drivers/DibiMySqliDriver.php index 6ec77e2b..2c9f4e6a 100644 --- a/dibi/drivers/mysqli.php +++ b/dibi/drivers/DibiMySqliDriver.php @@ -10,7 +10,7 @@ */ -require_once dirname(__FILE__) . '/mysql.reflector.php'; +require_once dirname(__FILE__) . '/DibiMySqlReflector.php'; /** diff --git a/dibi/drivers/odbc.php b/dibi/drivers/DibiOdbcDriver.php similarity index 100% rename from dibi/drivers/odbc.php rename to dibi/drivers/DibiOdbcDriver.php diff --git a/dibi/drivers/oracle.php b/dibi/drivers/DibiOracleDriver.php similarity index 100% rename from dibi/drivers/oracle.php rename to dibi/drivers/DibiOracleDriver.php diff --git a/dibi/drivers/pdo.php b/dibi/drivers/DibiPdoDriver.php similarity index 98% rename from dibi/drivers/pdo.php rename to dibi/drivers/DibiPdoDriver.php index e2eab25b..03634cfa 100644 --- a/dibi/drivers/pdo.php +++ b/dibi/drivers/DibiPdoDriver.php @@ -10,8 +10,8 @@ */ -require_once dirname(__FILE__) . '/mysql.reflector.php'; -require_once dirname(__FILE__) . '/sqlite.reflector.php'; +require_once dirname(__FILE__) . '/DibiMySqlReflector.php'; +require_once dirname(__FILE__) . '/DibiSqliteReflector.php'; /** diff --git a/dibi/drivers/postgre.php b/dibi/drivers/DibiPostgreDriver.php similarity index 100% rename from dibi/drivers/postgre.php rename to dibi/drivers/DibiPostgreDriver.php diff --git a/dibi/drivers/sqlite3.php b/dibi/drivers/DibiSqlite3Driver.php similarity index 99% rename from dibi/drivers/sqlite3.php rename to dibi/drivers/DibiSqlite3Driver.php index 9b6ff450..f4e96b18 100644 --- a/dibi/drivers/sqlite3.php +++ b/dibi/drivers/DibiSqlite3Driver.php @@ -10,7 +10,7 @@ */ -require_once dirname(__FILE__) . '/sqlite.reflector.php'; +require_once dirname(__FILE__) . '/DibiSqliteReflector.php'; /** diff --git a/dibi/drivers/sqlite.php b/dibi/drivers/DibiSqliteDriver.php similarity index 99% rename from dibi/drivers/sqlite.php rename to dibi/drivers/DibiSqliteDriver.php index 0814281d..131df44f 100644 --- a/dibi/drivers/sqlite.php +++ b/dibi/drivers/DibiSqliteDriver.php @@ -10,7 +10,7 @@ */ -require_once dirname(__FILE__) . '/sqlite.reflector.php'; +require_once dirname(__FILE__) . '/DibiSqliteReflector.php'; /** diff --git a/dibi/drivers/sqlite.reflector.php b/dibi/drivers/DibiSqliteReflector.php similarity index 100% rename from dibi/drivers/sqlite.reflector.php rename to dibi/drivers/DibiSqliteReflector.php diff --git a/dibi/libs/DibiConnection.php b/dibi/libs/DibiConnection.php index 9d13c748..8b124bca 100644 --- a/dibi/libs/DibiConnection.php +++ b/dibi/libs/DibiConnection.php @@ -89,10 +89,10 @@ class DibiConnection extends DibiObject $config['driver'] = dibi::$defaultDriver; } - $driver = preg_replace('#[^a-z0-9_]#', '_', strtolower($config['driver'])); - $class = "Dibi" . $driver . "Driver"; + $class = preg_replace(array('#\W#', '#sql#'), array('_', 'Sql'), ucfirst(strtolower($config['driver']))); + $class = "Dibi{$class}Driver"; if (!class_exists($class, FALSE)) { - include_once dirname(__FILE__) . "/../drivers/$driver.php"; + include_once dirname(__FILE__) . "/../drivers/$class.php"; if (!class_exists($class, FALSE)) { throw new DibiException("Unable to create instance of dibi driver '$class'."); diff --git a/dibi/libs/DibiDataSource.php b/dibi/libs/DibiDataSource.php index a50f9fcd..c8d3613b 100644 --- a/dibi/libs/DibiDataSource.php +++ b/dibi/libs/DibiDataSource.php @@ -75,7 +75,7 @@ class DibiDataSource extends DibiObject implements IDataSource /** * Selects columns to query. * @param string|array column name or array of column names - * @param string column alias + * @param string column alias * @return DibiDataSource provides a fluent interface */ public function select($col, $as = NULL) @@ -113,7 +113,7 @@ class DibiDataSource extends DibiObject implements IDataSource /** * Selects columns to order by. * @param string|array column name or array of column names - * @param string sorting direction + * @param string sorting direction * @return DibiDataSource provides a fluent interface */ public function orderBy($row, $sorting = 'ASC') diff --git a/dibi/libs/DibiTranslator.php b/dibi/libs/DibiTranslator.php index eb680649..d5a7ec34 100644 --- a/dibi/libs/DibiTranslator.php +++ b/dibi/libs/DibiTranslator.php @@ -218,7 +218,7 @@ final class DibiTranslator extends DibiObject } else { $v = $this->formatValue($v, $pair[1]); - if ($pair[1] === 'l' || $pair[1] === 'in') { + if ($pair[1] === 'l' || $pair[1] === 'in') { $op = 'IN '; } elseif (strpos($pair[1], 'like') !== FALSE) { $op = 'LIKE ';