Aleksander Machniak
2012-06-30 7c8fd8031038e7958ef4dbb059e86decd6fefa28
program/include/rcube_mdb2.php
@@ -18,9 +18,6 @@
 +-----------------------------------------------------------------------+
 | Author: Lukas Kahwe Smith <smith@pooteeweet.org>                      |
 +-----------------------------------------------------------------------+
 $Id$
*/
@@ -51,6 +48,7 @@
    private $a_query_results = array('dummy');
    private $last_res_id = 0;
    private $tables;
    private $variables;
    /**
@@ -213,6 +211,31 @@
    public function is_replicated()
    {
      return !empty($this->db_dsnr) && $this->db_dsnw != $this->db_dsnr;
    }
    /**
     * Get database runtime variables
     *
     * @param string Variable name
     * @param mixed  Default value if var is not set
     * @return mixed Variable value or default
     */
    public function get_variable($varname, $default = null)
    {
        if (!isset($this->variables)) {
            $this->variables = array();
            // only mysql and postgres are know to support this
            if ($this->db_provider == 'pgsql' || $this->db_provider == 'mysql' || $this->db_provider == 'mysqli') {
                $this->db_connect('r');
                $query = $this->db_provider == 'pgsql' ? 'SHOW ALL' : 'SHOW VARIABLES';
                foreach ((array)$this->db_handle->queryAll($query) as $row)
                    $this->variables[$row[0]] = $row[1];
            }
        }
        return isset($this->variables[$varname]) ? $this->variables[$varname] : $default;
    }
@@ -668,6 +691,11 @@
            case 'mssql':
            case 'sqlsrv':
                $delim = ' + ';
                // Modify arguments, because + operator requires them to be of type varchar (#1488505)
                // with SQL Server 2012 we can use just CONCAT(), but we need to support older versions
                foreach ($args as $idx => $arg) {
                    $args[$idx] = "CAST($arg AS varchar)";
                }
                break;
            default:
                $delim = ' || ';
@@ -826,7 +854,7 @@
        if ($scope != 'prepare') {
            $debug_output = sprintf('%s(%d): %s;',
                $scope, $db->db_index, rtrim($message, ';'));
            rcmail::write_log('sql', $debug_output);
            rcube::write_log('sql', $debug_output);
        }
    }
@@ -840,12 +868,12 @@
     */
    public function table_name($table)
    {
        $rcmail = rcube::get_instance();
        $rcube = rcube::get_instance();
        // return table name if configured
        $config_key = 'db_table_'.$table;
        if ($name = $rcmail->config->get($config_key)) {
        if ($name = $rcube->config->get($config_key)) {
            return $name;
        }
@@ -863,12 +891,12 @@
     */
    public function sequence_name($sequence)
    {
        $rcmail = rcube::get_instance();
        $rcube = rcube::get_instance();
        // return sequence name if configured
        $config_key = 'db_sequence_'.$sequence;
        if ($name = $rcmail->config->get($config_key)) {
        if ($name = $rcube->config->get($config_key)) {
            return $name;
        }