From 9ec3045a846c5e46e5e1be87272449876b21ed1f Mon Sep 17 00:00:00 2001
From: Sergio Cambra <sergio@programatica.es>
Date: Tue, 08 Jul 2014 05:09:31 -0400
Subject: [PATCH] hide used domains from domain select, except for subdomain forms

---
 interface/web/sites/web_vhost_domain_edit.php |    2 +-
 interface/lib/classes/tools_sites.inc.php     |   12 +++++++++++-
 interface/web/dns/dns_wizard.php              |    2 +-
 interface/web/mail/mail_domain_edit.php       |    2 +-
 interface/web/dns/dns_slave_edit.php          |    2 +-
 interface/web/sites/web_childdomain_edit.php  |    2 +-
 interface/web/dns/dns_soa_edit.php            |    2 +-
 interface/web/dns/dns_import.php              |    2 +-
 8 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/interface/lib/classes/tools_sites.inc.php b/interface/lib/classes/tools_sites.inc.php
index c636bbc..3702df2 100644
--- a/interface/lib/classes/tools_sites.inc.php
+++ b/interface/lib/classes/tools_sites.inc.php
@@ -144,10 +144,20 @@
 		return $res;
 	}
 
-	function getDomainModuleDomains() {
+	function getDomainModuleDomains($not_used_in_table = null, $selected_domain = null) {
 		global $app;
 
 		$sql = "SELECT domain_id, domain FROM domain WHERE";
+		if ($not_used_in_table) {
+			if (strpos($not_used_in_table, 'dns') !== false) {
+				$field = "origin";
+				$select = "SUBSTRING($field, 1, CHAR_LENGTH($field) - 1)";
+			} else {
+				$field = "domain";
+				$select = $field;
+			}
+			$sql .= " domain NOT IN (SELECT $select FROM $not_used_in_table WHERE $field != '$selected_domain') AND";
+		}
 		if ($_SESSION["s"]["user"]["typ"] == 'admin') {
 			$sql .= " 1";
 		} else {
diff --git a/interface/web/dns/dns_import.php b/interface/web/dns/dns_import.php
index b213110..a391c2e 100644
--- a/interface/web/dns/dns_import.php
+++ b/interface/web/dns/dns_import.php
@@ -161,7 +161,7 @@
 	/*
 	 * The domain-module is in use.
 	*/
-	$domains = $app->tools_sites->getDomainModuleDomains();
+	$domains = $app->tools_sites->getDomainModuleDomains("dns_soa");
 	/*
 	 * We can leave domain empty if domain is filename
 	*/
diff --git a/interface/web/dns/dns_slave_edit.php b/interface/web/dns/dns_slave_edit.php
index ff06821..eb25f22 100644
--- a/interface/web/dns/dns_slave_edit.php
+++ b/interface/web/dns/dns_slave_edit.php
@@ -116,7 +116,7 @@
 			/*
 			 * The domain-module is in use.
 			*/
-			$domains = $app->tools_sites->getDomainModuleDomains();
+			$domains = $app->tools_sites->getDomainModuleDomains("dns_slave", $this->dataRecord["origin"]);
 			$domain_select = '';
 			if(is_array($domains) && sizeof($domains) > 0) {
 				/* We have domains in the list, so create the drop-down-list */
diff --git a/interface/web/dns/dns_soa_edit.php b/interface/web/dns/dns_soa_edit.php
index 3352885..2fcb9f9 100644
--- a/interface/web/dns/dns_soa_edit.php
+++ b/interface/web/dns/dns_soa_edit.php
@@ -157,7 +157,7 @@
 		/*
 		 * The domain-module is in use.
 		*/
-		$domains = $app->tools_sites->getDomainModuleDomains();
+		$domains = $app->tools_sites->getDomainModuleDomains("dns_soa", $this->dataRecord["origin"]);
 		$domain_select = '';
 		if(is_array($domains) && sizeof($domains) > 0) {
 			/* We have domains in the list, so create the drop-down-list */
diff --git a/interface/web/dns/dns_wizard.php b/interface/web/dns/dns_wizard.php
index a462d0f..8549a6b 100644
--- a/interface/web/dns/dns_wizard.php
+++ b/interface/web/dns/dns_wizard.php
@@ -167,7 +167,7 @@
 	/*
 	 * The domain-module is in use.
 	*/
-	$domains = $app->tools_sites->getDomainModuleDomains();
+	$domains = $app->tools_sites->getDomainModuleDomains("dns_soa");
 	$domain_select = '';
 	if(is_array($domains) && sizeof($domains) > 0) {
 		/* We have domains in the list, so create the drop-down-list */
diff --git a/interface/web/mail/mail_domain_edit.php b/interface/web/mail/mail_domain_edit.php
index 8220c2c..6f48c7f 100644
--- a/interface/web/mail/mail_domain_edit.php
+++ b/interface/web/mail/mail_domain_edit.php
@@ -150,7 +150,7 @@
 			/*
 			 * The domain-module is in use.
 			*/
-			$domains = $app->tools_sites->getDomainModuleDomains();
+			$domains = $app->tools_sites->getDomainModuleDomains("mail_domain", $this->dataRecord["domain"]);
 			$domain_select = '';
 			if(is_array($domains) && sizeof($domains) > 0) {
 				/* We have domains in the list, so create the drop-down-list */
diff --git a/interface/web/sites/web_childdomain_edit.php b/interface/web/sites/web_childdomain_edit.php
index 435b901..8cdda48 100644
--- a/interface/web/sites/web_childdomain_edit.php
+++ b/interface/web/sites/web_childdomain_edit.php
@@ -105,7 +105,7 @@
 			/*
 			 * The domain-module is in use.
 			*/
-			$domains = $app->tools_sites->getDomainModuleDomains();
+			$domains = $app->tools_sites->getDomainModuleDomains($this->_vhostdomain_type == 'subdomain' ? null : "web_domain", $this->dataRecord["domain"]);
 			$domain_select = '';
 			$selected_domain = '';
 			if(is_array($domains) && sizeof($domains) > 0) {
diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php
index de731bd..00b4985 100644
--- a/interface/web/sites/web_vhost_domain_edit.php
+++ b/interface/web/sites/web_vhost_domain_edit.php
@@ -631,7 +631,7 @@
 			/*
 			 * The domain-module is in use.
 			*/
-			$domains = $app->tools_sites->getDomainModuleDomains();
+			$domains = $app->tools_sites->getDomainModuleDomains($this->_vhostdomain_type == 'subdomain' ? null : "web_domain", $this->dataRecord["domain"]);
 			$domain_select = '';
 			$selected_domain = '';
 			if(is_array($domains) && sizeof($domains) > 0) {

--
Gitblit v1.9.1