/** * Creates the domain * * @global type $err * @param type $domainData * @param Console_CommandLine_Result $commandLineResult * @return int domain_id * @throws Exception */ function createDomain($domainData, $commandLineResult) { global $err; global $cuid; // Retrieves command line options $options = $commandLineResult->options; // Retrieve forced uid if exists $force_uid = (int) $options["force_uid"]; if ($force_uid) { $this->giveQuota(array("cuid" => $force_uid, "type" => "dom")); } // Retrieve domain $domain = $domainData["domaine"]; $dns = $domainData["gesdns"]; $dns_action = $domainData["dns_action"]; $dns_result = $domainData["dns_result"]; $mail = $domainData["gesmx"]; $zonettl = $domainData["zonettl"]; $noerase = $domainData['noerase']; $force = true; $isslave = false; $slavedom = ""; // Attempts to insert domain $this->domain->lock(); if (!$this->domain->add_domain($domain, $dns, $noerase, $force, $isslave, $slavedom)) { throw new Exception("Failed to create {$domain} : " . $err->errstr()); } // Retrieve new domain id $query = "SELECT id FROM domaines WHERE domaine='{$domain}'"; $result = current($this->query($query)); $domain_id = (int) $result['id']; if (!$domain_id) { throw new Exception("Failed to retrieve domain_id for {$domain} "); } // Attempts to insert subdomains $subdomainsList = $domainData["sub_domains"]; $subdomainsErrorList = array(); foreach ($subdomainsList as $subdomainData) { $compte = $subdomainData["compte"]; $domain = $subdomainData["domaine"]; $sub = $subdomainData["sub"]; $dest = $subdomainData["valeur"]; $type = $subdomainData["type"]; $web_action = $subdomainData["web_action"]; $web_result = $subdomainData["web_result"]; $enable = $subdomainData["enable"]; if (!array_key_exists($type, $this->domainesTypeCache)) { $valid = $this->domain->domains_type_target_values($type); $this->domainesTypeCache[$type] = $valid; } if (!$this->domainesTypeCache[$type]) { $subdomainsErrorList[] = "Type '{$type}' is invalid ({$sub}.{$domain})"; continue; } if (!$this->domain->set_sub_domain($domain, $sub, $type, $dest)) { $subdomainsErrorList[] = "Failed to create {$sub}.{$domain} : " . $err->errstr(); } } if (count($subdomainsErrorList)) { return array("code" => 1, "message" => "Errors with subdomains : " . implode(" / ", $subdomainsErrorList)); } return array("code" => 0, "message" => "ok", "domain_id" => $domain_id); }
function sub_domains_edit($domain, $sub_domain_id = false) { global $admin, $err, $oldid, $isedit; $dom = new m_dom(); $dom->lock(); if (!($r = $dom->get_domain_all($domain))) { $error = $err->errstr(); } /* if (! empty($sub)) { if (!$sd=$dom->get_sub_domain_all($domain,$sub,$type,$value)) { $error=$err->errstr(); } } */ $sd = $dom->get_sub_domain_all($sub_domain_id); $type = $sd['type']; $sub = $sd['name']; $dom->unlock(); ?> <form action="dom_subdoedit.php" method="post" name="main" id="main"> <table border="0"> <tr> <td> <input type="hidden" name="domain" value="<?php ehe($domain); ?> " /> <input type="hidden" name="sub_domain_id" value="<?php echo $sub_domain_id; ?> " /> <input type="hidden" name="action" value="add" /> <?php if ($isedit) { __("Edit a subdomain:"); } else { __("Create a subdomain:"); } ?> </td><td> <input type="text" class="int" name="sub" style="text-align:right" value="<?php ehe($sub); ?> " size="22" id="sub" /><span class="int" id="newsubname">.<?php echo $domain; ?> </span></td> </tr> <?php $first_advanced = true; $lst_advanced = array(); foreach ($dom->domains_type_lst() as $dt) { // If this type is disabled AND it's not the type in use here, continue if ($dt['enable'] == 'NONE' && strtoupper($type) != strtoupper($dt['name'])) { continue; } // If this type is only for ADMIN and i'm not an admin, continue (oldid is to check if we are an admin who take user identity) if ($dt['enable'] == 'ADMIN' && (!$admin->enabled and !intval($oldid))) { continue; } if (!$r['dns'] and $dt['need_dns']) { continue; } $targval = strtoupper($type) == strtoupper($dt['name']) ? $sd['dest'] : ''; if ($dt['advanced']) { $lst_advanced[] = $dt['name']; if ($first_advanced) { $first_advanced = false; echo "<tr><td colspan=\"2\" class=\"advdom\"></td></tr>"; echo "<tr id='domtype_show' onClick=\"domtype_advanced_show();\"><td colspan='2'><a href=\"javascript:domtype_advanced_show();\"><b>+ "; __("Show advanced options"); echo "</b></a></td></tr>"; echo "<tr id='domtype_hide' onClick=\"domtype_advanced_hide();\" style='display:none'><td colspan='2'><a href=\"javascript:domtype_advanced_hide();\"><b>- "; __("Hide advanced options"); echo "</b></a></td></tr>"; echo "<tr><td colspan=\"2\" class=\"advdom\"></td></tr>"; } } ?> <tr id="tr_<?php echo $dt['name']; ?> "> <td> <input type="radio" id="r_<?php echo $dt['name']; ?> " class="inc" name="type" value="<?php echo $dt['name']; ?> " <?php cbox(strtoupper($type) == strtoupper($dt['name'])); ?> OnClick="getElementById('t_<?php echo $dt['name']; ?> ').focus();"/> <label for="r_<?php echo $dt['name']; ?> "><?php __($dt['description']); ?> </label> </td> <td> <?php switch ($dt['target']) { case "DIRECTORY": ?> <input type="text" class="int" name="t_<?php echo $dt['name']; ?> " id="t_<?php echo $dt['name']; ?> " value="<?php ehe($targval); ?> " size="28" onKeyPress="getElementById('r_<?php echo $dt['name']; ?> ').checked=true;" /> <?php display_browser($targval, "main.t_" . $dt['name']); break; case "URL": ?> <input type="text" class="int" name="t_<?php echo $dt['name']; ?> " id="t_<?php echo $dt['name']; ?> " value="<?php ehe(empty($targval) ? 'http://' : $targval); ?> " size="50" onKeyPress="getElementById('r_<?php echo $dt['name']; ?> ').checked=true;" /> <small><?php __("(enter an URL here)"); ?> </small><?php break; case 'IP': ?> <input type="text" class="int" name="t_<?php echo $dt['name']; ?> " id="t_<?php echo $dt['name']; ?> " value="<?php ehe($targval); ?> " size="16" onKeyPress="getElementById('r_<?php echo $dt['name']; ?> ').checked=true;" /> <small><?php __("(enter an IPv4 address, for example 192.168.1.2)"); ?> </small><?php break; case 'IPV6': ?> <input type="text" class="int" name="t_<?php echo $dt['name']; ?> " id="t_<?php echo $dt['name']; ?> " value="<?php ehe($targval); ?> " size="32" onKeyPress="getElementById('r_<?php echo $dt['name']; ?> ').checked=true;" /> <small><?php __("(enter an IPv6 address, for example 2001:0910::0)"); ?> </small><?php break; case 'TXT': ?> <input type="text" class="int" name="t_<?php echo $dt['name']; ?> " id="t_<?php echo $dt['name']; ?> " value="<?php ehe($targval); ?> " size="32" onKeyPress="getElementById('r_<?php echo $dt['name']; ?> ').checked=true;" /> <small><?php __("(enter a TXT content for this domain)"); ?> </small><?php break; case 'DOMAIN': ?> <input type="text" class="int" name="t_<?php echo $dt['name']; ?> " id="t_<?php echo $dt['name']; ?> " value="<?php ehe($targval); ?> " size="32" onKeyPress="getElementById('r_<?php echo $dt['name']; ?> ').checked=true;" /> <small><?php __("(enter a domain name or subdomain)"); ?> </small><?php break; case "NONE": default: break; } // switch ?> </td> </tr> <?php } // foreach ?> <tr class="trbtn"> <td colspan="2"><input type="submit" class="inb ok" name="add" onclick='return check_type_selected();' value="<?php if ($isedit) { __("Edit this subdomain"); } else { __("Add this subdomain"); } ?> " /></td> </tr> </table> </form> <script type="text/javascript"> function check_type_selected() { if ( $('input[name=type]:radio:checked').val() ) { // there is a value var ll = $('input[name=type]:radio:checked').val(); var tt = $('#t_'+ll); if ( tt.length == 0 ) { // this element do not exist, so OK return true; } if ( tt.val() == '' ) { alert("<?php __("Missing value for this sub-domain"); ?> "); return false; } return true; } alert("<?php __("Please select a type for this sub-domain"); ?> "); return false; } function domtype_advanced_hide() { <?php foreach ($lst_advanced as $adv) { echo "\$(\"#tr_{$adv}\").hide();\n"; } ?> $("#domtype_show").show(); $("#domtype_hide").hide(); } function domtype_advanced_show() { <?php foreach ($lst_advanced as $adv) { echo "\$(\"#tr_{$adv}\").show();\n"; } ?> $("#domtype_show").hide(); $("#domtype_hide").show(); } <?php if (isset($type) && in_array($type, $lst_advanced)) { // if it's an edit of an advanced option, we need to show the advanced options ?> domtype_advanced_show(); <?php } else { ?> domtype_advanced_hide(); <?php } // if advanced ?> </script> <?php }