From 061c5ea8465797d89a1259db50f43ebf53e96042 Mon Sep 17 00:00:00 2001
From: mcramer <m.cramer@pixcept.de>
Date: Fri, 02 Nov 2012 07:36:31 -0400
Subject: [PATCH] Bugfix:  - database users do not get renamed in mysql  - database passwords get deleted on user or database changing in some situations

---
 interface/web/sites/database_edit.php |   24 ++++++++++++++++++++----
 1 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/interface/web/sites/database_edit.php b/interface/web/sites/database_edit.php
index 1393aaf..393ec38 100644
--- a/interface/web/sites/database_edit.php
+++ b/interface/web/sites/database_edit.php
@@ -148,7 +148,7 @@
 			// When the record is updated
 			if($this->id > 0) {
 				// restore the server ID if the user is not admin and record is edited
-				$tmp = $app->db->queryOneRecord("SELECT server_id FROM web_database WHERE database_id = ".intval($this->id));
+				$tmp = $app->db->queryOneRecord("SELECT server_id FROM web_database WHERE database_id = ".$app->functions->intval($this->id));
 				$this->dataRecord["server_id"] = $tmp["server_id"];
 				unset($tmp);
 				// When the record is inserted
@@ -166,7 +166,22 @@
 				}
 
 			}
-		}
+		} else {
+            // check if client of database parent domain is client of db user!
+            $web_group = $app->db->queryOneRecord("SELECT sys_groupid FROM web_domain WHERE domain_id = '".$app->functions->intval($this->dataRecord['parent_domain_id'])."'");
+            if($this->dataRecord['database_user_id']) {
+                $group = $app->db->queryOneRecord("SELECT sys_groupid FROM web_database_user WHERE database_user_id = '".$app->functions->intval($this->dataRecord['database_user_id'])."'");
+                if($group['sys_groupid'] != $web_group['sys_groupid']) {
+                    $app->error($app->tform->wordbook['database_client_differs_txt']);
+                }
+            }
+            if($this->dataRecord['database_ro_user_id']) {
+                $group = $app->db->queryOneRecord("SELECT sys_groupid FROM web_database_user WHERE database_user_id = '".$app->functions->intval($this->dataRecord['database_ro_user_id'])."'");
+                if($group['sys_groupid'] != $web_group['sys_groupid']) {
+                    $app->error($app->tform->wordbook['database_client_differs_txt']);
+                }
+            }
+        }
 
 
 		parent::onSubmit();
@@ -309,6 +324,7 @@
         global $app;
         if(!empty($sql) && !$app->tform->isReadonlyTab($app->tform->getCurrentTab(),$this->id)) {
             
+            $app->uses('sites_database_plugin');
             $app->sites_database_plugin->processDatabaseUpdate($this);
 
             $app->db->query($sql);
@@ -320,7 +336,7 @@
 		global $app, $conf;
 		
 		if($this->dataRecord["parent_domain_id"] > 0) {
-			$web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".intval($this->dataRecord["parent_domain_id"]));
+			$web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval($this->dataRecord["parent_domain_id"]));
 		
 			//* The Database user shall be owned by the same group then the website
 			$sys_groupid = $web['sys_groupid'];
@@ -336,7 +352,7 @@
 		global $app, $conf;
 
 		if($this->dataRecord["parent_domain_id"] > 0) {
-			$web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".intval($this->dataRecord["parent_domain_id"]));
+			$web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval($this->dataRecord["parent_domain_id"]));
 		
 			//* The Database user shall be owned by the same group then the website
 			$sys_groupid = $web['sys_groupid'];

--
Gitblit v1.9.1