From 5acb75e667c7e0405475b64bce2f5c9263ef4305 Mon Sep 17 00:00:00 2001 From: sparc Date: Thu, 27 Oct 2005 13:40:37 +0000 Subject: added all mdb2 drivers git-svn-id: https://svn.roundcube.net/trunk@65 208e9e7b-5314-0410-a742-e7e81cd9613c --- .../program/lib/MDB2/Driver/Reverse/fbsql.php | 157 +++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100755 roundcubemail/program/lib/MDB2/Driver/Reverse/fbsql.php (limited to 'roundcubemail/program/lib/MDB2/Driver/Reverse/fbsql.php') diff --git a/roundcubemail/program/lib/MDB2/Driver/Reverse/fbsql.php b/roundcubemail/program/lib/MDB2/Driver/Reverse/fbsql.php new file mode 100755 index 000000000..d20d1957a --- /dev/null +++ b/roundcubemail/program/lib/MDB2/Driver/Reverse/fbsql.php @@ -0,0 +1,157 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ +// + +require_once 'MDB2/Driver/Reverse/Common.php'; + +/** + * MDB2 FrontBase driver for the schema reverse engineering module + * + * @package MDB2 + * @category Database + * @author Lukas Smith + */ +class MDB2_Driver_Reverse_fbsql extends MDB2_Driver_Reverse_Common +{ + // }}} + // {{{ tableInfo() + + /** + * Returns information about a table or a result set + * + * @param object|string $result MDB2_result object from a query or a + * string containing the name of a table. + * While this also accepts a query result + * resource identifier, this behavior is + * deprecated. + * @param int $mode a valid tableInfo mode + * + * @return array an associative array with the information requested. + * A MDB2_Error object on failure. + * + * @see MDB2_Driver_Common::tableInfo() + */ + function tableInfo($result, $mode = null) + { + $db =& $this->getDBInstance(); + if (PEAR::isError($db)) { + return $db; + } + + if (is_string($result)) { + /* + * Probably received a table name. + * Create a result resource identifier. + */ + + $connected = $db->connect(); + if (PEAR::isError($connected)) { + return $connected; + } + $id = @fbsql_list_fields($db->database_name, $result, $db->connection); + $got_string = true; + } elseif (MDB2::isResultCommon($result)) { + /* + * Probably received a result object. + * Extract the result resource identifier. + */ + $id = $result->getResource(); + $got_string = false; + } else { + /* + * Probably received a result resource identifier. + * Copy it. + * Deprecated. Here for compatibility only. + */ + $id = $result; + $got_string = false; + } + + if (!is_resource($id)) { + return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA); + } + + if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { + if ($db->options['field_case'] == CASE_LOWER) { + $case_func = 'strtolower'; + } else { + $case_func = 'strtoupper'; + } + } else { + $case_func = 'strval'; + } + + $count = @fbsql_num_fields($id); + $res = array(); + + if ($mode) { + $res['num_fields'] = $count; + } + + for ($i = 0; $i < $count; $i++) { + $res[$i] = array( + 'table' => $case_func(@fbsql_field_table($id, $i)), + 'name' => $case_func(@fbsql_field_name($id, $i)), + 'type' => @fbsql_field_type($id, $i), + 'len' => @fbsql_field_len($id, $i), + 'flags' => @fbsql_field_flags($id, $i), + ); + if ($mode & MDB2_TABLEINFO_ORDER) { + $res['order'][$res[$i]['name']] = $i; + } + if ($mode & MDB2_TABLEINFO_ORDERTABLE) { + $res['ordertable'][$res[$i]['table']][$res[$i]['name']] = $i; + } + } + + // free the result only if we were called on a table + if ($got_string) { + @fbsql_free_result($id); + } + return $res; + } +} +?> \ No newline at end of file -- cgit v1.2.3