ZoneAutomationHelper.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace MGModule\DNSManager2\mgLibs\custom\manager;
  3. use \MGModule\DNSManager2 as main;
  4. use \MGModule\DNSManager2\mgLibs\custom\helpers\DomainHelper;
  5. use \MGModule\DNSManager2\models\custom\package;
  6. use \MGModule\DNSManager2\models\custom\zone\ZoneTypeEnum;
  7. use MGModule\DNSManager2\mgLibs\custom\manager\additionalMethods\DefaultIPHelper;
  8. class ZoneAutomationHelper {
  9. const ADDON_ACTIVATION = 'addon_activation';
  10. const PRODUCT_CREATE = 'product_create';
  11. const DOMAIN_TRANSFER = 'domain_transfer';
  12. const DOMAIN_REGISTRATION = 'domain_registration';
  13. const DOMAIN_WITH_DNS_MANAGEMENT = 'domain_with_dns_management';
  14. private $hook_type;
  15. /** @var ZoneCreator */
  16. private $creator;
  17. public function __construct($type, $params) {
  18. $this->hook_type = $type;
  19. $defaultIPMethods = new DefaultIPHelper();
  20. switch ($type) {
  21. case self::ADDON_ACTIVATION:
  22. $hosting = new main\models\whmcs\service\service($params['serviceid']);
  23. $domain = new DomainHelper($hosting->domain);
  24. $ip = $defaultIPMethods->getDefaultIp($hosting->dedicatedIP, $hosting->IPList, $hosting->server()->ip, null);
  25. $this->creator = new ZoneCreator($domain->getDomainWithTLD(), ZoneTypeEnum::ADDON, $params['id'], $ip, $hosting->clientID());
  26. break;
  27. case self::PRODUCT_CREATE:
  28. $hosting = new main\models\whmcs\service\service($params['serviceid']);
  29. $domain = new DomainHelper($hosting->domain);
  30. try
  31. {
  32. $serverIp = $hosting->server()->ip;
  33. }
  34. catch( \Exception $e )
  35. {
  36. $serverIp = null;
  37. }
  38. $ip = $defaultIPMethods->getDefaultIp($hosting->dedicatedIP, $hosting->IPList,$serverIp , null);
  39. $this->creator = new ZoneCreator($domain->getDomainWithTLD(), ZoneTypeEnum::HOSTING, $params['serviceid'], $ip, $hosting->clientID());
  40. break;
  41. case self::DOMAIN_REGISTRATION: case self::DOMAIN_TRANSFER: case self::DOMAIN_WITH_DNS_MANAGEMENT:
  42. $domain = new main\models\whmcs\domains\domain($params['domainid']);
  43. $ip = $defaultIPMethods->getDefaultIpBySpecificDomain($domain, ZoneTypeEnum::DOMAIN);
  44. $this->creator = new ZoneCreator($domain->domain, ZoneTypeEnum::DOMAIN, $params['domainid'], $ip, $domain->clientID());
  45. break;
  46. }
  47. }
  48. public function run() {
  49. if(!$this->isAutomationEnabled())
  50. {
  51. return;
  52. }
  53. $this->creator->create( false, $this->isExistedZoneUpdateAllowed());
  54. }
  55. private function isAutomationEnabled() {
  56. if($this->creator->getPackage() === false) {
  57. return false;
  58. }
  59. switch ($this->hook_type) {
  60. case self::ADDON_ACTIVATION: case self::PRODUCT_CREATE:
  61. return (string)$this->creator->getPackage()->getSettings(package\setting\PackageSettingEnum::ZONE_AUTOMATION_NEW_ITEM) === 'on';
  62. break;
  63. case self::DOMAIN_REGISTRATION:
  64. return (string)$this->creator->getPackage()->getSettings(package\setting\PackageSettingEnum::ZONE_AUTOMATION_PENDING_REGISTRATION_DOMAIN) === 'on';
  65. break;
  66. case self::DOMAIN_TRANSFER:
  67. return (string)$this->creator->getPackage()->getSettings(package\setting\PackageSettingEnum::ZONE_AUTOMATION_PENDING_TRANSFER_DOMAIN) === 'on';
  68. break;
  69. case self::DOMAIN_WITH_DNS_MANAGEMENT:
  70. return (string)$this->creator->getPackage()->getSettings(package\setting\PackageSettingEnum::ZONE_AUTOMATION_DOMAIN_WITH_DNS_MANAGEMENT) === 'on';
  71. break;
  72. }
  73. }
  74. private function isExistedZoneUpdateAllowed()
  75. {
  76. return $this->creator->getPackage()->getSettings(package\setting\PackageSettingEnum::UPDATE_EXISTED_ZONE) == 'on';
  77. }
  78. public function getCreator()
  79. {
  80. return $this->creator;
  81. }
  82. }