From f19308703c8769cd943dfcef416484c3353fd5fb Mon Sep 17 00:00:00 2001
From: Sebastien JEAN <sebastien.jean54@gmail.com>
Date: Mon, 18 Nov 2013 06:35:58 -0500
Subject: [PATCH] fixing editing dns, mail, db and web domain servers by client issue

---
 interface/lib/classes/validate_client.inc.php |   43 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 42 insertions(+), 1 deletions(-)

diff --git a/interface/lib/classes/validate_client.inc.php b/interface/lib/classes/validate_client.inc.php
index 9b0546a..357a695 100644
--- a/interface/lib/classes/validate_client.inc.php
+++ b/interface/lib/classes/validate_client.inc.php
@@ -81,7 +81,8 @@
 		  ($global_config['ftpuser_prefix'] == '[CLIENTNAME]' || 
 		   $global_config['ftpuser_prefix'] == '' ||
 		   $global_config['shelluser_prefix'] == '[CLIENTNAME]' ||
-		   $global_config['shelluser_prefix'] == '' )) {
+		   $global_config['shelluser_prefix'] == '' ) &&
+		   $global_config['client_username_web_check_disabled'] == 'n') {
 			$errmsg = $validator['errmsg'];
 			if(isset($app->tform->wordbook[$errmsg])) {
 				return $app->tform->wordbook[$errmsg]."<br>\r\n";
@@ -94,6 +95,46 @@
 		
 		
 	}
+
+	function check_used_servers($field_name, $field_value, $validator)
+	{
+		global $app;
+
+		if (is_array($field_value))
+		{
+			$client_id = intval($_POST['id']);
+			$used_servers = null;
+
+			switch ($field_name) 
+			{
+				case 'web_servers':
+	        		$used_servers = $app->db->queryAllRecords('SELECT domain_id FROM web_domain INNER JOIN sys_user ON web_domain.sys_userid = sys_user.userid WHERE client_id = ' . $client_id . ' AND server_id NOT IN (' . implode(', ', $field_value) . ');');
+					break;
+
+				case 'dns_servers':
+	        		$used_servers = $app->db->queryAllRecords('SELECT id FROM dns_rr INNER JOIN sys_user ON dns_rr.sys_userid = sys_user.userid WHERE client_id = ' . $client_id . ' AND server_id NOT IN (' . implode(', ', $field_value) . ');');
+					break;
+
+				case 'db_servers':
+	        		$used_servers = $app->db->queryAllRecords('SELECT database_id FROM web_database INNER JOIN sys_user ON web_database.sys_userid = sys_user.userid WHERE client_id = ' . $client_id . ' AND server_id NOT IN (' . implode(', ', $field_value) . ');');
+					break;
+
+				case 'mail_servers':
+	        		$used_servers = $app->db->queryAllRecords('SELECT domain_id FROM mail_domain INNER JOIN sys_user ON mail_domain.sys_userid = sys_user.userid WHERE client_id = ' . $client_id . ' AND server_id NOT IN (' . implode(', ', $field_value) . ');');
+					break;
+			}
+
+	        if ($used_servers === null || count($used_servers)) 
+	        {
+				$errmsg = $validator['errmsg'];
+	        	if(isset($app->tform->wordbook[$errmsg])) {
+					return $app->tform->wordbook[$errmsg]."<br>\r\n";
+				} else {
+					return $errmsg."<br>\r\n";
+				}
+	        }
+		}
+	}
 	
 	
 	

--
Gitblit v1.9.1