getSettings($key)) { $setting = new setting\PackageSetting(); $setting->packageid = $this->id; $setting->key = $key; } $setting->value = $value; $setting->save(); return $setting; } public function getSettings($key = false) { return $key === false?setting\Repository::factory()->byPackageID($this->id)->getWithKeys() : setting\PackageSetting::factory()->byPackageAndKey($this->id, $key); } public function getItems($type = false, $relid = false) { $rep = item\Repository::factory()->byPackageID($this->id); if($type === false) { $out = array(); foreach($rep->get() as $item) { $out[$item->type][] = $item; } return $out; } elseif($relid === false) { return $rep->byType($type)->get(); } else { return $rep->byType($type)->byRelID($relid)->one(); } } public function addItem($type, $relid, $limit) { if(!$item = $this->getItems($type, $relid)) { $item = new item\PackageItem(); $item->packageid = $this->id; $item->type = $type; $item->relid = $relid; } $item->limit = $limit; $item->save(); return $item; } public function removeItem($type, $relid) { if($item = $this->getItems($type, $relid)) { $item->delete(); } } /** zwraca PackageServer, które ma metodę getServer */ public function getServers($serverid = false) { $rep = server\Repository::factory()->byPackageID($this->id); if($serverid === false) { return $rep->get(); } else { return $rep->byServerID($serverid)->one(); } } public function addServer($serverid, $isMaster = false) { if(!$ps = $this->getServers($serverid)) { $ps = new server\PackageServer(); $ps->packageid = $this->id; $ps->serverid = $serverid; $ps->setMaster($isMaster); $ps->save(); } else { $ps->setMaster($isMaster); $ps->save(); } return $ps; } public function removeServer($serverid) { if($ps = $this->getServers($serverid)) { $ps->delete(); } } public function getSets($setid = false) { $rep = set\Repository::factory()->byPackageID($this->id); if($setid === false) { return $rep->get(); } else { return $rep->bySetID($setid)->one(); } } public function getAdminSets( ) { $setConfig = setting\Repository::factory()->byPackageID( $this->id )->byKey( PackageSettingEnum::DNS_RECORD_SET )->one(); return unserialize( $setConfig->value ); } public function addSet($setid) { if(!$ps = $this->getSets($setid)) { $ps = new set\PackageSet(); $ps->packageid = $this->id; $ps->setid = $setid; $ps->save(); } return $ps; } public function removeSet($setid) { if($ps = $this->getSets($setid)) { $ps->delete(); } } public function setDefaultSet($setid) { $this->defaultset = $setid; $this->save(); return $this; } public function getDefaultSet() { try { $set = $this->defaultset > 0 ? new main\models\custom\set\Set($this->defaultset) : false; } catch(\Exception $ex) { main\mgLibs\error\register::register($ex); } return $set; } public function delete() { mysql\query::startTransaction(); item\Repository::factory()->byPackageID($this->id)->delete(); server\Repository::factory()->byPackageID($this->id)->delete(); set\Repository::factory()->byPackageID($this->id)->delete(); setting\Repository::factory()->byPackageID($this->id)->delete(); parent::delete(); mysql\query::endTransaction(); } public function enable() { $this->status = 1; $this->save(); } public function disable() { $this->status = 0; $this->save(); } public function isEnabled() { return $this->status == 1; } /** * * @return main\models\custom\server\Server */ public function getFirstActiveServer() { foreach($this->getServers() as $server) { $server = $server->getServer(); if($server->isEnabled()) { return $server; } } return false; } public function getRegistrarDomain($packageId=null, $tld=null) { $regDomain = registrar\Repository::factory(); if($packageId) { $regDomain->byPackageID($packageId); } if($tld) { $regDomain->byTld($tld); } return $regDomain->get(); } public function addRegistrarDomain($tld) { if(!$this->getRegistrarDomain($this->id, $tld)) { $regDomain = new registrar\PackageRegistrar(); $regDomain->packageid = $this->id; $regDomain->tld = $tld; $itemId = $this->getItems(item\PackageItemTypeEnum::DOMAIN, $tld); $regDomain->itemid = $itemId->id; $regDomain->save(); } } public function removeRegistrarDomain($tld) { $regDomain = $this->getRegistrarDomain($this->id, $tld); if(!empty($regDomain)) { foreach ($regDomain as $value) { $value->delete(); } } } }