From 0d94fd45f422fe0d0460f5db7a7761f56bc18236 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Tue, 19 Jun 2012 10:46:41 +0200 Subject: New database layer based on PHP PDO --- program/include/rcube_db_mysql.php | 92 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 program/include/rcube_db_mysql.php (limited to 'program/include/rcube_db_mysql.php') diff --git a/program/include/rcube_db_mysql.php b/program/include/rcube_db_mysql.php new file mode 100644 index 000000000..3eeee2ada --- /dev/null +++ b/program/include/rcube_db_mysql.php @@ -0,0 +1,92 @@ + | + +-----------------------------------------------------------------------+ +*/ + + +/** + * Database independent query interface + * + * This is a wrapper for the PHP PDO + * + * @package Database + * @version 1.0 + */ +class rcube_db_mysql extends rcube_db +{ + protected function init() + { + // SQL identifiers quoting + $this->options['identifier_start'] = '`'; + $this->options['identifier_end'] = '`'; + } + + + /** + * Abstract SQL statement for value concatenation + * + * @return string SQL statement to be used in query + */ + public function concat(/* col1, col2, ... */) + { + $args = func_get_args(); + + if (is_array($args[0])) { + $args = $args[0]; + } + + return 'CONCAT(' . join(', ', $args) . ')'; + } + + + /** + * Returns PDO DSN string from DSN array (parse_dsn() result) + */ + protected function dsn_string($dsn) + { + $params = array(); + $result = 'mysql:'; + + if ($dsn['database']) { + $params[] = 'dbname=' . $dsn['database']; + } + + if ($dsn['hostspec']) { + $params[] = 'host=' . $dsn['hostspec']; + } + + if ($dsn['port']) { + $params[] = 'port=' . $dsn['port']; + } + + if ($dsn['socket']) { + $params[] = 'unix_socket=' . $dsn['socket']; + } + + $params[] = 'charset=utf8'; + + if (!empty($params)) { + $result .= implode(';', $params); + } + + return $result; + } + +} -- cgit v1.2.3