| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- <?php
- namespace MGModule\DNSManager2\mgLibs\custom\relateditem;
- use \Exception;
- use \MGModule\DNSManager2\models\custom\package\item\PackageItemTypeEnum;
- use \MGModule\DNSManager2\models\custom\package\item\Repository;
- use \MGModule\DNSManager2\models\custom\zone\ZoneTypeEnum;
- use \MGModule\DNSManager2\models\whmcs\clients\client;
- use \MGModule\DNSManager2\models\whmcs\domains\domain;
- use \MGModule\DNSManager2\models\whmcs\hostingaddon\hostingaddon;
- use \MGModule\DNSManager2\models\whmcs\service\service;
- use MGModule\DNSManager2\models\whmcs\domains\pricing\domainpricing;
- class RelatedItem {
- private $item;
- private $zone_type;
-
- public static function I($ztype, $zrelid, $clientid = false) {
- return new self($ztype, $zrelid, $clientid);
- }
-
- public function __construct($ztype, $zrelid, $clientid = false)
- {
- $this->zone_type = $ztype;
- switch ($ztype) {
- case ZoneTypeEnum::HOSTING:
- $this->item = new service($zrelid);
- break;
- case ZoneTypeEnum::DOMAIN:
- $this->item = new domain($zrelid);
- break;
- case ZoneTypeEnum::ADDON:
- $this->item = new hostingaddon($zrelid);
- break;
- case ZoneTypeEnum::OTHER:
- if($clientid == false) {
- throw new Exception("Insufficient data", 200);
- }
- $this->item = new Other();
- $this->item->setClientID($clientid);
- break;
- }
- }
-
- public function __set($name, $value) {
- $this->item->$name = $value;
- }
-
- public function __get($name) {
- return $this->item->$name;
- }
-
- public function __call($name, $args) {
- if($args[0])
- {
- return $this->item->$name($args[0]);
- }
- else
- {
- return $this->item->$name();
- }
- }
-
- public function clientID() {
- return $this->item->clientID();
- }
-
- public function client() {
- return new client($this->clientID());
- }
-
- public function status($upper = true) {
- return $upper?strtoupper($this->item->status()):$this->item->status();
- }
-
- public function packageItemType() {
- switch ($this->zone_type) {
- case ZoneTypeEnum::HOSTING:
- return PackageItemTypeEnum::PRODUCT;
- case ZoneTypeEnum::DOMAIN:
- return PackageItemTypeEnum::DOMAIN;
- case ZoneTypeEnum::ADDON:
- return PackageItemTypeEnum::ADDON;
- case ZoneTypeEnum::OTHER:
- return PackageItemTypeEnum::OTHER;
- }
- }
-
- public function packageRelID() {
- switch ($this->zone_type) {
- case ZoneTypeEnum::HOSTING:
- return $this->item->productID;
- case ZoneTypeEnum::DOMAIN:
- $ex = explode('.', $this->item->domain, 2);
- //return '.' . $ex[1];
- $extension = '.' . $ex[1];
- return domainpricing::getExtensionId($extension);
- case ZoneTypeEnum::ADDON:
- return $this->item->addonid;
- case ZoneTypeEnum::OTHER:
- return 0;
- }
- }
-
- public function getPackageItem() {
- return Repository::factory()->byType($this->packageItemType())->byRelID($this->packageRelID())->one();
- }
-
- public function getPackage() {
- $item = $this->getPackageItem();
- return $item === false ? false : $item->getPackage();
- }
- }
|