From 2d5210a8c420eb4876826ad76ede117712ffe283 Mon Sep 17 00:00:00 2001
From: mcramer <m.cramer@pixcept.de>
Date: Thu, 29 Nov 2012 05:53:53 -0500
Subject: [PATCH] Fixed:  FS#2553 - Database user is not deleted correctly when using remoting API 

---
 interface/lib/classes/remoting.inc.php |   35 ++++++++++++++++++++++++++++++++++-
 1 files changed, 34 insertions(+), 1 deletions(-)

diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php
index 1b19a4b..1bcc1c2 100644
--- a/interface/lib/classes/remoting.inc.php
+++ b/interface/lib/classes/remoting.inc.php
@@ -1412,23 +1412,56 @@
 	//* Update a record
 	public function sites_database_user_update($session_id, $client_id, $primary_id, $params)
     {
+        global $app;
+        
 		if(!$this->checkPerm($session_id, 'sites_database_user_update')) {
 			$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
 			return false;
 		}
+		$app->uses('remoting_lib');
+		$app->remoting_lib->loadFormDef('../sites/form/database_user.tform.php');
+        $old_rec = $app->remoting_lib->getDataRecord($primary_id);
         
-		return $this->updateQuery('../sites/form/database_user.tform.php', $client_id, $primary_id, $params);
+		$result = $this->updateQuery('../sites/form/database_user.tform.php', $client_id, $primary_id, $params);
+        
+        $new_rec = $app->remoting_lib->getDataRecord($primary_id);
+        
+        $records = $app->db->queryAllRecords("SELECT DISTINCT server_id FROM web_database WHERE database_user_id = '".$app->functions->intval($primary_id)."' UNION SELECT DISTINCT server_id FROM web_database WHERE database_ro_user_id = '".$app->functions->intval($primary_id)."'");
+        foreach($records as $rec) {
+            $tmp_rec = $new_rec;
+            $tmp_rec['server_id'] = $rec['server_id'];
+            $app->remoting_lib->datalogSave('UPDATE', $primary_id, $old_rec, $tmp_rec);
+        }
+        unset($new_rec);
+        unset($old_rec);
+        unset($records);
+        
+        return $result;
  	}
 	
 	//* Delete a record
 	public function sites_database_user_delete($session_id, $primary_id)
     {
+        global $app;
+        
 		if(!$this->checkPerm($session_id, 'sites_database_user_delete')) {
 			$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
 			return false;
 		}
         
+        $app->db->datalogDelete('web_database_user', 'database_user_id', $primary_id);
 		$affected_rows = $this->deleteQuery('../sites/form/database_user.tform.php',$primary_id);
+        
+        $records = $app->db->queryAllRecords("SELECT database_id FROM web_database WHERE database_user_id = '".$app->functions->intval($primary_id)."'");
+        foreach($records as $rec) {
+            $app->db->datalogUpdate('web_database','database_user_id=NULL','database_id', $rec['database_id']);
+            
+        }
+        $records = $app->db->queryAllRecords("SELECT database_id FROM web_database WHERE database_ro_user_id = '".$app->functions->intval($primary_id)."'");
+        foreach($records as $rec) {
+            $app->db->datalogUpdate('web_database','database_ro_user_id=NULL','database_id', $rec['database_id']);
+        }
+        
 		return $affected_rows;
 	}
 	

--
Gitblit v1.9.1