| | |
| | | +-----------------------------------------------------------------------+ |
| | | | Author: Lukas Kahwe Smith <smith@pooteeweet.org> | |
| | | +-----------------------------------------------------------------------+ |
| | | |
| | | $Id$ |
| | | |
| | | */ |
| | | |
| | | |
| | |
| | | private $a_query_results = array('dummy'); |
| | | private $last_res_id = 0; |
| | | private $tables; |
| | | private $variables; |
| | | |
| | | |
| | | /** |
| | |
| | | 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; |
| | | } |
| | | |
| | | |
| | |
| | | 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 = ' || '; |
| | |
| | | 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); |
| | | } |
| | | } |
| | | |
| | |
| | | */ |
| | | 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; |
| | | } |
| | | |
| | |
| | | */ |
| | | 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; |
| | | } |
| | | |