ArchiveSelect.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace ModulesGarden\Servers\ProxmoxCloudVps\App\UI\VmCreate\Fields;
  3. use MGProvision\Proxmox\v2\repository\FileRepository;
  4. use MGProvision\Proxmox\v2\repository\StorageRepository;
  5. use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
  6. use ModulesGarden\ProxmoxAddon\App\Services\Cloud\ProductService;
  7. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Interfaces\ClientArea;
  8. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\Forms\AjaxFields\Select;
  9. class ArchiveSelect extends Select implements ClientArea
  10. {
  11. use ProductService;
  12. use ApiService;
  13. public function prepareAjaxData()
  14. {
  15. session_write_close();
  16. //default node
  17. if($this->getRequestValue('location')){
  18. $defaultNode = $this->getRequestValue('location');
  19. }else{
  20. $defaultNode = $this->getNode()->getNode();
  21. }
  22. $storageRepository = new StorageRepository();
  23. $storageRepository->findByNodes([$defaultNode])
  24. ->findEnabed();
  25. $storages = $storageRepository->fetchAsArray();
  26. $fileRepository = new FileRepository();
  27. $fileRepository->findByNodes([$defaultNode])
  28. ->findByStorages($storages);
  29. if($this->configuration()->isLxc()){
  30. $fileRepository->findBackupLxcTemplates();
  31. }
  32. if($this->configuration()->isQemu()){
  33. $fileRepository->findBackupQemuTemplates();
  34. }
  35. foreach ($fileRepository->fetch() as $entity)
  36. {
  37. $fileKey = sprintf("%s:%s",$entity->getNode(),$entity->getVolid());
  38. if ($this->configuration()->archive && !in_array($fileKey, $this->configuration()->archive))
  39. {
  40. continue;
  41. }
  42. $this->availableValues[]=[
  43. "key" => $fileKey ,
  44. "value" => $entity->formatVolid(),
  45. ];
  46. }
  47. }
  48. }