From 0a8f0e4ece06642808c1b52d7ea9c4af3ea356a1 Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Mon, 22 Oct 2012 07:18:05 -0400 Subject: [PATCH] Fixed: FS#2362 - client_id from remoting.inc.php functions is ignored --- interface/lib/classes/db_mysql.inc.php | 58 +++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 35 insertions(+), 23 deletions(-) diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php index a5881dc..d9b6600 100644 --- a/interface/lib/classes/db_mysql.inc.php +++ b/interface/lib/classes/db_mysql.inc.php @@ -47,16 +47,17 @@ public $show_error_messages = true; // false in server, true in interface // constructor - public function __construct() { + public function __construct($prefix = '') { global $conf; - $this->dbHost = $conf['db_host']; - $this->dbName = $conf['db_database']; - $this->dbUser = $conf['db_user']; - $this->dbPass = $conf['db_password']; - $this->dbCharset = $conf['db_charset']; - $this->dbNewLink = $conf['db_new_link']; - $this->dbClientFlags = $conf['db_client_flags']; - parent::__construct($conf['db_host'], $conf['db_user'],$conf['db_password'],$conf['db_database']); + if($prefix != '') $prefix .= '_'; + $this->dbHost = $conf[$prefix.'db_host']; + $this->dbName = $conf[$prefix.'db_database']; + $this->dbUser = $conf[$prefix.'db_user']; + $this->dbPass = $conf[$prefix.'db_password']; + $this->dbCharset = $conf[$prefix.'db_charset']; + $this->dbNewLink = $conf[$prefix.'db_new_link']; + $this->dbClientFlags = $conf[$prefix.'db_client_flags']; + parent::__construct($conf[$prefix.'db_host'], $conf[$prefix.'db_user'],$conf[$prefix.'db_password'],$conf[$prefix.'db_database']); if ($this->connect_error) { $this->updateError('DB::__construct'); return false; @@ -97,6 +98,7 @@ public function query($queryString) { $this->queryId = parent::query($queryString); $this->updateError('DB::query('.$queryString.') -> mysqli_query'); + if($this->errorNumber) debug_print_backtrace(); if(!$this->queryId) { return false; } @@ -142,6 +144,10 @@ // returns number of rows returned by the last select query public function numRows() { return $this->queryId->num_rows; + } + + public function affectedRows() { + return $this->queryId->affected_rows; } // returns mySQL insert id @@ -206,7 +212,7 @@ } //** Function to fill the datalog with a full differential record. - public function datalogSave($db_table, $action, $primary_field, $primary_id, $record_old, $record_new) { + public function datalogSave($db_table, $action, $primary_field, $primary_id, $record_old, $record_new, $force_update = false) { global $app,$conf; // Insert backticks only for incomplete table names. @@ -216,10 +222,17 @@ $escape = '`'; } - $tmp = $this->diffrec($record_old, $record_new); - $diffrec_full = $tmp['diff_rec']; - $diff_num = $tmp['diff_num']; - unset($tmp); + if($force_update == true) { + //* We force a update even if no record has changed + $diffrec_full = array('new' => $record_new,'old' => $record_old); + $diff_num = count($record_new); + } else { + //* get the difference record between old and new record + $tmp = $this->diffrec($record_old, $record_new); + $diffrec_full = $tmp['diff_rec']; + $diff_num = $tmp['diff_num']; + unset($tmp); + } // Insert the server_id, if the record has a server_id $server_id = (isset($record_old['server_id']) && $record_old['server_id'] > 0)?$record_old['server_id']:0; @@ -254,6 +267,8 @@ $key_str .= "`".$key ."`,"; $val_str .= "'".$this->quote($val)."',"; } + $key_str = substr($key_str,0,-1); + $val_str = substr($val_str,0,-1); $insert_data_str = '('.$key_str.') VALUES ('.$val_str.')'; } else { $insert_data_str = $insert_data; @@ -272,24 +287,21 @@ public function datalogUpdate($tablename, $update_data, $index_field, $index_value, $force_update = false) { global $app; - if($force_update == true) { - $old_rec = array(); - } else { - $old_rec = $this->queryOneRecord("SELECT * FROM $tablename WHERE $index_field = '$index_value'"); - } + $old_rec = $this->queryOneRecord("SELECT * FROM $tablename WHERE $index_field = '$index_value'"); if(is_array($update_data)) { $update_data_str = ''; foreach($update_data as $key => $val) { $update_data_str .= "`".$key ."` = '".$this->quote($val)."',"; } + $update_data_str = substr($update_data_str,0,-1); } else { $update_data_str = $update_data; } - $this->query("UPDATE $tablename SET $update_data WHERE $index_field = '$index_value'"); + $this->query("UPDATE $tablename SET $update_data_str WHERE $index_field = '$index_value'"); $new_rec = $this->queryOneRecord("SELECT * FROM $tablename WHERE $index_field = '$index_value'"); - $this->datalogSave($tablename, 'UPDATE', $index_field, $index_value, $old_rec, $new_rec); + $this->datalogSave($tablename, 'UPDATE', $index_field, $index_value, $old_rec, $new_rec, $force_update); return true; } @@ -449,10 +461,10 @@ function tableInfo($table_name) { - global $go_api,$go_info; + global $go_api,$go_info,$app; // Tabellenfelder einlesen - if($rows = $go_api->db->queryAllRecords('SHOW FIELDS FROM '.$table_name)){ + if($rows = $app->db->queryAllRecords('SHOW FIELDS FROM '.$table_name)){ foreach($rows as $row) { $name = $row[0]; $default = $row[4]; -- Gitblit v1.9.1