From 48d01837a0a5725d2779f30d20478e77572e9ac5 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Mon, 06 Apr 2015 06:00:09 -0400
Subject: [PATCH] Fix tables listing routine on mysql and postgres so it skips system or other database tables and views (#1490337)

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

diff --git a/program/lib/Roundcube/rcube_db_pgsql.php b/program/lib/Roundcube/rcube_db_pgsql.php
index ff41df2..b425551 100644
--- a/program/lib/Roundcube/rcube_db_pgsql.php
+++ b/program/lib/Roundcube/rcube_db_pgsql.php
@@ -158,6 +158,25 @@
     }
 
     /**
+     * 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) {
+            $q = $this->query("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES"
+                . " WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA NOT IN ('pg_catalog', 'information_schema')"
+                . " ORDER BY TABLE_NAME");
+
+            $this->tables = $q ? $q->fetchAll(PDO::FETCH_COLUMN, 0) : array();
+        }
+
+        return $this->tables;
+    }
+
+    /**
      * Returns PDO DSN string from DSN array
      *
      * @param array $dsn DSN parameters

--
Gitblit v1.9.1