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