summaryrefslogtreecommitdiff
path: root/program/include/rcube_db_mysql.php
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2012-06-19 10:46:41 +0200
committerAleksander Machniak <alec@alec.pl>2012-06-19 10:46:41 +0200
commit0d94fd45f422fe0d0460f5db7a7761f56bc18236 (patch)
treef31258055eb7f91a6fc29ce8e5639921f968afce /program/include/rcube_db_mysql.php
parent207d618c22f6e50cf1dff983791282afe9f267ce (diff)
New database layer based on PHP PDO
Diffstat (limited to 'program/include/rcube_db_mysql.php')
-rw-r--r--program/include/rcube_db_mysql.php92
1 files changed, 92 insertions, 0 deletions
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 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/include/rcube_db_mysql.php |
+ | |
+ | This file is part of the Roundcube Webmail client |
+ | Copyright (C) 2005-2012, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ | PURPOSE: |
+ | Database wrapper class that implements PHP PDO functions |
+ | for MySQL database |
+ | |
+ +-----------------------------------------------------------------------+
+ | Author: Aleksander Machniak <alec@alec.pl> |
+ +-----------------------------------------------------------------------+
+*/
+
+
+/**
+ * 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;
+ }
+
+}