byServerID($this->id)->getWithKeys() : setting\ServerSetting::byServerAndKey($this->id, $key); } public function setSetting($key, $value) { if(!$setting = $this->getSettings($key)) { $setting = new setting\ServerSetting(); $setting->serverid = $this->id; $setting->key = $key; } $setting->value = $value; $setting->save(); return $setting; } public function getNameservers($index = false) { return $index === false? nameserver\Repository::factory()->byServerID($this->id)->get() : nameserver\Repository::factory()->byServerID($this->id)->byIndex(intval($index))->one(); } public function setNameserver($index, $address, $ip) { if((int)$index > 5) return; if(!$ns = $this->getNameservers($index)) { $ns = new nameserver\ServerNameserver(); $ns->serverid = $this->id; $ns->index = $index; } $ns->name = $address; $ns->ip = $ip; $ns->save(); return $ns; } public function getModuleConfiguration($key = false) { $settings = unserialize($this->getSettings(setting\ServerSettingEnum::MODULE_CONFIGURATION)); foreach($settings as &$v) $v = htmlspecialchars_decode($v, ENT_QUOTES); if($key === false) return $settings; else { return isset($settings[$key])?$settings[$key]:false; } } public function isEnabled() { return $this->status == 1; } /** @return main\mgLibs\custom\dns\SubmoduleAbstract */ public function getModule() { $module = new SubmoduleCap(dns\Core::getModule($this->module)); $module->setConfiguration($this->getModuleConfiguration()); $module->setServer($this); //$module->enableDebug(); return $module; } public function delete() { mysql\query::startTransaction(); nameserver\Repository::factory()->byServerID($this->id)->delete(); setting\Repository::factory()->byServerID($this->id)->delete(); parent::delete(); mysql\query::endTransaction(); } public function turnOn() { $this->status = 1; $this->save(); } public function turnOff() { $this->status = 0; $this->save(); } }