Ressources.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. namespace ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Repository;
  3. use ModulesGarden\Servers\ZimbraEmail\App\Enums\Size;
  4. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Interfaces\AbstractApiClient;
  5. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Interfaces\AbstractRepository;
  6. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Ressource;
  7. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\RessourceAlias;
  8. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Domain;
  9. /**
  10. *
  11. * Created by PhpStorm.
  12. * User: Tomasz Bielecki ( tomasz.bi@modulesgarden.com )
  13. * Date: 10.09.19
  14. * Time: 08:28
  15. * Class Ressources
  16. */
  17. class Ressources extends AbstractRepository
  18. {
  19. /**
  20. * get all ressource for domain
  21. * @param $name
  22. * @return mixed
  23. */
  24. public function getByDomainName($name)
  25. {
  26. $domain = new Domain();
  27. $domain->setName($name);
  28. $result = $this->getClient()->ressource->getAllByDomain($domain);
  29. logModuleCall(
  30. 'zimbraEmail',
  31. __FUNCTION__,
  32. $domain,
  33. 'Debug Ressource',
  34. $result
  35. );
  36. $ressources = $result->getResponseBody()['GETALLressourceSRESPONSE']['ressource'];
  37. /**
  38. * API return one or araay with ressources
  39. */
  40. $tmp = [];
  41. if(isset($ressources['NAME']))
  42. {
  43. $tmpRessource = new Ressource($ressources);
  44. /**
  45. * skip ZiImbra default ressource
  46. */
  47. if (strpos($tmpRessource->getName(), 'galsync@') !== false)
  48. {
  49. return [];
  50. }
  51. $tmp[$tmpRessource->getId()] = $tmpRessource;
  52. }else{
  53. foreach($ressources as $ressource)
  54. {
  55. $tmpRessource = new Ressource($ressource);
  56. /**
  57. * skip ZiImbra default ressource
  58. */
  59. if (strpos($tmpRessource->getName(), 'galsync@') !== false)
  60. {
  61. continue;
  62. }
  63. $tmp[$tmpRessource->getId()] = $tmpRessource;
  64. }
  65. }
  66. return $tmp;
  67. }
  68. /**
  69. * @param $name
  70. * @return mixed
  71. */
  72. public function getRessources($name)
  73. {
  74. $ressources = $this->getByDomainName($name);
  75. foreach($ressources as $key => $ressource)
  76. {
  77. /* @var $ressource Ressource*/
  78. if (strpos($ressource->getName(), 'galsync@') !== false)
  79. {
  80. unset($ressources[$key]);
  81. continue;
  82. }
  83. }
  84. return $ressources;
  85. }
  86. /**
  87. * @param $id
  88. * @return Ressource
  89. */
  90. public function getRessourceInfoById($id)
  91. {
  92. $ressource = new Ressource();
  93. $ressource->setId($id);
  94. $result = $this->getClient()->ressource->getRessourceInfo($ressource);
  95. if(!$result->getLastError())
  96. {
  97. $body = $result->getResponseBody();
  98. $result = $ressource->fill($body['GETressourceINFORESPONSE']);
  99. $result->setName($body['GETressourceINFORESPONSE']['NAME']['DATA']);
  100. return $result;
  101. }
  102. return $result;
  103. }
  104. /**
  105. * @param $id
  106. * @return Ressource
  107. */
  108. public function getRessourceOptionsById($id)
  109. {
  110. $ressource = new Ressource();
  111. $ressource->setId($id);
  112. $result = $this->getClient()->ressource->getRessourceOptions($ressource);
  113. if(!$result->getLastError())
  114. {
  115. $body = $result->getResponseBody();
  116. return $ressource->fill($body['GETressourceRESPONSE']['ressource']);
  117. }
  118. return $result;
  119. }
  120. }