From 5045c7ee88c4dd07586179268799415b176e624c Mon Sep 17 00:00:00 2001
From: moglia <moglia@ispconfig3>
Date: Wed, 12 May 2010 14:41:58 -0400
Subject: [PATCH] Improved database list for turns end user life easy.  If you are admin you need back to client list do consult id. Only admin can view CLIEND_ID for example and limited users can not know your id using easy way. This issue reported by my ispconfig end users. Direct show of end database user name resolve all of  these steps on a single step.

---
 interface/lib/classes/custom_datasource.inc.php |   37 +++++++++++++++++++++++++++++++++++--
 1 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/interface/lib/classes/custom_datasource.inc.php b/interface/lib/classes/custom_datasource.inc.php
index 52cd8b7..52ba34c 100644
--- a/interface/lib/classes/custom_datasource.inc.php
+++ b/interface/lib/classes/custom_datasource.inc.php
@@ -69,15 +69,48 @@
 		
 		$server_type = $field['name'];
 		
+		switch($server_type) {
+			case 'default_mailserver':
+				$field = 'mail_server';
+			break;
+			case 'default_webserver':
+				$field = 'web_server';
+			break;
+			case 'default_dnsserver':
+				$field = 'dns_server';
+			break;
+			case 'default_fileserver':
+				$field = 'file_server';
+			break;
+			case 'default_dbserver':
+				$field = 'db_server';
+			break;
+			case 'default_vserverserver':
+				$field = 'vserver_server';
+			break;
+			default:
+				$field = 'web_server';
+			break;
+		}
+		
 		if($_SESSION["s"]["user"]["typ"] == 'user') {
 			// Get the limits of the client
 			$client_group_id = $_SESSION["s"]["user"]["default_group"];
 			$sql = "SELECT $server_type as server_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id";
 			$client = $app->db->queryOneRecord($sql);
-			$sql = "SELECT server_id,server_name FROM server WHERE server_id = ".$client['server_id'];
+			if($client['server_id'] > 0) {
+				//* Select the default server for the client
+				$sql = "SELECT server_id,server_name FROM server WHERE server_id = ".$client['server_id'];
+			} else {
+				//* Not able to find the clients defaults, use this as fallback and add a warning message to the log
+				$app->log('Unable to find default server for client in custom_datasource.inc.php',1);
+				$sql = "SELECT server_id,server_name FROM server WHERE $field = 1 ORDER BY server_name";
+			}
 		} else {
-			$sql = "SELECT server_id,server_name FROM server WHERE dns_server = 1 ORDER BY server_name";
+			//* The logged in user is admin, so we show him all available servers of a specific type.
+			$sql = "SELECT server_id,server_name FROM server WHERE $field = 1 ORDER BY server_name";
 		}
+		
 		$records = $app->db->queryAllRecords($sql);
 		$records_new = array();
 		if(is_array($records)) {

--
Gitblit v1.9.1