From 6508d0c5b766fe56e96741a61ab7a1ece4191f2d Mon Sep 17 00:00:00 2001
From: mcramer <m.cramer@pixcept.de>
Date: Fri, 17 May 2013 12:09:10 -0400
Subject: [PATCH] - Possible Fix for:  FS#2918 - multiserver - remote access db passwd not changed , when changed access from IP to % and vice versa 

---
 server/plugins-available/mysql_clientdb_plugin.inc.php |    2 ++
 interface/web/sites/database_user_edit.php             |    2 +-
 interface/web/sites/database_user_del.php              |    7 ++++++-
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/interface/web/sites/database_user_del.php b/interface/web/sites/database_user_del.php
index 9abcfd1..b4db986 100644
--- a/interface/web/sites/database_user_del.php
+++ b/interface/web/sites/database_user_del.php
@@ -53,7 +53,12 @@
 		if($app->tform->checkPerm($this->id,'d') == false) $app->error($app->lng('error_no_delete_permission'));
         
         $old_record = $app->tform->getDataRecord($this->id);
-        $app->db->datalogDelete('web_database_user', 'database_user_id', $this->id);
+        
+        /* we cannot use datalogDelete here, as we need to set server_id to 0 */
+        $this->query("DELETE FROM `web_database_user` WHERE $index_field = '$index_value'");
+        $new_rec = array();
+        $old_record['server_id'] = 0;
+        $this->datalogSave('web_database_user', 'DELETE', 'database_user_id', $this->id, $old_record, $new_rec);
     }
     
     function onAfterDelete() { // this has to be done on AFTER delete, because we need the db user still in the database when the server plugin processes the datalog
diff --git a/interface/web/sites/database_user_edit.php b/interface/web/sites/database_user_edit.php
index 50975a7..a6b08b3 100644
--- a/interface/web/sites/database_user_edit.php
+++ b/interface/web/sites/database_user_edit.php
@@ -147,7 +147,7 @@
 			$this->dataRecord['database_user'] = substr($dbuser_prefix . $this->dataRecord['database_user'], 0, 16);
 		}
 		
-        $this->dataRecord['server_id'] = $conf['server_id'];
+        $this->dataRecord['server_id'] = 0;
         
 		parent::onBeforeUpdate();
 	}
diff --git a/server/plugins-available/mysql_clientdb_plugin.inc.php b/server/plugins-available/mysql_clientdb_plugin.inc.php
index 7fa2b7b..393c3fb 100644
--- a/server/plugins-available/mysql_clientdb_plugin.inc.php
+++ b/server/plugins-available/mysql_clientdb_plugin.inc.php
@@ -503,6 +503,8 @@
         $host_list = array('localhost');
         // get all databases this user was active for
         $db_list = $app->db->queryAllRecords("SELECT `remote_access`, `remote_ips` FROM `web_database` WHERE `database_user_id` = '" . intval($data['old']['database_user_id']) . "'");
+        if(count($db_list) < 1) return; // nothing to do on this server for this db user
+        
         foreach($db_list as $database) {
             if($database['remote_access'] != 'y') continue;
             

--
Gitblit v1.9.1