| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- <?php
- namespace MGModule\DNSManager2\mgLibs\custom\task;
- use \Exception;
- use \MGModule\DNSManager2\mgLibs\custom\manager;
- use \MGModule\DNSManager2\mgLibs\custom\TaskManager;
- use \MGModule\DNSManager2\models\custom\globalsetting\GlobalSettingEnum;
- use \MGModule\DNSManager2\models\custom\server;
- use \MGModule\DNSManager2\models\custom\task;
- use \MGModule\DNSManager2\models\custom\zone\Zone;
- use \MGModule\DNSManager2\models\custom\zone\Repository as ZoneRepo;
- use \MGModule\DNSManager2\mgLibs\custom\helpers;
- use \MGModule\DNSManager2\mgLibs\custom\dns;
- use \MGModule\DNSManager2 as main;
- use MGModule\DNSManager2\helpers\custom\ClientFilesManage;
- class ExportFromFileWHMCS extends TaskAbstract
- {
- protected $abort_after_repeats = array('main' => 0);
- protected $taskTypeCode = TaskTypeCodesCodes::EXPORTTOFILEWHMCS;
-
- public function mainDescription()
- {
- // $serverTo = new server\Server($this->getParams('toServer'));
- return 'Export from: '.$this->getParams('fromFile').' to: WHMCS';
- }
-
- public function main($params)
- {
- $cron_import_run_each = manager\GlobalSettingHelper::getSetting(GlobalSettingEnum::CRON_IMPORT_RUN_EACH?:5);
- if(!$this->isReadyToRun( $cron_import_run_each ))
- {
- return true;
- }
- if($this->getStatus() == task\TaskStatusEnum::START)
- {
- $this->addChild('fetchZonesList', [], $this->task->clientid)->run();
- $this->setStatus(task\TaskStatusEnum::IN_PROGRESS);
- }
- elseif($this->getStatus() == task\TaskStatusEnum::IN_PROGRESS)
- {
- $zones_per_run = manager\GlobalSettingHelper::getSetting(GlobalSettingEnum::CRON_IMPORT_ZONES_PER_RUN);
- $childs = $this->getXChilds($zones_per_run, 'export', task\TaskStatusEnum::START);
- if(count($childs) < $zones_per_run)
- {
- $childs += $this->getXChilds($zones_per_run - count($childs), 'export');
- }
-
- foreach($childs as $child)
- {
- $child->run();
- }
- $this->setFinishedStatusOnCronRun('export', $zones_per_run);
- }
- }
-
- public function fetchZonesList($params)
- {
- $zoneList = $this->listBulkZones();
- foreach($zoneList as $zone)
- {
- $this->addResult(array(
- 'domain' => $zone->zoneName,
- 'ip' => $zone->ip ? $zone->ip : '',
- // 'zoneDetails' => $zone->zoneDetails
- ));
- }
- $this->setStatus(task\TaskStatusEnum::FINISHED);
- }
-
- public function export($params)
- {
- try
- {
- $file = $this->parent->getParams('fromFile');
- $zoneParams = $this->getZone($params['domain']);
- if(empty($zoneParams))
- {
- return;
- }
- $fileExporting = ClientFilesManage::getFileForClient($zoneParams->clientid, $file, ClientFilesManage::FROM_FILE_TO_WHMCS);
- if(!$file || $zoneParams->clientid != $fileExporting->clientid) //incase other user export another
- {
- return;
- }
- $server = new server\Server($zoneParams->serverid);
- $moduleTo = $server->getModule();
- $moduleTo->setDomain($zoneParams->name);
- if($moduleTo->isIPRequired())
- {
- $moduleTo->setIP($zoneParams->ip);
- }
- if(!$moduleTo->zoneExists())
- {
- $moduleTo->activateZone();
- }
- $this->setStatus(task\TaskStatusEnum::FINISHED);
- $result = TaskManager::getTaskResultByID($this->getParams('resultid'));
- $result->data['status'] = 'exported';
- $result->save();
- }
- catch(Exception $e)
- {
- $result = TaskManager::getTaskResultByID($this->getParams('resultid'));
- $result->data['status'] = $e->getMessage();
- $result->save();
- }
- }
- private function getZone($zoneName)
- {
- return main\models\custom\zone\Repository::factory()->byName($zoneName)->one();
- }
-
- private function getZoneIfExists()
- {
- $repo = new ZoneRepo();
- $repo->byName($this->getParams('domain'));
-
- $zone = $repo->one();
- return $zone;
- }
-
- private function listBulkZones()
- {
- $path = 'zonesFilesStorage' . DIRECTORY_SEPARATOR . 'bulkZones';
- $zoneList = helpers\ImportExportFileHelper::listBulkExportZones($this->parent->getParams('fromFile'), $path);
- return $zoneList;
- }
- }
|