| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- <?php
- /* * ********************************************************************
- * ProxmoxVPS Product developed. (27.03.19)
- * *
- *
- * CREATED BY MODULESGARDEN -> http://modulesgarden.com
- * CONTACT -> contact@modulesgarden.com
- *
- *
- * This software is furnished under a license and may be used and copied
- * only in accordance with the terms of such license and with the
- * inclusion of the above copyright notice. This software or any other
- * copies thereof may not be provided or otherwise made available to any
- * other person. No title to and ownership of the software is hereby
- * transferred.
- *
- *
- * ******************************************************************** */
- namespace ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Backup\Providers;
- use MGProvision\Proxmox\v2\models\File;
- use ModulesGarden\ProxmoxAddon\App\Jobs\Cloud\RestoreVm;
- use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
- use ModulesGarden\ProxmoxAddon\App\Services\Cloud\ProductService;
- use ModulesGarden\ProxmoxAddon\App\Enum\Cloud\ConfigurableOption;
- use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Interfaces\ClientArea;
- use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\ResponseTemplates\HtmlDataJsonResponse;
- use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\Forms\DataProviders\BaseDataProvider;
- use function ModulesGarden\ProxmoxAddon\Core\Helper\queue;
- class BackupProvider extends BaseDataProvider implements ClientArea
- {
- use ProductService;
- use ApiService;
- public function read()
- {
- if ($this->actionElementId)
- {
- $this->data = json_decode(base64_decode($this->actionElementId), true);
- }
- }
- public function create()
- {
- $this->acl()->backup();
- $this->resourceGuard()->backupLimit();
- $storage = $this->configuration()->getBackupStorage();
- $routing = $this->configuration()->isBackupRouting() ? 1 : 0;
- $maxFiles = $this->configuration()->getBackupMaxFiles();
- if($this->isWhmcsConfigOption(ConfigurableOption::BACKUPS_FILES) && $this->getWhmcsConfigOption(ConfigurableOption::BACKUPS_FILES)!="-1"){
- $maxFiles = $this->getWhmcsConfigOption(ConfigurableOption::BACKUPS_FILES);
- }else if($this->getWhmcsConfigOption(ConfigurableOption::BACKUPS_FILES)=="-1"){
- $maxFiles = null;
- }
- $vm = \ModulesGarden\ProxmoxAddon\Core\Helper\sl('Vm')->getVm();
- $vm ->backup($storage, $routing, $maxFiles, $this->formData['compress'], $this->formData['mode']);
- return (new HtmlDataJsonResponse())
- ->setStatusSuccess()
- ->setMessageAndTranslate('The backup creation is in progress')
- ->addData('createButtonStatus', $this->configuration()->isPermissionBackup() && $this->resourceGuard()->hasBackupLimit())
- ->setCallBackFunction('pmToggleBackupButton');
- }
- public function restore()
- {
- $id = \ModulesGarden\ProxmoxAddon\Core\Helper\sl('Vm')->getVmModel()->id;
- queue(RestoreVm::class, ['volid' => $this->formData['volid']], null, 'hosting', $this->getWhmcsParamByKey('serviceid'), $id);
- return (new HtmlDataJsonResponse())
- ->setStatusSuccess()
- ->setMessageAndTranslate('The virtual machine restore is in progress');
- }
- public function update()
- {
- }
- public function delete()
- {
- $this->acl()->backup();
- $node = \ModulesGarden\ProxmoxAddon\Core\Helper\sl('Vm')->getVmModel()->node;
- $storage = $this->configuration()->getBackupStorage();
- $volid = $this->formData['volid'];
- $backupFile = new File();
- $backupFile->setApi($this->api());
- $backupFile->setPath("/nodes/{$node}/storage/{$storage}/content/{$volid}");
- $backupFile->delete();
- return (new HtmlDataJsonResponse())
- ->setStatusSuccess()
- ->setMessageAndTranslate('The backup has been deleted successfully')
- ->addData('createButtonStatus', $this->configuration()->isPermissionBackup() && $this->resourceGuard()->hasBackupLimit())
- ->setCallBackFunction('pmToggleBackupButton');
- }
- public function deleteMass()
- {
- $this->acl()->backup();
- $node = \ModulesGarden\ProxmoxAddon\Core\Helper\sl('Vm')->getVmModel()->node;
- $storage = $this->configuration()->getBackupStorage();
- $backupFile = new File();
- $backupFile->setApi($this->api());
- foreach ($this->request->get('massActions') as $id)
- {
- $data = json_decode(base64_decode($id), true);
- $volid = $data['volid'];
- $backupFile->setPath("/nodes/{$node}/storage/{$storage}/content/{$volid}");
- $backupFile->delete();
- }
- return (new HtmlDataJsonResponse())
- ->setStatusSuccess()
- ->setMessageAndTranslate('The backups have been deleted successfully')
- ->addData('createButtonStatus', $this->configuration()->isPermissionBackup() && $this->resourceGuard()->hasBackupLimit())
- ->setCallBackFunction('pmToggleBackupButton');
- }
- }
|