From e6bb836e053913ec8a5930a6d51af1fa55eb08e2 Mon Sep 17 00:00:00 2001 From: thomascube Date: Fri, 25 Feb 2011 16:37:22 +0000 Subject: Create interactive update script with improved DB schema check; udated installer with new features and styles --- program/include/rcube_mdb2.php | 17 +++++++++++++++++ program/lib/MDB2/Driver/Reverse/sqlite.php | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) (limited to 'program') diff --git a/program/include/rcube_mdb2.php b/program/include/rcube_mdb2.php index c56a86e37..85a70cad3 100644 --- a/program/include/rcube_mdb2.php +++ b/program/include/rcube_mdb2.php @@ -412,6 +412,23 @@ class rcube_mdb2 } + /** + * Wrapper for SHOW COLUMNS command + * + * @param string Table name + * @return array List of table cols + */ + function list_cols($table) + { + $this->db_handle->loadModule('Manager'); + if (!PEAR::isError($result = $this->db_handle->listTableFields($table))) { + return $result; + } + + return null; + } + + /** * Formats input so it can be safely used in a query * diff --git a/program/lib/MDB2/Driver/Reverse/sqlite.php b/program/lib/MDB2/Driver/Reverse/sqlite.php index c88ad0ddb..43cec992a 100644 --- a/program/lib/MDB2/Driver/Reverse/sqlite.php +++ b/program/lib/MDB2/Driver/Reverse/sqlite.php @@ -95,7 +95,7 @@ class MDB2_Driver_Reverse_sqlite extends MDB2_Driver_Reverse_Common return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, 'unexpected empty table column definition list', __FUNCTION__); } - $regexp = '/^\s*([^\s]+) +(CHAR|VARCHAR|VARCHAR2|TEXT|BOOLEAN|SMALLINT|INT|INTEGER|DECIMAL|BIGINT|DOUBLE|FLOAT|DATETIME|DATE|TIME|LONGTEXT|LONGBLOB)( ?\(([1-9][0-9]*)(:([1-9][0-9]*))?\))?( NULL| NOT NULL)?( UNSIGNED)?( NULL| NOT NULL)?( PRIMARY KEY)?( DEFAULT (\'[^\']*\'|[^ ]+))?( NULL| NOT NULL)?( PRIMARY KEY)?(\s*\-\-.*)?$/i'; + $regexp = '/^\s*([^\s]+) +(CHAR|VARCHAR|VARCHAR2|TEXT|BOOLEAN|SMALLINT|INT|INTEGER|DECIMAL|TINYINT|BIGINT|DOUBLE|FLOAT|DATETIME|DATE|TIME|LONGTEXT|LONGBLOB)( ?\(([1-9][0-9]*)(:([1-9][0-9]*))?\))?( NULL| NOT NULL)?( UNSIGNED)?( NULL| NOT NULL)?( PRIMARY KEY)?( DEFAULT (\'[^\']*\'|[^ ]+))?( NULL| NOT NULL)?( PRIMARY KEY)?(\s*\-\-.*)?$/i'; $regexp2 = '/^\s*([^ ]+) +(PRIMARY|UNIQUE|CHECK)$/i'; for ($i=0, $j=0; $i<$count; ++$i) { if (!preg_match($regexp, trim($column_sql[$i]), $matches)) { -- cgit v1.2.3