From 2696e12bd643eaca85b9780b1c7d8ec1377df0fb Mon Sep 17 00:00:00 2001
From: latham <latham@ispconfig3>
Date: Fri, 04 Nov 2011 09:57:16 -0400
Subject: [PATCH] This will sort the modules by alpha before the dashboard is pushed to the front.  This patch keeps the menu tabs stable instead of different on each user. Logging in as an admin, reseller, and user would show the tabs in different order each time do to user creation.

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

diff --git a/interface/lib/classes/custom_datasource.inc.php b/interface/lib/classes/custom_datasource.inc.php
index 52cd8b7..43538d6 100644
--- a/interface/lib/classes/custom_datasource.inc.php
+++ b/interface/lib/classes/custom_datasource.inc.php
@@ -63,21 +63,79 @@
 		return $records_new;
 	}
 	
+	function webdav_domains($field, $record) {
+		global $app, $conf;
+		
+		$servers = $app->db->queryAllRecords("SELECT * FROM server WHERE active = 1 AND mirror_server_id = 0");
+		$server_ids = array();
+		$app->uses('getconf');
+		if(is_array($servers) && !empty($servers)){
+			foreach($servers as $server){
+				$web_config = $app->getconf->get_server_config($server['server_id'], 'web');
+				if($web_config['server_type'] != 'nginx') $server_ids[] = $server['server_id'];
+			}
+		}
+		$server_ids = implode(',', $server_ids);
+		$records = $app->db->queryAllRecords("SELECT domain_id,domain FROM web_domain WHERE type = 'vhost' AND server_id IN (".$server_ids.") AND ".$app->tform->getAuthSQL('r')." ORDER BY domain");
+		
+		$records_new = array();
+		if(is_array($records)) {
+			foreach($records as $rec) {
+				$key = $rec['domain_id'];
+				$records_new[$key] = $rec['domain'];
+			}
+		}
+		return $records_new;
+	}
+	
 	
 	function client_servers($field, $record) {
 		global $app, $conf;
 		
 		$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