From a6e3ae8120a09df8694d2bae51045fb4dd2b16fc Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Tue, 14 Apr 2015 13:01:12 -0400
Subject: [PATCH] - fixed some syntax errors from previous commit

---
 interface/lib/classes/validate_client.inc.php |  193 +++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 158 insertions(+), 35 deletions(-)

diff --git a/interface/lib/classes/validate_client.inc.php b/interface/lib/classes/validate_client.inc.php
index 9b0546a..468a022 100644
--- a/interface/lib/classes/validate_client.inc.php
+++ b/interface/lib/classes/validate_client.inc.php
@@ -29,59 +29,60 @@
 */
 
 class validate_client {
-	
+
 	/*
 		Validator function to check if a username is unique.
 	*/
 	function username_unique($field_name, $field_value, $validator) {
 		global $app;
-		
+
 		if(isset($app->remoting_lib->primary_id)) {
 			$client_id = $app->remoting_lib->primary_id;
 		} else {
 			$client_id = $app->tform->primary_id;
 		}
-		
+
 		if($client_id == 0) {
-        	$num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM sys_user WHERE username = '".$app->db->quote($field_value)."'");
-            	if($num_rec["number"] > 0) {
-                	$errmsg = $validator['errmsg'];
-					if(isset($app->tform->wordbook[$errmsg])) {
-                    	return $app->tform->wordbook[$errmsg]."<br>\r\n";
-					} else {
-						return $errmsg."<br>\r\n";
-					}
-                }
-        } else {
-        	$num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM sys_user WHERE username = '".$app->db->quote($field_value)."' AND client_id != ".$client_id);
+			$num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM sys_user WHERE username = ?", $field_value);
 			if($num_rec["number"] > 0) {
-            	$errmsg = $validator['errmsg'];
-                if(isset($app->tform->wordbook[$errmsg])) {
-                	return $app->tform->wordbook[$errmsg]."<br>\r\n";
+				$errmsg = $validator['errmsg'];
+				if(isset($app->tform->wordbook[$errmsg])) {
+					return $app->tform->wordbook[$errmsg]."<br>\r\n";
+				} else {
+					return $errmsg."<br>\r\n";
+				}
+			}
+		} else {
+			$num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM sys_user WHERE username = ? AND client_id != ?", $field_value, $client_id);
+			if($num_rec["number"] > 0) {
+				$errmsg = $validator['errmsg'];
+				if(isset($app->tform->wordbook[$errmsg])) {
+					return $app->tform->wordbook[$errmsg]."<br>\r\n";
 				} else {
 					return $errmsg."<br>\r\n";
 				}
 			}
 		}
 	}
-	
+
 	function username_collision($field_name, $field_value, $validator) {
 		global $app;
-		
+
 		if(isset($app->remoting_lib->primary_id)) {
 			$client_id = $app->remoting_lib->primary_id;
 		} else {
 			$client_id = $app->tform->primary_id;
 		}
-		
+
 		$app->uses('getconf');
 		$global_config = $app->getconf->get_global_config('sites');
-		
-		if((trim($field_value) == 'web' || preg_match('/^web[0-9]/',$field_value)) && 
-		  ($global_config['ftpuser_prefix'] == '[CLIENTNAME]' || 
-		   $global_config['ftpuser_prefix'] == '' ||
-		   $global_config['shelluser_prefix'] == '[CLIENTNAME]' ||
-		   $global_config['shelluser_prefix'] == '' )) {
+
+		if((trim($field_value) == 'web' || preg_match('/^web[0-9]/', $field_value)) &&
+			($global_config['ftpuser_prefix'] == '[CLIENTNAME]' ||
+				$global_config['ftpuser_prefix'] == '' ||
+				$global_config['shelluser_prefix'] == '[CLIENTNAME]' ||
+				$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";
@@ -89,13 +90,135 @@
 				return $errmsg."<br>\r\n";
 			}
 		}
-		
-		
-		
-		
+
+
+
+
 	}
-	
-	
-	
-	
-}
\ No newline at end of file
+
+	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 = ? AND server_id NOT IN ?', $client_id, $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 = ? AND server_id NOT IN ?', $client_id, $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 = ? AND server_id NOT IN ?', $client_id, $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 = ? AND server_id NOT IN ?', $client_id, $field_value);
+				break;
+
+            case 'xmpp_servers':
+                $used_servers = $app->db->queryAllRecords('SELECT domain_id FROM xmpp_domain INNER JOIN sys_user ON xmpp_domain.sys_userid = sys_user.userid WHERE client_id = ? AND server_id NOT IN ?', $client_id, $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";
+				}
+			}
+		}
+	}
+
+	function check_vat_id ($field_name, $field_value, $validator){
+		global $app, $page;
+		
+		$vatid = trim($field_value);
+		if(isset($app->remoting_lib->primary_id)) {
+			$country = $app->remoting_lib->dataRecord['country'];
+		} else {
+			$country = $page->dataRecord['country'];
+		}
+		
+		// check if country is member of EU
+		$country_details = $app->db->queryOneRecord("SELECT * FROM country WHERE iso = ?", $country);
+		if($country_details['eu'] == 'y' && $vatid != ''){
+		
+			$vatid = preg_replace('/\s+/', '', $vatid);
+			$vatid = str_replace(array('.', '-', ','), '', $vatid);
+			$cc = substr($vatid, 0, 2);
+			$vn = substr($vatid, 2);
+
+			// Test if the country of the VAT-ID matches the country of the customer
+			if($country != ''){
+				if(strtoupper($cc) != $country){
+					$errmsg = $validator['errmsg'];
+					if(isset($app->tform->wordbook[$errmsg])) {
+						return $app->tform->wordbook[$errmsg]."<br>\r\n";
+					} else {
+						return $errmsg."<br>\r\n";
+					}
+				}
+			}
+
+			$client = new SoapClient("http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl");
+
+			if($client){
+				$params = array('countryCode' => $cc, 'vatNumber' => $vn);
+				try{
+					$r = $client->checkVat($params);
+					if($r->valid == true){
+					} else {
+						$errmsg = $validator['errmsg'];
+							if(isset($app->tform->wordbook[$errmsg])) {
+								return $app->tform->wordbook[$errmsg]."<br>\r\n";
+							} else {
+								return $errmsg."<br>\r\n";
+							}
+					}
+
+					// This foreach shows every single line of the returned information
+					/*
+					foreach($r as $k=>$prop){
+						echo $k . ': ' . $prop;
+					}
+					*/
+
+				} catch(SoapFault $e) {
+					//echo 'Error, see message: '.$e->faultstring;
+					switch ($e->faultstring) {
+						case 'INVALID_INPUT':
+							$errmsg = $validator['errmsg'];
+							if(isset($app->tform->wordbook[$errmsg])) {
+								return $app->tform->wordbook[$errmsg]."<br>\r\n";
+							} else {
+								return $errmsg."<br>\r\n";
+							}
+							break;
+						// the following cases shouldn't be the user's fault, so we return no error
+						case 'SERVICE_UNAVAILABLE':
+						case 'MS_UNAVAILABLE':
+						case 'TIMEOUT':
+						case 'SERVER_BUSY':
+							break;
+					}
+				}
+			} else {
+				// Connection to host not possible, europe.eu down?
+				// this shouldn't be the user's fault, so we return no error
+			}
+		}
+	}
+
+
+}

--
Gitblit v1.9.1