SnippetTrait.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. namespace ModulesGarden\ProxmoxAddon\App\Traits\Vps;
  3. use MGProvision\Proxmox\v2\repository\FileRepository;
  4. use ModulesGarden\ProxmoxAddon\App\Enum\Vps\ConfigurableOption;
  5. use ModulesGarden\ProxmoxAddon\App\Enum\Vps\CustomField;
  6. use ModulesGarden\ProxmoxAddon\App\Models\CloudInitScript;
  7. use ModulesGarden\ProxmoxAddon\App\Repositories\ServerConfigurationRepository;
  8. trait SnippetTrait
  9. {
  10. public function hasSnippet(){
  11. if($this->isWhmcsConfigOption(ConfigurableOption::CLOUD_INIT_SCRIPT) &&
  12. $this->getWhmcsConfigOption(ConfigurableOption::CLOUD_INIT_SCRIPT) !=0 ){
  13. $id = $this->getWhmcsConfigOption(ConfigurableOption::CLOUD_INIT_SCRIPT);
  14. }else{
  15. $id = $this->configuration()->getCloudInitScript();
  16. }
  17. if(!$id || !CloudInitScript::find($id)->count()){
  18. return false;
  19. }
  20. return $id && $id > 0;
  21. }
  22. /**
  23. * @return \MGProvision\Proxmox\v2\models\File|null
  24. */
  25. public function getSnippetFile(){
  26. $serverConfiguration = new ServerConfigurationRepository($this->getWhmcsParamByKey('serverid'));
  27. if(!$serverConfiguration->snippetDirectory || !$serverConfiguration->snippetStorage){
  28. return;
  29. }
  30. $fileRepository = new FileRepository();
  31. $fileRepository->findByNodes([$this->getWhmcsCustomField(CustomField::NODE)])
  32. ->findSnippetsByServiceId($this->getWhmcsParamByKey('serviceid'))
  33. ->findByStorages([$serverConfiguration->snippetStorage]);
  34. return $fileRepository->first();
  35. }
  36. }