From 381520c8866a5f3be7e743e3ae16b6fb2988c495 Mon Sep 17 00:00:00 2001
From: mcramer <m.cramer@pixcept.de>
Date: Tue, 21 Aug 2012 13:51:27 -0400
Subject: [PATCH] Implemented  FS#1448 - one database user name and multiple databases  Bugfix on db-Class (datalog Update)

---
 interface/web/sites/database_del.php |   37 ++++++++++++++++++++++++++++++++++++-
 1 files changed, 36 insertions(+), 1 deletions(-)

diff --git a/interface/web/sites/database_del.php b/interface/web/sites/database_del.php
index f5f8dbc..b1263b3 100644
--- a/interface/web/sites/database_del.php
+++ b/interface/web/sites/database_del.php
@@ -46,6 +46,41 @@
 $app->auth->check_module_permissions('sites');
 
 $app->uses("tform_actions");
-$app->tform_actions->onDelete();
+class page_action extends tform_actions {
+	function onBeforeDelete() {
+		global $app; $conf;
+		if($app->tform->checkPerm($this->id,'d') == false) $app->error($app->lng('error_no_delete_permission'));
+        
+        $old_record = $app->tform->getDataRecord($this->id);
+        if($old_record['database_user_id']) {
+            // check if any database on the server still uses this one
+            $check = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_database` WHERE `server_id` = '" . intval($old_record['server_id']) . "' AND (`database_user_id` = '" . intval($old_record['database_user_id']) . "' OR `database_ro_user_id` = '" . intval($old_record['database_user_id']) . "') AND `sys_groupid` = '" . intval($old_record['sys_groupid']) . "' AND `database_id` != '" . intval($this->id) . "'");
+            if($check['cnt'] < 1) {
+                // send a datalog delete
+                $db_user = $app->db->queryOneRecord("SELECT * FROM `web_database_user` WHERE `database_user_id` = '" . intval($old_record['database_user_id']) . "' AND `sys_groupid` = '" . intval($old_record['sys_groupid']) . "'");
+                if($db_user) {
+                    $db_user['server_id'] = $old_record['server_id'];
+                    $app->db->datalogSave('web_database_user', 'DELETE', 'database_user_id', $db_user['database_user_id'], $db_user, array());
+                }
+            }
+        }
+        if($old_record['database_ro_user_id']) {
+            // check if any database on the server still uses this one
+            $check = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_database` WHERE `server_id` = '" . intval($old_record['server_id']) . "' AND (`database_user_id` = '" . intval($old_record['database_ro_user_id']) . "' OR `database_ro_user_id` = '" . intval($old_record['database_ro_user_id']) . "') AND `sys_groupid` = '" . intval($old_record['sys_groupid']) . "' AND `database_id` != '" . intval($this->id) . "'");
+            if($check['cnt'] < 1) {
+                // send a datalog delete
+                $db_user = $app->db->queryOneRecord("SELECT * FROM `web_database_user` WHERE `database_user_id` = '" . intval($old_record['database_ro_user_id']) . "' AND `sys_groupid` = '" . intval($old_record['sys_groupid']) . "'");
+                if($db_user) {
+                    $db_user['server_id'] = $old_record['server_id'];
+                    $app->db->datalogSave('web_database_user', 'DELETE', 'database_user_id', $db_user['database_user_id'], $db_user, array());
+                }
+            }
+        }
+        
+	}
+}
+
+$page = new page_action;
+$page->onDelete();
 
 ?>
\ No newline at end of file

--
Gitblit v1.9.1