$domain->domain, 'userid' => $domain->userid, 'domainstatus' => 'Active'))->fetchAll(); $IPList = $this->makeIpList($checkIfServiceExist[0]['assignedips']); try { if(!empty($checkIfServiceExist) && $checkIfServiceExist[0]['server']){ $dnsPackageId = $this->findDnsPackageByProductId($checkIfServiceExist[0]['packageid'], $typeId); $package = new main\models\custom\package\Package($dnsPackageId); $server = new main\models\whmcs\servers\server($checkIfServiceExist[0]['server']); $IPListPackages = $this->getPackageServerIPs($package->getServers()); $ip = $this->getDefaultIp($checkIfServiceExist[0]['dedicatedip'], $IPList, $server->ip, $IPListPackages); } else { $simulateCreation = new ZoneCreator($domain->domain, ZoneTypeEnum::DOMAIN, $domain->id, false, $domain->clientID()); if($simulateCreation->server) { $serverDefaultIP = unserialize($simulateCreation->server->getSettings('module_configuration'))['default_ip']; if (!empty($serverDefaultIP)) $ip = $serverDefaultIP; } } } catch(\Exception $e) { logModuleCall( 'DNS Manager', __FUNCTION__, $e->getMessage(), $e->getTraceAsString() ); return $ip; } return $ip; } private function findDnsPackageByProductId($productId, $typeId){ $checkIfServiceExist = main\mgLibs\MySQL\query::select(array('packageid'), 'dns_manager2_packageitem', array('relid' => $productId, 'type' => $typeId))->fetchAll(); return $checkIfServiceExist[0]['packageid']; } public function getPackageServerIPs($packageServers){ $IPListPackages = []; foreach($packageServers as $packageServer) { $defaultIP = unserialize($packageServer->getServer()->getSettings('module_configuration')->value)['default_ip']; if($defaultIP != null) array_push($IPListPackages, $defaultIP); } return $IPListPackages; } public function getDefaultIp($dedicatedIp, $IPList, $serverIp, $IPListPackages){ $ip = false; if($dedicatedIp) { $ip = $dedicatedIp; } elseif($IPList) { $ip = reset($IPList); } elseif($serverIp) { $ip = $serverIp; } elseif($IPListPackages) { $ip = reset($IPListPackages); } return $ip; } public function makeIpList($assingedips){ $IPList = []; foreach(explode(" ",$assingedips) as $ip) { if($ip) { $ipo = new IP(trim($ip)); $ip = (string) $ipo; array_push($IPList, trim($ip)); } } return $IPList; } }