diff --git a/htdocs/admin/system/database.php b/htdocs/admin/system/database.php index 4bd9ed2d053..f60714dc3a3 100644 --- a/htdocs/admin/system/database.php +++ b/htdocs/admin/system/database.php @@ -73,7 +73,8 @@ if ($conf->db->type == 'mysql' || $conf->db->type == 'mysqli') } else if ($conf->db->type == 'pgsql') { - $sqls[0] = "select name,setting from pg_settings"; + $sqls[0] = "select name,setting from pg_settings"; // TODO function getServerParametersValues + //$sqls[1] = ""; // TODO Use function getServerStatusValues $base=2; } else if ($conf->db->type == 'mssql') diff --git a/htdocs/core/db/Database.interface.php b/htdocs/core/db/Database.interface.php index 6c98682dafa..4be805c379e 100644 --- a/htdocs/core/db/Database.interface.php +++ b/htdocs/core/db/Database.interface.php @@ -231,11 +231,19 @@ interface Database */ function plimit($limit = 0, $offset = 0); + /** + * Return value of server parameters + * + * @param string $filter Filter list on a particular value + * @return array Array of key-values (key=>value) + */ + function getServerParametersValues($filter = ''); + /** * Return value of server status * - * @param string $filter Filter list on a particular value - * @return string Value for parameter + * @param string $filter Filter list on a particular value + * @return array Array of key-values (key=>value) */ function getServerStatusValues($filter = ''); @@ -454,11 +462,4 @@ interface Database */ function select_db($database); - /** - * Return value of server parameters - * - * @param string $filter Filter list on a particular value - * @return string Value for parameter - */ - function getServerParametersValues($filter = ''); } diff --git a/htdocs/core/db/mssql.class.php b/htdocs/core/db/mssql.class.php index 19fe025ab8b..e80c2957088 100644 --- a/htdocs/core/db/mssql.class.php +++ b/htdocs/core/db/mssql.class.php @@ -1097,10 +1097,10 @@ class DoliDBMssql extends DoliDB } /** - * Return value of server parameters + * Return value of server parameters * - * @param string $filter Filter list on a particular value - * @return string Value for parameter + * @param string $filter Filter list on a particular value + * @return array Array of key-values (key=>value) */ function getServerParametersValues($filter='') { @@ -1113,10 +1113,10 @@ class DoliDBMssql extends DoliDB } /** - * Return value of server status + * Return value of server status * - * @param string $filter Filter list on a particular value - * @return string Value for parameter + * @param string $filter Filter list on a particular value + * @return array Array of key-values (key=>value) */ function getServerStatusValues($filter='') { @@ -1124,7 +1124,7 @@ class DoliDBMssql extends DoliDB // TODO: Implement // May help: http://www.experts-exchange.com/Database/MS-SQL-Server/Q_20971756.html - return ''; + return array(); } } diff --git a/htdocs/core/db/mysql.class.php b/htdocs/core/db/mysql.class.php index 86100d6d7d3..59d302aa3f2 100644 --- a/htdocs/core/db/mysql.class.php +++ b/htdocs/core/db/mysql.class.php @@ -84,6 +84,7 @@ class DoliDBMysql extends DoliDB { global $conf,$langs; + // Note that having "static" property for "$forcecharset" and "$forcecollate" will make error here in strict mode, so they are not static if (! empty($conf->db->character_set)) $this->forcecharset=$conf->db->character_set; if (! empty($conf->db->dolibarr_main_db_collation)) $this->forcecollate=$conf->db->dolibarr_main_db_collation; @@ -1196,10 +1197,10 @@ class DoliDBMysql extends DoliDB } /** - * Return value of server parameters + * Return value of server parameters * - * @param string $filter Filter list on a particular value - * @return string Value for parameter + * @param string $filter Filter list on a particular value + * @return array Array of key-values (key=>value) */ function getServerParametersValues($filter='') { @@ -1218,17 +1219,17 @@ class DoliDBMysql extends DoliDB } /** - * Return value of server status + * Return value of server status * - * @param string $filter Filter list on a particular value - * @return string Value for parameter + * @param string $filter Filter list on a particular value + * @return array Array of key-values (key=>value) */ function getServerStatusValues($filter='') { $result=array(); $sql='SHOW STATUS'; - if ($filter) $sql.=" LIKE '".addslashes($filter)."'"; + if ($filter) $sql.=" LIKE '".$this->escape($filter)."'"; $resql=$this->query($sql); if ($resql) { diff --git a/htdocs/core/db/mysqli.class.php b/htdocs/core/db/mysqli.class.php index fb1ab73407b..d26026e9f95 100644 --- a/htdocs/core/db/mysqli.class.php +++ b/htdocs/core/db/mysqli.class.php @@ -84,9 +84,9 @@ class DoliDBMysqli extends DoliDB { global $conf,$langs; - // TODO error in strict mode (static property for "$forcecharset" and "$forcecollate") - //if (! empty($conf->db->character_set)) $this->forcecharset=$conf->db->character_set; - //if (! empty($conf->db->dolibarr_main_db_collation)) $this->forcecollate=$conf->db->dolibarr_main_db_collation; + // Note that having "static" property for "$forcecharset" and "$forcecollate" will make error here in strict mode, so they are not static + if (! empty($conf->db->character_set)) $this->forcecharset=$conf->db->character_set; + if (! empty($conf->db->dolibarr_main_db_collation)) $this->forcecollate=$conf->db->dolibarr_main_db_collation; $this->database_user=$user; @@ -1200,10 +1200,10 @@ class DoliDBMysqli extends DoliDB } /** - * Return value of server parameters + * Return value of server parameters * - * @param string $filter Filter list on a particular value - * @return string Value for parameter + * @param string $filter Filter list on a particular value + * @return array Array of key-values (key=>value) */ function getServerParametersValues($filter='') { @@ -1222,17 +1222,17 @@ class DoliDBMysqli extends DoliDB } /** - * Return value of server status + * Return value of server status (current indicators on memory, cache...) * - * @param string $filter Filter list on a particular value - * @return string Value for parameter + * @param string $filter Filter list on a particular value + * @return array Array of key-values (key=>value) */ function getServerStatusValues($filter='') { $result=array(); $sql='SHOW STATUS'; - if ($filter) $sql.=" LIKE '".addslashes($filter)."'"; + if ($filter) $sql.=" LIKE '".$this->escape($filter)."'"; $resql=$this->query($sql); if ($resql) { diff --git a/htdocs/core/db/pgsql.class.php b/htdocs/core/db/pgsql.class.php index a73e5f545bb..cfb25e76508 100644 --- a/htdocs/core/db/pgsql.class.php +++ b/htdocs/core/db/pgsql.class.php @@ -85,6 +85,7 @@ class DoliDBPgsql extends DoliDB { global $conf,$langs; + // Note that having "static" property for "$forcecharset" and "$forcecollate" will make error here in strict mode, so they are not static if (! empty($conf->db->character_set)) $this->forcecharset=$conf->db->character_set; if (! empty($conf->db->dolibarr_main_db_collation)) $this->forcecollate=$conf->db->dolibarr_main_db_collation; @@ -1386,17 +1387,17 @@ class DoliDBPgsql extends DoliDB } /** - * Return value of server parameters + * Return value of server parameters * - * @param string $filter Filter list on a particular value - * @return string Value for parameter + * @param string $filter Filter list on a particular value + * @return array Array of key-values (key=>value) */ function getServerParametersValues($filter='') { $result=array(); $resql='select name,setting from pg_settings'; - if ($filter) $resql.=" WHERE name = '".addslashes($filter)."'"; + if ($filter) $resql.=" WHERE name = '".$this->escape($filter)."'"; $resql=$this->query($resql); if ($resql) { @@ -1408,18 +1409,25 @@ class DoliDBPgsql extends DoliDB } /** - * Return value of server status + * Return value of server status * - * @param string $filter Filter list on a particular value - * @return string Value for parameter + * @param string $filter Filter list on a particular value + * @return array Array of key-values (key=>value) */ function getServerStatusValues($filter='') { - // FIXME: Dummy method - // TODO: Implement - // May help: http://netpenthe.wordpress.com/2011/12/07/mysql-show-status-for-postgresql + /* This is to return current running requests. + $sql='SELECT datname,procpid,current_query FROM pg_stat_activity ORDER BY procpid'; + if ($filter) $sql.=" LIKE '".$this->escape($filter)."'"; + $resql=$this->query($sql); + if ($resql) + { + $obj=$this->fetch_object($resql); + $result[$obj->Variable_name]=$obj->Value; + } + */ - return ''; + return array(); } } ?> diff --git a/htdocs/core/db/sqlite.class.php b/htdocs/core/db/sqlite.class.php index fb033bb65da..496de961d68 100644 --- a/htdocs/core/db/sqlite.class.php +++ b/htdocs/core/db/sqlite.class.php @@ -84,6 +84,7 @@ class DoliDBSqlite extends DoliDB { global $conf,$langs; + // Note that having "static" property for "$forcecharset" and "$forcecollate" will make error here in strict mode, so they are not static if (! empty($conf->db->character_set)) $this->forcecharset=$conf->db->character_set; if (! empty($conf->db->dolibarr_main_db_collation)) $this->forcecollate=$conf->db->dolibarr_main_db_collation; @@ -1308,10 +1309,10 @@ class DoliDBSqlite extends DoliDB } /** - * Return value of server parameters + * Return value of server parameters * - * @param string $filter Filter list on a particular value - * @return string Value for parameter + * @param string $filter Filter list on a particular value + * @return array Array of key-values (key=>value) */ function getServerParametersValues($filter='') { @@ -1330,17 +1331,17 @@ class DoliDBSqlite extends DoliDB } /** - * Return value of server status + * Return value of server status * - * @param string $filter Filter list on a particular value - * @return string Value for parameter + * @param string $filter Filter list on a particular value + * @return array Array of key-values (key=>value) */ function getServerStatusValues($filter='') { $result=array(); $sql='SHOW STATUS'; - if ($filter) $sql.=" LIKE '".addslashes($filter)."'"; + if ($filter) $sql.=" LIKE '".$this->escape($filter)."'"; $resql=$this->query($sql); if ($resql) {