hooks.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494
  1. <?php
  2. use \MGModule\DNSManager2 as main;
  3. use \MGModule\DNSManager2\mgLibs\custom\manager\ZoneAutomationHelper;
  4. use \MGModule\DNSManager2\mgLibs\custom\manager\GlobalSettingHelper;
  5. use \MGModule\DNSManager2\models\custom\globalsetting\GlobalSettingEnum;
  6. use \MGModule\DNSManager2\mgLibs\custom\helpers;
  7. use \MGModule\DNSManager2\models\custom\package;
  8. use \MGModule\DNSManager2\models\custom\reverse;
  9. use \MGModule\DNSManager2\mgLibs\custom\reverse\ReverseDNS;
  10. defined('WHMCS6') or define('WHMCS6', isset($GLOBALS['CONFIG']['Version']) && version_compare($GLOBALS['CONFIG']['Version'], '6.0.0', '>='));
  11. if(!defined('DS'))define('DS',DIRECTORY_SEPARATOR);
  12. try
  13. {
  14. require_once __DIR__.DIRECTORY_SEPARATOR.'loader.php';
  15. $loader = new main\loader();
  16. helpers\RegistrarDNSHelper::prepareRegisrtrar();
  17. }
  18. catch(Exception $ex)
  19. {
  20. logModuleCall(
  21. 'DNS Manager', __FUNCTION__, $ex->getMessage(), $ex->getMessage(), $ex->getTraceAsString()
  22. );
  23. }
  24. add_hook('AddonActivation', 1, 'DNSManager2AddonActivationHook');
  25. function DNSManager2AddonActivationHook($params)
  26. {
  27. require_once __DIR__ . DIRECTORY_SEPARATOR . 'loader.php';
  28. $loader = new main\loader();
  29. try
  30. {
  31. main\addon::I(true);
  32. $helper = new ZoneAutomationHelper(ZoneAutomationHelper::ADDON_ACTIVATION, $params['params']?:$params);
  33. $helper->run();
  34. }
  35. catch(Exception $ex)
  36. {
  37. main\mgLibs\error\register::register($ex);
  38. main\addon::dump($ex);
  39. }
  40. }
  41. add_hook('AfterModuleCreate', 1, 'DNSManager2AfterModuleCreateHook');
  42. function DNSManager2AfterModuleCreateHook($params)
  43. {
  44. require_once __DIR__ . DIRECTORY_SEPARATOR . 'loader.php';
  45. $loader = new main\loader();
  46. try
  47. {
  48. main\addon::I(true);
  49. $helper = new ZoneAutomationHelper(ZoneAutomationHelper::PRODUCT_CREATE, $params['params']?:$params);
  50. $helper->run();
  51. }
  52. catch(Exception $ex)
  53. {
  54. main\mgLibs\error\register::register($ex);
  55. main\addon::dump($ex);
  56. }
  57. }
  58. add_hook('PreRegistrarRegisterDomain', 1, 'DNSManager2PreRegistrarRegistrationHook');
  59. function DNSManager2PreRegistrarRegistrationHook( $params )
  60. {
  61. require_once __DIR__ . DIRECTORY_SEPARATOR . 'loader.php';
  62. $loader = new main\loader();
  63. try
  64. {
  65. main\addon::I(true);
  66. $helper = new ZoneAutomationHelper(ZoneAutomationHelper::DOMAIN_REGISTRATION, $params['params'] ? : $params);
  67. if($helper->getCreator()->getPackage() !== false)
  68. {
  69. if((string)$helper->getCreator()->getPackage()->getSettings(package\setting\PackageSettingEnum::ZONE_AUTOMATION_PENDING_REGISTRATION_DOMAIN_TIME) === 'Pre')
  70. {
  71. $helper->run();
  72. if ( $params['params']['dnsmanagement'] ? : $params['dnsmanagement'] )
  73. {
  74. $helper = new ZoneAutomationHelper(ZoneAutomationHelper::DOMAIN_WITH_DNS_MANAGEMENT, $params['params'] ? : $params);
  75. $helper->run();
  76. }
  77. }
  78. }
  79. }
  80. catch (Exception $ex)
  81. {
  82. main\mgLibs\error\register::register($ex);
  83. main\addon::dump($ex);
  84. }
  85. }
  86. add_hook('AfterRegistrarRegistration', 1, 'DNSManager2AfterRegistrarRegistrationHook');
  87. function DNSManager2AfterRegistrarRegistrationHook($params)
  88. {
  89. require_once __DIR__ . DIRECTORY_SEPARATOR . 'loader.php';
  90. $loader = new main\loader();
  91. try
  92. {
  93. main\addon::I(true);
  94. $helper = new ZoneAutomationHelper(ZoneAutomationHelper::DOMAIN_REGISTRATION, $params['params'] ? : $params);
  95. if($helper->getCreator()->getPackage() !== false)
  96. {
  97. if((string)$helper->getCreator()->getPackage()->getSettings(package\setting\PackageSettingEnum::ZONE_AUTOMATION_PENDING_REGISTRATION_DOMAIN_TIME) !== 'Pre')
  98. {
  99. $helper->run();
  100. if ( $params['params']['dnsmanagement'] ? : $params['dnsmanagement'] )
  101. {
  102. $helper = new ZoneAutomationHelper(ZoneAutomationHelper::DOMAIN_WITH_DNS_MANAGEMENT, $params['params'] ? : $params);
  103. $helper->run();
  104. }
  105. }
  106. }
  107. }
  108. catch(Exception $ex)
  109. {
  110. main\mgLibs\error\register::register($ex);
  111. main\addon::dump($ex);
  112. }
  113. }
  114. add_hook('AfterRegistrarTransfer', 1, 'DNSManager2AfterRegistrarTransferHook');
  115. function DNSManager2AfterRegistrarTransferHook($params)
  116. {
  117. require_once __DIR__ . DIRECTORY_SEPARATOR . 'loader.php';
  118. $loader = new main\loader();
  119. try
  120. {
  121. main\addon::I(true);
  122. $helper = new ZoneAutomationHelper(ZoneAutomationHelper::DOMAIN_TRANSFER, $params['params']?:$params);
  123. if($helper->getCreator()->getPackage() != false)
  124. {
  125. if((string)$helper->getCreator()->getPackage()->getSettings(package\setting\PackageSettingEnum::ZONE_AUTOMATION_PENDING_TRANSFER_DOMAIN_TIME) === 'After')
  126. {
  127. $helper->run();
  128. }
  129. }
  130. }
  131. catch(Exception $ex)
  132. {
  133. main\mgLibs\error\register::register($ex);
  134. main\addon::dump($ex);
  135. }
  136. }
  137. add_hook('PreRegistrarTransferDomain', 1, 'DNSManager2PreRegistrarTransferDomainHook');
  138. function DNSManager2PreRegistrarTransferDomainHook($params)
  139. {
  140. require_once __DIR__ . DIRECTORY_SEPARATOR . 'loader.php';
  141. $loader = new main\loader();
  142. try
  143. {
  144. main\addon::I(true);
  145. $helper = new ZoneAutomationHelper(ZoneAutomationHelper::DOMAIN_TRANSFER, $params['params']?:$params);
  146. if($helper->getCreator()->getPackage() != false)
  147. {
  148. if((string)$helper->getCreator()->getPackage()->getSettings(package\setting\PackageSettingEnum::ZONE_AUTOMATION_PENDING_TRANSFER_DOMAIN_TIME) === 'Pre')
  149. {
  150. $helper->run();
  151. }
  152. }
  153. }
  154. catch(Exception $ex)
  155. {
  156. main\mgLibs\error\register::register($ex);
  157. main\addon::dump($ex);
  158. }
  159. }
  160. add_hook('AddonTerminated', 1, 'DNSManager2AddonTerminatedHook');
  161. function DNSManager2AddonTerminatedHook($params)
  162. {
  163. require_once __DIR__ . DIRECTORY_SEPARATOR . 'loader.php';
  164. $loader = new main\loader();
  165. isset($params['params'])?$params=$params['params']:'';
  166. try
  167. {
  168. main\addon::I(true);
  169. DNSManager2RemoveZones(main\models\custom\zone\ZoneTypeEnum::ADDON, $params['id'], $params['userid']);
  170. }
  171. catch(Exception $ex)
  172. {
  173. main\mgLibs\error\register::register($ex);
  174. main\addon::dump($ex);
  175. }
  176. }
  177. add_hook('AfterModuleTerminate', 1, 'DNSManager2AfterModuleTerminateHook');
  178. function DNSManager2AfterModuleTerminateHook($params)
  179. {
  180. require_once __DIR__ . DIRECTORY_SEPARATOR . 'loader.php';
  181. $loader = new main\loader();
  182. isset($params['params'])?$params=$params['params']:'';
  183. if($params['model'] instanceof WHMCS\Service\Addon)
  184. {
  185. $params['id'] = $params['addonId'];
  186. DNSManager2AddonTerminatedHook($params);
  187. return;
  188. }
  189. try
  190. {
  191. main\addon::I(true);
  192. if(GlobalSettingHelper::getSetting(GlobalSettingEnum::PREVENT_ZONE_DELETE_AFTER_TERMINATE)){
  193. return;
  194. }
  195. DNSManager2RemoveZones(main\models\custom\zone\ZoneTypeEnum::HOSTING, $params['serviceid'], $params['userid']);
  196. }
  197. catch (Exception $ex)
  198. {
  199. main\mgLibs\error\register::register($ex);
  200. main\addon::dump($ex);
  201. }
  202. }
  203. function DNSManager2RemoveZones($type, $relid, $clientid)
  204. {
  205. $rep = new main\models\custom\zone\Repository();
  206. $reverses = reverse\Repository::factory()->byServiceTypeAndRelidAndClient($type, $relid, $clientid)->get();
  207. foreach ($reverses as $reverse)
  208. {
  209. try
  210. {
  211. if ($reverse !== FALSE)
  212. {
  213. $rdns = new ReverseDNS($reverse);
  214. $rdns->remove();
  215. main\mgLibs\custom\manager\LogHelper::addSuccessLog('Remove Reverse DNS', 'Reverse DNS has been deleted', $reverse->getFullDomain(), $clientid);
  216. }
  217. }
  218. catch (Exception $e)
  219. {
  220. main\mgLibs\custom\manager\LogHelper::addFailLog('Remove Reverse DNS', $e->getMessage(), $reverse->getFullDomain(), $clientid);
  221. }
  222. }
  223. foreach($rep->getZonesWith($type, $relid, $clientid) as $zone)
  224. {
  225. try
  226. {
  227. if($zone->getModule()->zoneExists())
  228. {
  229. $zone->getModule()->terminateZone();
  230. }
  231. $zone->delete();
  232. main\mgLibs\custom\manager\LogHelper::addSuccessLogUsingZone('Remove Zone', '-', $zone);
  233. main\mgLibs\custom\manager\EmailNotificationHelper::sendClientNotificationUsingZone(main\mgLibs\custom\manager\DefaultNotifications::GENERAL_ZONE_REMOVED_NOTIFICATION, $zone);
  234. }
  235. catch (Exception $e)
  236. {
  237. main\mgLibs\custom\manager\LogHelper::addFailLogUsingZone('Remove Zone', $e->getMessage(), $zone);
  238. main\mgLibs\custom\manager\NotificationHelper::addProblemNotification('Zone creation failed ('. $zone->name .')');
  239. }
  240. }
  241. }
  242. add_hook('ClientAreaPrimaryNavbar', 1, DNSManager2ClientAreaPrimaryNavbar);
  243. function DNSManager2ClientAreaPrimaryNavbar($vars)
  244. {
  245. require_once __DIR__ . DIRECTORY_SEPARATOR . 'loader.php';
  246. new main\loader();
  247. try
  248. {
  249. main\addon::I(true);
  250. if(!empty($_SESSION['uid']) && GlobalSettingHelper::getSetting(GlobalSettingEnum::LINK_TO_DNS_MANAGER))
  251. {
  252. $navs = $vars->getChildren();
  253. $dom = $navs['Domains'];
  254. if(!$dom)
  255. {
  256. $dom = $navs['Services'];
  257. if (!$dom)
  258. {
  259. return;
  260. }
  261. }
  262. $bId = main\mgLibs\lang::absoluteT('manage_dns');
  263. $dom->addChild($bId);
  264. $managerLink = $dom->getChild($bId);
  265. $managerLink->setUri("index.php?m=DNSManager2");
  266. $managerLink->setOrder(21);
  267. }
  268. }
  269. catch(Exception $ex)
  270. {
  271. main\mgLibs\error\register::register($ex);
  272. main\addon::dump($ex);
  273. }
  274. }
  275. if(WHMCS6)
  276. {
  277. // add_hook('ClientAreaSecondarySidebar', 1, 'DNSManager2ClienAreaSidebarHook'); //dla domen
  278. add_hook('ClientAreaPrimarySidebar', 1, 'DNSManager2ClienAreaSidebarHook'); //dla serwisów
  279. function DNSManager2ClienAreaSidebarHook($sidebar)
  280. {
  281. require_once __DIR__ . DIRECTORY_SEPARATOR . 'loader.php';
  282. $loader = new main\loader();
  283. try
  284. {
  285. $availableOnPage = [
  286. 'productdetails',
  287. 'domaindetails',
  288. 'domaincontacts',
  289. 'domainregisterns',
  290. 'domaingetepp',
  291. 'domaindns'
  292. ];
  293. main\addon::I(true);
  294. if(isset($_GET['action']) && in_array($_GET['action'], $availableOnPage) && (isset($_GET['id']) || isset($_GET['domainid'])))
  295. {
  296. if($_GET['action'] == 'productdetails')
  297. {
  298. $dnsManagerLinkName = main\mgLibs\lang::absoluteT('dns_manager');
  299. $showDNSManagerButton = GlobalSettingHelper::getSetting(GlobalSettingEnum::SHOW_DNSMANAGERBUTTON);
  300. if($showDNSManagerButton == 'on') {
  301. $thisService = new main\models\whmcs\service\service($_GET['id']);
  302. $zone = \MGModule\DNSManager2\models\custom\zone\Repository::factory()
  303. ->byClientID($_SESSION['uid'])
  304. ->byName($thisService->domain)
  305. ->one();
  306. if ($zone !== false) {
  307. $sidebar->getChild('Service Details Actions')->addChild($dnsManagerLinkName);
  308. $managerLink = $sidebar->getChild('Service Details Actions')->getChild($dnsManagerLinkName);
  309. $managerLink->setUri("index.php?m=DNSManager2&mg-action=editZone&zone_id=" . $zone->id);
  310. $managerLink->setOrder(100);
  311. }
  312. }
  313. $actions = $sidebar->getChild('Service Details Actions');
  314. }
  315. else
  316. {
  317. $id = ($_GET['id'])?: $_GET['domainid'];
  318. $ob = \MGModule\DNSManager2\models\whmcs\domains\domain::factory($id);
  319. $actions = $sidebar->getChild('Domain Details Actions');
  320. if(empty($actions))
  321. {
  322. $actions = $sidebar->getChild('Domain Details Management');
  323. }
  324. }
  325. if(empty($actions))
  326. {
  327. return ;
  328. }
  329. $domain = $ob->domain;
  330. $zone = \MGModule\DNSManager2\models\custom\zone\Repository::factory()
  331. ->byClientID($_SESSION['uid'])
  332. //->byRelID($_GET['id'])
  333. ->byName($domain)
  334. ->one();
  335. if($zone == false)
  336. {
  337. return ;
  338. }
  339. if(empty($actions))
  340. {
  341. return ;
  342. }
  343. $actions->addChild(
  344. 'manage_dns',
  345. array(
  346. 'name' => 'manage_dns',
  347. 'label' => main\mgLibs\lang::absoluteT('manage_dns'),
  348. 'uri' => 'index.php?m=DNSManager2&mg-action=editZone&zone_id=' . $zone->id,
  349. 'order' => 99,
  350. )
  351. );
  352. }
  353. }
  354. catch (Exception $ex)
  355. {
  356. main\mgLibs\error\register::register($ex);
  357. main\addon::dump($ex);
  358. }
  359. }
  360. }
  361. add_hook('ClientAreaPage', 1, 'DNSManager2ClientAreaPageHook');
  362. function DNSManager2ClientAreaPageHook($params)
  363. {
  364. require_once __DIR__ . DIRECTORY_SEPARATOR . 'loader.php';
  365. $loader = new main\loader();
  366. try
  367. {
  368. $availableOnPage = [
  369. 'productdetails',
  370. 'domaindetails',
  371. 'domaincontacts',
  372. 'domainregisterns',
  373. 'domaingetepp',
  374. 'domaindns'
  375. ];
  376. if(in_array($params['clientareaaction'], $availableOnPage))
  377. {
  378. $zone = \MGModule\DNSManager2\models\custom\zone\Repository::factory()
  379. ->byClientID($_SESSION['uid'])
  380. //->byRelID($_GET['id'])
  381. ->byName($params['domain'])
  382. ->one();
  383. if($zone !== false)
  384. {
  385. return array(
  386. 'dns_manager_link' => 'index.php?m=DNSManager2&mg-action=editZone&zone_id=' . $zone->id,
  387. 'dns_manager_is_active' => true
  388. );
  389. }
  390. }
  391. }
  392. catch(Exception $ex)
  393. {
  394. main\mgLibs\error\register::register($ex);
  395. main\addon::dump($ex);
  396. }
  397. }
  398. //WHMCS Client Merge
  399. function DNSManager2ClientMerge($vars){
  400. require_once __DIR__ . DIRECTORY_SEPARATOR . 'loader.php';
  401. $loader = new main\loader();
  402. try
  403. {
  404. main\addon::I(true);
  405. helpers\ClientMergeHelper::merge($vars['fromUserID'], $vars['toUserID']);
  406. }
  407. catch(Exception $ex)
  408. {
  409. main\mgLibs\error\register::register($ex);
  410. main\addon::dump($ex);
  411. }
  412. }
  413. add_hook('AfterClientMerge', 1, 'DNSManager2ClientMerge');
  414. try {
  415. \MGModule\DNSManager2\mgLibs\custom\helpers\TransferHelper::transferZone($_REQUEST);
  416. } catch (\Exception $ex) {
  417. }