/** * 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); }