From b33c076d8c38eaae60d2f7ed78d65a324dba5d67 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Thu, 14 May 2015 07:20:03 -0400
Subject: [PATCH] Fix bug where imap_conn_options were ignored in IMAP connection test (#1490392)

---
 program/lib/Roundcube/rcube_db_mysql.php |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/program/lib/Roundcube/rcube_db_mysql.php b/program/lib/Roundcube/rcube_db_mysql.php
index 067e94b..616d175 100644
--- a/program/lib/Roundcube/rcube_db_mysql.php
+++ b/program/lib/Roundcube/rcube_db_mysql.php
@@ -150,6 +150,30 @@
     }
 
     /**
+     * Returns list of tables in a database
+     *
+     * @return array List of all tables of the current database
+     */
+    public function list_tables()
+    {
+        // get tables if not cached
+        if ($this->tables === null) {
+            // first fetch current database name
+            $d = $this->query("SELECT database()");
+            $d = $this->fetch_array($d);
+
+            // get list of tables in current database
+            $q = $this->query("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES"
+                . " WHERE TABLE_SCHEMA = ? AND TABLE_TYPE = 'BASE TABLE'"
+                . " ORDER BY TABLE_NAME", $d ? $d[0] : '');
+
+            $this->tables = $q ? $q->fetchAll(PDO::FETCH_COLUMN, 0) : array();
+        }
+
+        return $this->tables;
+    }
+
+    /**
      * Get database runtime variables
      *
      * @param string $varname Variable name
@@ -167,6 +191,12 @@
             return $this->variables[$varname];
         }
 
+        // configured value has higher prio
+        $conf_value = rcube::get_instance()->config->get('db_' . $varname);
+        if ($conf_value !== null) {
+            return $this->variables[$varname] = $conf_value;
+        }
+
         $result = $this->query('SHOW VARIABLES LIKE ?', $varname);
 
         while ($row = $this->fetch_array($result)) {

--
Gitblit v1.9.1