Ressources.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. namespace ModulesGarden\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Repository;
  3. use ModulesGarden\Servers\KerioEmail\App\Enums\Size;
  4. use ModulesGarden\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Interfaces\AbstractApiClient;
  5. use ModulesGarden\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Interfaces\AbstractRepository;
  6. use ModulesGarden\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\Ressource;
  7. use ModulesGarden\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\RessourceAlias;
  8. use ModulesGarden\Servers\KerioEmail\App\Libs\Kerio\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. $ressources = $result->getResponseBody()['GETALLCALENDARRESOURCESRESPONSE']['CALRESOURCE'];
  30. /**
  31. * API return one or araay with ressources
  32. */
  33. $tmp = [];
  34. if(isset($ressources['NAME']))
  35. {
  36. $tmpRessource = new Ressource($ressources);
  37. /**
  38. * skip ZiImbra default ressource
  39. */
  40. if (strpos($tmpRessource->getName(), 'galsync@') !== false)
  41. {
  42. return [];
  43. }
  44. $tmp[$tmpRessource->getId()] = $tmpRessource;
  45. }else{
  46. foreach($ressources as $ressource)
  47. {
  48. $tmpRessource = new Ressource($ressource);
  49. /**
  50. * skip ZiImbra default ressource
  51. */
  52. if (strpos($tmpRessource->getName(), 'galsync@') !== false)
  53. {
  54. continue;
  55. }
  56. $tmp[$tmpRessource->getId()] = $tmpRessource;
  57. }
  58. }
  59. return $tmp;
  60. }
  61. /**
  62. * @param $name
  63. * @return mixed
  64. */
  65. public function getRessources($name)
  66. {
  67. $ressources = $this->getByDomainName($name);
  68. foreach($ressources as $key => $ressource)
  69. {
  70. /* @var $ressource Ressource*/
  71. if (strpos($ressource->getName(), 'galsync@') !== false)
  72. {
  73. unset($ressources[$key]);
  74. continue;
  75. }
  76. }
  77. return $ressources;
  78. }
  79. /**
  80. * @param $id
  81. * @return Ressource
  82. */
  83. public function getRessourceInfoById($id)
  84. {
  85. $ressource = new Ressource();
  86. $ressource->setId($id);
  87. $result = $this->getClient()->ressource->getRessourceInfo($ressource);
  88. if(!$result->getLastError())
  89. {
  90. $body = $result->getResponseBody();
  91. $result = $ressource->fill($body['GETCALENDARRESOURCERESPONSE']);
  92. $result->setName($body['GETCALENDARRESOURCERESPONSE']['NAME']['DATA']);
  93. return $result;
  94. }
  95. return $result;
  96. }
  97. /**
  98. * @param $id
  99. * @return Ressource
  100. */
  101. public function getRessourceOptionsById($id)
  102. {
  103. $ressource = new Ressource();
  104. $ressource->setId($id);
  105. $result = $this->getClient()->ressource->getRessourceOptions($ressource);
  106. if(!$result->getLastError())
  107. {
  108. $body = $result->getResponseBody();
  109. return $ressource->fill($body['GETCALENDARRESOURCERESPONSE']['CALRESOURCE']);
  110. }
  111. return $result;
  112. }
  113. }