Aleksander Machniak
2016-01-16 ed1d212ae2daea5e4bd043417610177093e99f19
program/lib/Roundcube/rcube_db_mssql.php
@@ -29,20 +29,18 @@
    public $db_provider = 'mssql';
    /**
     * Driver initialization
     * Object constructor
     *
     * @param string $db_dsnw DSN for read/write operations
     * @param string $db_dsnr Optional DSN for read only operations
     * @param bool   $pconn   Enables persistent connections
     */
    protected function init()
    public function __construct($db_dsnw, $db_dsnr = '', $pconn = false)
    {
        parent::__construct($db_dsnw, $db_dsnr, $pconn);
        $this->options['identifier_start'] = '[';
        $this->options['identifier_end'] = ']';
    }
    /**
     * Character setting
     */
    protected function set_charset($charset)
    {
        // UTF-8 is default
    }
    /**
@@ -54,7 +52,7 @@
    protected function conn_configure($dsn, $dbh)
    {
        // Set date format in case of non-default language (#1488918)
        $this->query("SET DATEFORMAT ymd");
        $dbh->query("SET DATEFORMAT ymd");
    }
    /**
@@ -169,4 +167,24 @@
        return $result;
    }
    /**
     * Parse SQL file and fix table names according to table prefix
     */
    protected function fix_table_names($sql)
    {
        if (!$this->options['table_prefix']) {
            return $sql;
        }
        // replace sequence names, and other postgres-specific commands
        $sql = preg_replace_callback(
            '/((TABLE|(?<!ON )UPDATE|INSERT INTO|FROM(?! deleted)| ON(?! (DELETE|UPDATE|\[PRIMARY\]))'
            . '|REFERENCES|CONSTRAINT|TRIGGER|INDEX)\s+(\[dbo\]\.)?[\[\]]*)([^\[\]\( \r\n]+)/',
            array($this, 'fix_table_names_callback'),
            $sql
        );
        return $sql;
    }
}