Add get_variable() implementation

pull/18/head
Aleksander Machniak 13 years ago
parent d239ee6df5
commit c389a85978

@ -42,6 +42,7 @@ class rcube_db
protected $a_query_results = array('dummy');
protected $last_res_id = 0;
protected $tables;
protected $variables;
protected $db_index = 0;
protected $options = array(
@ -279,6 +280,20 @@ class rcube_db
return !empty($this->db_dsnr) && $this->db_dsnw != $this->db_dsnr;
}
/**
* 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)
{
// to be implemented by driver class
return $default;
}
/**
* Execute a SQL query
*
@ -332,7 +347,7 @@ class rcube_db
protected function _query($query, $offset, $numrows, $params)
{
// Read or write ?
$mode = preg_match('/^select/i', ltrim($query)) ? 'r' : 'w';
$mode = preg_match('/^(select|show)/i', ltrim($query)) ? 'r' : 'w';
$this->db_connect($mode);

@ -90,4 +90,27 @@ class rcube_db_mysql extends rcube_db
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;
}
}

@ -1,6 +1,6 @@
<?php
/*
/**
+-----------------------------------------------------------------------+
| program/include/rcube_db_pgsql.php |
| |
@ -26,8 +26,8 @@
*
* This is a wrapper for the PHP PDO
*
* @package Database
* @version 1.0
* @package Database
* @version 1.0
*/
class rcube_db_pgsql extends rcube_db
{
@ -80,7 +80,36 @@ class rcube_db_pgsql extends rcube_db
*/
public function ilike($column, $value)
{
return $this->quote_identifier($column).' ILIKE '.$this->quote($value);
return $this->quote_identifier($column) . ' ILIKE ' . $this->quote($value);
}
/**
* 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)
{
// There's a known case when max_allowed_packet is queried
// PostgreSQL doesn't have such limit, return immediately
if ($varname == 'max_allowed_packet') {
return $default;
}
if (!isset($this->variables)) {
$this->variables = array();
$result = $this->query('SHOW ALL');
while ($row = $this->fetch_array($result)) {
$this->variables[$row[0]] = $row[1];
}
}
return isset($this->variables[$varname]) ? $this->variables[$varname] : $default;
}
}

Loading…
Cancel
Save