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.
| | |
| | | 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 { |
| | |
| | | $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) { |
| | |
| | | |
| | | } |
| | | |
| | | /* |
| | | * 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); |
| | |
| | | |
| | | } |
| | | |
| | | /* |
| | | * 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); |
| | |
| | | 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"]); |
| | |
| | | |
| | | } |
| | | |
| | | /* |
| | | * 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); |
| | |
| | | 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"]; |
| | |
| | | } |
| | | } |
| | | |
| | | /* |
| | | * 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 = ''; |
| | |
| | | |
| | | // 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']); |
| | |
| | | $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'; |
| | | ?> |
| | |
| | | </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> |
| | |
| | | </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"> |
| | |
| | | </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"> |
| | |
| | | <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"> |
| | |
| | | /* |
| | | * 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 */ |
| | |
| | | /* |
| | | * 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) { |
| | |
| | | /* |
| | | * 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) { |