Ressource.php 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. <?php
  2. namespace ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Actions;
  3. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Interfaces\AbstractAction;
  4. use SoapFault;
  5. use SoapParam;
  6. use SoapVar;
  7. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Helpers\XmlParser;
  8. /**
  9. *
  10. * Created by PhpStorm.
  11. * User: Tomasz Bielecki ( tomasz.bi@modulesgarden.com )
  12. * Date: 28.08.19
  13. * Time: 13:46
  14. * Class Account
  15. */
  16. class Ressource extends AbstractAction
  17. {
  18. public function read()
  19. {
  20. }
  21. /**
  22. * @description create ressource in Zimbra API
  23. * @param \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Ressource $ressource
  24. * @return bool|void
  25. */
  26. public function create(\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Ressource $ressource)
  27. {
  28. /**
  29. *
  30. */
  31. $params = [
  32. new SoapParam($ressource->getName(), "name"),
  33. new SoapParam($ressource->getPassword(), "password"),
  34. ];
  35. /**
  36. * add ressource params
  37. */
  38. foreach ($ressource->getAttrs() as $key => $value)
  39. {
  40. $params[] = new SoapVar('<ns1:a n="' . $key . '">' . $value . '</ns1:a>', XSD_ANYXML);
  41. }
  42. /**
  43. * run request
  44. */
  45. $result = $this->connection->request("CreateCalendarResourceRequest", $params);
  46. logModuleCall(
  47. 'zimbraEmail',
  48. __FUNCTION__,
  49. $params,
  50. 'Debug Ressource',
  51. $result
  52. );
  53. $this->setLastResult($result);
  54. /**
  55. * load response to model
  56. */
  57. if($ressourceData = $result->getResponseBody()['CREATECALENDARRESOURCERESPONSE']['CALRESOURCE'])
  58. {
  59. $ressource->fill($ressourceData);
  60. return $ressource;
  61. }
  62. $this->setError($result->getLastError());
  63. return false;
  64. }
  65. /**
  66. * @param \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Ressource $ressource
  67. * @return bool|\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Ressource
  68. */
  69. public function update(\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Ressource $ressource)
  70. {
  71. $params = [
  72. new SoapParam($ressource->getId(), "id"),
  73. ];
  74. /**
  75. * add ressource params
  76. */
  77. foreach ($ressource->getAttrs() as $key => $value)
  78. {
  79. $params[] = new SoapVar('<ns1:a n="' . $key . '">' . $value . '</ns1:a>', XSD_ANYXML);
  80. }
  81. $result = $this->connection->request("ModifyCalendarResourceRequest", $params);
  82. $this->setLastResult($result);
  83. if($ressourceData = $result->getResponseBody()['MODIFYCALENDARRESOURCEREQUEST']['CALRESOURCE'])
  84. {
  85. $ressource->fill($ressourceData);
  86. return $ressource;
  87. }
  88. $this->setError($result->getLastError());
  89. return false;
  90. }
  91. public function setPassword(\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Ressource $ressource)
  92. {
  93. $params = [
  94. new SoapParam($ressource->getId(), "id"),
  95. new SoapParam($ressource->getPassword(), "newPassword"),
  96. ];
  97. $result = $this->connection->request("SetPasswordRequest", $params);
  98. $this->setLastResult($result);
  99. if($result->getLastError())
  100. {
  101. $this->setError($result->getLastError());
  102. return false;
  103. }
  104. return true;
  105. }
  106. /**
  107. * @param \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Ressource $ressource
  108. * @return bool
  109. */
  110. public function delete(\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Ressource $ressource)
  111. {
  112. $params = [
  113. new SoapParam($ressource->getId(), "id"),
  114. ];
  115. $result = $this->connection->request("DeleteCalendarResourceRequest", $params);
  116. $this->setLastResult($result);
  117. if($result->getLastError())
  118. {
  119. $this->setError($result->getLastError());
  120. return false;
  121. }
  122. return true;
  123. }
  124. /**
  125. * @param $name
  126. * @return \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Response
  127. */
  128. public function getRessourceId($name)
  129. {
  130. $params = [
  131. new SoapVar('<ns1:calresource by="name">' . $name . '</ns1:calresource>', XSD_ANYXML),
  132. ];
  133. return $this->connection->cleanResponse()->request("GetCalendarResourceRequest", $params);
  134. }
  135. /**
  136. * @param \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Ressource $ressource
  137. * @return \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Response
  138. */
  139. public function getRessourceInfo(\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Ressource $ressource)
  140. {
  141. if($value = $ressource->getId())
  142. {
  143. $type = 'id';
  144. }elseif($value =$ressource->getName())
  145. {
  146. $type = 'name';
  147. }
  148. $result = null;
  149. $params = [
  150. new SoapVar('<ns1:calresource by="' . $type . '">' . $value . '</ns1:calresource>', XSD_ANYXML),
  151. ];
  152. return $this->connection->request("GetCalendarResourceRequest", $params);
  153. }
  154. /**
  155. * @param \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Ressource $ressource
  156. * @return \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Response
  157. */
  158. public function getRessourceOptions(\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Ressource $ressource)
  159. {
  160. if($value = $ressource->getId())
  161. {
  162. $type = 'id';
  163. }elseif($value =$ressource->getName())
  164. {
  165. $type = 'name';
  166. }
  167. $params = [
  168. new SoapVar('<ns1:calresource by="' . $type . '">' . $value . '</ns1:calresource>', XSD_ANYXML),
  169. ];
  170. return $this->connection
  171. ->cleanResponse()
  172. ->request("GetCalendarResourceRequest", $params);
  173. }
  174. /**
  175. * @param \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Domain $domain
  176. * @return \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Response
  177. */
  178. public function getAllByDomain(\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Domain $domain)
  179. {
  180. if($value = $domain->getId())
  181. {
  182. $type = 'id';
  183. }elseif($value =$domain->getName())
  184. {
  185. $type = 'name';
  186. }
  187. $params = [
  188. new SoapVar('<ns1:domain by="' . $type . '">' . $value . '</ns1:domain>', XSD_ANYXML),
  189. ];
  190. $result = $this->connection->request("GetAllCalendarResourcesRequest", $params);
  191. return $result;
  192. }
  193. public function getAllRessources($idOrNameDomain, $type = "auto")
  194. {
  195. if ($type == "auto")
  196. {
  197. //$realType = getDomainType($idOrNameDomain);
  198. }
  199. else
  200. {
  201. $realType = $type;
  202. }
  203. $result = null;
  204. $params = [
  205. new SoapVar('<ns1:domain by="' . $realType . '">' . $idOrNameDomain . '</ns1:domain>', XSD_ANYXML),
  206. ];
  207. return $this->connection->request("GetAllCalendarResourcesRequest", $params);
  208. }
  209. }