Commit cbdc7aca authored by Marius Cramer's avatar Marius Cramer
Browse files

Merge branch 'hide_used_domains' into 'master'

Hide used domains

Domain must be unique for mail, dns or web site, so there is no point in get used domains on domain select (with domain module enabled) and this patch get only unused domains. For subdomains it doesn't apply, so it's not used.

This patch added some code to dns module because I added domain select on merge request #105 and commit is included here because I based this branch on branch from merge request #105. I can rebase to master if you #105 is merged if it's needed.
parents 6e1bd90b baf5dda4
......@@ -144,10 +144,20 @@ class tools_sites {
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 ?? WHERE $field != ?) AND";
}
if ($_SESSION["s"]["user"]["typ"] == 'admin') {
$sql .= " 1";
} else {
......@@ -155,7 +165,7 @@ class tools_sites {
$sql .= " sys_groupid IN (".$groups.")";
}
$sql .= " ORDER BY domain";
return $app->db->queryAllRecords($sql);
return $app->db->queryAllRecords($sql, $not_used_in_table, $selected_domain);
}
function checkDomainModuleDomain($domain_id) {
......
......@@ -151,6 +151,44 @@ if($_SESSION["s"]["user"]["typ"] != 'admin')
}
/*
* Now we have to check, if we should use the domain-module to select the domain
* or not
*/
$app->uses('ini_parser,getconf');
$settings = $app->getconf->get_global_config('domains');
if ($settings['use_domain_module'] == 'y') {
/*
* The domain-module is in use.
*/
$domains = $app->tools_sites->getDomainModuleDomains("dns_soa");
/*
* We can leave domain empty if domain is filename
*/
$domain_select = "<option value=''></option>\r\n";
if(is_array($domains) && sizeof($domains) > 0) {
/* We have domains in the list, so create the drop-down-list */
foreach( $domains as $domain) {
$domain_select .= "<option value=" . $domain['domain_id'] ;
if ($domain['domain'] == $_POST['domain']) {
$domain_select .= " selected";
}
$domain_select .= ">" . $app->functions->idn_decode($domain['domain']) . ".</option>\r\n";
}
}
$app->tpl->setVar("domain_option", $domain_select);
/* check if the selected domain can be used! */
if ($domain) {
$domain_check = $app->tools_sites->checkDomainModuleDomain($domain);
if(!$domain_check) {
// invalid domain selected
$domain = NULL;
} else {
$domain = $domain_check;
}
}
}
$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_dns_import.lng';
include $lng_file;
$app->tpl->setVar($wb);
......
......@@ -106,6 +106,39 @@ class page_action extends tform_actions {
}
/*
* Now we have to check, if we should use the domain-module to select the domain
* or not
*/
$app->uses('ini_parser,getconf');
$settings = $app->getconf->get_global_config('domains');
if ($settings['use_domain_module'] == 'y') {
/*
* The domain-module is in use.
*/
$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 */
foreach( $domains as $domain) {
$domain_select .= "<option value=" . $domain['domain_id'] ;
if ($domain['domain'].'.' == $this->dataRecord["origin"]) {
$domain_select .= " selected";
}
$domain_select .= ">" . $app->functions->idn_decode($domain['domain']) . ".</option>\r\n";
}
}
else {
/*
* We have no domains in the domain-list. This means, we can not add ANY new domain.
* To avoid, that the variable "domain_option" is empty and so the user can
* free enter a domain, we have to create a empty option!
*/
$domain_select .= "<option value=''></option>\r\n";
}
$app->tpl->setVar("domain_option", $domain_select);
}
if($this->id > 0) {
//* we are editing a existing record
$app->tpl->setVar("edit_disabled", 1);
......@@ -120,6 +153,19 @@ class page_action extends tform_actions {
function onSubmit() {
global $app, $conf;
/* check if the domain module is used - and check if the selected domain can be used! */
$app->uses('ini_parser,getconf');
$settings = $app->getconf->get_global_config('domains');
if ($settings['use_domain_module'] == 'y') {
$domain_check = $app->tools_sites->checkDomainModuleDomain($this->dataRecord['origin']);
if(!$domain_check) {
// invalid domain selected
$app->tform->errorMessage .= $app->tform->lng("origin_error_empty")."<br />";
} else {
$this->dataRecord['origin'] = $domain_check.'.';
}
}
if($_SESSION["s"]["user"]["typ"] != 'admin') {
// Get the limits of the client
$client_group_id = intval($_SESSION["s"]["user"]["default_group"]);
......
......@@ -147,6 +147,39 @@ class page_action extends tform_actions {
}
/*
* Now we have to check, if we should use the domain-module to select the domain
* or not
*/
$app->uses('ini_parser,getconf');
$settings = $app->getconf->get_global_config('domains');
if ($settings['use_domain_module'] == 'y') {
/*
* The domain-module is in use.
*/
$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 */
foreach( $domains as $domain) {
$domain_select .= "<option value=" . $domain['domain_id'] ;
if ($domain['domain'].'.' == $this->dataRecord["origin"]) {
$domain_select .= " selected";
}
$domain_select .= ">" . $app->functions->idn_decode($domain['domain']) . ".</option>\r\n";
}
}
else {
/*
* We have no domains in the domain-list. This means, we can not add ANY new domain.
* To avoid, that the variable "domain_option" is empty and so the user can
* free enter a domain, we have to create a empty option!
*/
$domain_select .= "<option value=''></option>\r\n";
}
$app->tpl->setVar("domain_option", $domain_select);
}
if($this->id > 0) {
//* we are editing a existing record
$app->tpl->setVar("edit_disabled", 1);
......@@ -161,6 +194,19 @@ class page_action extends tform_actions {
function onSubmit() {
global $app, $conf;
/* check if the domain module is used - and check if the selected domain can be used! */
$app->uses('ini_parser,getconf');
$settings = $app->getconf->get_global_config('domains');
if ($settings['use_domain_module'] == 'y') {
$domain_check = $app->tools_sites->checkDomainModuleDomain($this->dataRecord['origin']);
if(!$domain_check) {
// invalid domain selected
$app->tform->errorMessage .= $app->tform->lng("origin_error_empty")."<br />";
} else {
$this->dataRecord['origin'] = $domain_check.'.';
}
}
if($_SESSION["s"]["user"]["typ"] != 'admin') {
// Get the limits of the client
$client_group_id = $_SESSION["s"]["user"]["default_group"];
......
......@@ -157,6 +157,39 @@ if(is_array($fields)) {
}
}
/*
* Now we have to check, if we should use the domain-module to select the domain
* or not
*/
$app->uses('ini_parser,getconf');
$settings = $app->getconf->get_global_config('domains');
if ($settings['use_domain_module'] == 'y') {
/*
* The domain-module is in use.
*/
$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 */
foreach( $domains as $domain) {
$domain_select .= "<option value=" . $domain['domain_id'] ;
if ($domain['domain'] == $_POST['domain']) {
$domain_select .= " selected";
}
$domain_select .= ">" . $app->functions->idn_decode($domain['domain']) . ".</option>\r\n";
}
}
else {
/*
* We have no domains in the domain-list. This means, we can not add ANY new domain.
* To avoid, that the variable "domain_option" is empty and so the user can
* free enter a domain, we have to create a empty option!
*/
$domain_select .= "<option value=''></option>\r\n";
}
$app->tpl->setVar("domain_option", $domain_select);
}
if($_POST['create'] == 1) {
$error = '';
......@@ -180,8 +213,19 @@ if($_POST['create'] == 1) {
// apply filters
if(isset($_POST['domain']) && $_POST['domain'] != ''){
$_POST['domain'] = $app->functions->idn_encode($_POST['domain']);
$_POST['domain'] = strtolower($_POST['domain']);
/* check if the domain module is used - and check if the selected domain can be used! */
if ($settings['use_domain_module'] == 'y') {
$domain_check = $app->tools_sites->checkDomainModuleDomain($_POST['domain']);
if(!$domain_check) {
// invalid domain selected
$_POST['domain'] = '';
} else {
$_POST['domain'] = $domain_check;
}
} else {
$_POST['domain'] = $app->functions->idn_encode($_POST['domain']);
$_POST['domain'] = strtolower($_POST['domain']);
}
}
if(isset($_POST['ns1']) && $_POST['ns1'] != ''){
$_POST['ns1'] = $app->functions->idn_encode($_POST['ns1']);
......
......@@ -9,6 +9,6 @@ $wb['error_no_valid_zone_file_txt'] = '¡Esto parece que no hay archivo de zona
$wb['zonefile_to_import_txt'] = 'Archivo de zona';
$wb['domain_field_desc_txt'] = 'Se puede dejar vacío si el nombre de dominio es el nombre del archivo o el contenido de la zona de archivo.';
$wb['title'] = 'Archivos de zona de importación';
$wb['no_file_uploaded_error'] = 'No hay fichero en zona subida';
$wb['no_file_uploaded_error'] = 'No se ha subido un fichero de zona';
$wb['zone_file_import_txt'] = 'Importar Archivo de Zona';
?>
......@@ -32,7 +32,14 @@
</tmpl_if>
<div class="ctrlHolder">
<label for="domain">{tmpl_var name='domain_txt'}</label>
<input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput" onkeydown="keydown(event.which);" /><p class="value">{tmpl_var name='domain_field_desc_txt'}</p>
<tmpl_if name="domain_option">
<select name="domain" id="domain" class="selectInput">
{tmpl_var name='domain_option'}
</select>
<tmpl_else>
<input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput" onkeydown="keydown(event.which);" />
</tmpl_if>
<p class="value"><tmpl_var name='domain_field_desc_txt'}</p>
</div>
<div class="ctrlHolder">
<label for="file">{tmpl_var name='zonefile_to_import_txt'}</label>
......
......@@ -37,7 +37,13 @@
</tmpl_if>
<div class="ctrlHolder">
<label for="origin">{tmpl_var name='origin_txt'}</label>
<input name="origin" id="origin" value="{tmpl_var name='origin'}" size="30" maxlength="255" type="text" class="textInput" />
<tmpl_if name="domain_option">
<select name="origin" id="origin" class="selectInput">
{tmpl_var name='domain_option'}
</select>
<tmpl_else>
<input name="origin" id="origin" value="{tmpl_var name='origin'}" size="30" maxlength="255" type="text" class="textInput" />
</tmpl_if>
<p class="formHint">{tmpl_var name='eg_domain_tld'}</p>
</div>
<div class="ctrlHolder">
......
......@@ -56,7 +56,13 @@
</tmpl_if>
<div class="ctrlHolder">
<label for="origin">{tmpl_var name='origin_txt'}</label>
<input name="origin" id="origin" value="{tmpl_var name='origin'}" size="30" maxlength="255" type="text" class="textInput" />
<tmpl_if name="domain_option">
<select name="origin" id="origin" class="selectInput">
{tmpl_var name='domain_option'}
</select>
<tmpl_else>
<input name="origin" id="origin" value="{tmpl_var name='origin'}" size="30" maxlength="255" type="text" class="textInput" />
</tmpl_if>
<p class="formHint">{tmpl_var name='eg_domain_tld'}</p>
</div>
<div class="ctrlHolder">
......
......@@ -51,7 +51,13 @@
<tmpl_if name="DOMAIN_VISIBLE">
<div class="ctrlHolder">
<label for="domain">{tmpl_var name='domain_txt'}</label>
<input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput" />
<tmpl_if name="domain_option">
<select name="domain" id="domain" class="selectInput">
{tmpl_var name='domain_option'}
</select>
<tmpl_else>
<input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput" />
</tmpl_if>
</div>
</tmpl_if>
<tmpl_if name="IP_VISIBLE">
......
......@@ -150,7 +150,7 @@ class page_action extends tform_actions {
/*
* 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 */
......
......@@ -105,7 +105,7 @@ class page_action extends tform_actions {
/*
* 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) {
......
......@@ -631,7 +631,7 @@ class page_action extends tform_actions {
/*
* 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) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment