Aleksander Machniak
2012-09-14 c563c2cc26bd947a5ccee6cae13dc11047d69f09
program/include/rcube_db_mysql.php
@@ -1,6 +1,6 @@
<?php
/*
/**
 +-----------------------------------------------------------------------+
 | program/include/rcube_db_mysql.php                                    |
 |                                                                       |
@@ -26,18 +26,20 @@
 *
 * This is a wrapper for the PHP PDO
 *
 * @package    Database
 * @version    1.0
 * @package Database
 * @version 1.0
 */
class rcube_db_mysql extends rcube_db
{
    /**
     * Driver initialization/configuration
     */
    protected function init()
    {
        // SQL identifiers quoting
        $this->options['identifier_start'] = '`';
        $this->options['identifier_end'] = '`';
    }
    /**
     * Abstract SQL statement for value concatenation
@@ -55,9 +57,12 @@
        return 'CONCAT(' . join(', ', $args) . ')';
    }
    /**
     * Returns PDO DSN string from DSN array (parse_dsn() result)
     * Returns PDO DSN string from DSN array
     *
     * @param array $dsn DSN parameters
     *
     * @return string Connection string
     */
    protected function dsn_string($dsn)
    {
@@ -89,4 +94,61 @@
        return $result;
    }
    /**
     * Returns driver-specific connection options
     *
     * @param array $dsn DSN parameters
     *
     * @return array Connection options
     */
    protected function dsn_options($dsn)
    {
        $result = array();
        if (!empty($dsn['key'])) {
            $result[PDO::MYSQL_ATTR_KEY] = $dsn['key'];
        }
        if (!empty($dsn['cipher'])) {
            $result[PDO::MYSQL_ATTR_CIPHER] = $dsn['cipher'];
        }
        if (!empty($dsn['cert'])) {
            $result[PDO::MYSQL_ATTR_SSL_CERT] = $dsn['cert'];
        }
        if (!empty($dsn['capath'])) {
            $result[PDO::MYSQL_ATTR_SSL_CAPATH] = $dsn['capath'];
        }
        if (!empty($dsn['ca'])) {
            $result[PDO::MYSQL_ATTR_SSL_CA] = $dsn['ca'];
        }
        return $result;
    }
    /**
     * Get database runtime variables
     *
     * @param string $varname Variable name
     * @param mixed  $default Default value if variable is not set
     *
     * @return mixed Variable value or default
     */
    public function get_variable($varname, $default = null)
    {
        if (!isset($this->variables)) {
            $this->variables = array();
            $result = $this->query('SHOW VARIABLES');
            while ($sql_arr = $this->fetch_array($result)) {
                $this->variables[$row[0]] = $row[1];
            }
        }
        return isset($this->variables[$varname]) ? $this->variables[$varname] : $default;
    }
}