Account.php 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  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 Account extends AbstractAction
  17. {
  18. public function read()
  19. {
  20. }
  21. /**
  22. * @description create account in Zimbra API
  23. * @param \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Account $account
  24. * @return bool|void
  25. */
  26. public function create(\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Account $account)
  27. {
  28. /**
  29. *
  30. */
  31. $params = [
  32. new SoapParam($account->getName(), "name"),
  33. new SoapParam($account->getPassword(), "password"),
  34. ];
  35. /**
  36. * add account params
  37. */
  38. foreach ($account->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("CreateAccountRequest", $params);
  46. $this->setLastResult($result);
  47. /**
  48. * load response to model
  49. */
  50. if($accountData = $result->getResponseBody()['CREATEACCOUNTRESPONSE']['ACCOUNT'])
  51. {
  52. $account->fill($accountData);
  53. return $account;
  54. }
  55. $this->setError($result->getLastError());
  56. return false;
  57. }
  58. /**
  59. * @param \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\AccountAlias $alias
  60. * @return \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\AccountAlias
  61. */
  62. public function createAlias(\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\AccountAlias $alias)
  63. {
  64. $params = [
  65. new SoapParam($alias->getAccountId(), "id"),
  66. new SoapParam($alias->getAlias(), "alias"),
  67. ];
  68. $result = $this->connection->request("AddAccountAliasRequest", $params);
  69. $this->setLastResult($result);
  70. if(!$result->getLastError())
  71. {
  72. return $alias;
  73. }
  74. $this->setError($result->getLastError());
  75. return false;
  76. }
  77. /**
  78. * @param \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Account $account
  79. * @return bool|\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Account
  80. */
  81. public function update(\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Account $account)
  82. {
  83. $params = [
  84. new SoapParam($account->getId(), "id"),
  85. ];
  86. /**
  87. * add account params
  88. */
  89. foreach ($account->getAttrs() as $key => $value)
  90. {
  91. $params[] = new SoapVar('<ns1:a n="' . $key . '">' . $value . '</ns1:a>', XSD_ANYXML);
  92. }
  93. logModuleCall(
  94. 'zimbraEmail',
  95. __FUNCTION__,
  96. $params,
  97. 'Debug Acount Action',
  98. $account
  99. );
  100. $result = $this->connection->request("ModifyAccountRequest", $params);
  101. $this->setLastResult($result);
  102. if($accountData = $result->getResponseBody()['MODIFYACCOUNTRESPONSE']['ACCOUNT'])
  103. {
  104. $account->fill($accountData);
  105. return $account;
  106. }
  107. $this->setError($result->getLastError());
  108. return false;
  109. }
  110. public function setPassword(\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Account $account)
  111. {
  112. $params = [
  113. new SoapParam($account->getId(), "id"),
  114. new SoapParam($account->getPassword(), "newPassword"),
  115. ];
  116. $result = $this->connection->request("SetPasswordRequest", $params);
  117. $this->setLastResult($result);
  118. if($result->getLastError())
  119. {
  120. $this->setError($result->getLastError());
  121. return false;
  122. }
  123. return true;
  124. }
  125. /**
  126. * @param \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Account $account
  127. * @return bool
  128. */
  129. public function delete(\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Account $account)
  130. {
  131. $params = [
  132. new SoapParam($account->getId(), "id"),
  133. ];
  134. $result = $this->connection->request("DeleteAccountRequest", $params);
  135. $this->setLastResult($result);
  136. if($result->getLastError())
  137. {
  138. $this->setError($result->getLastError());
  139. return false;
  140. }
  141. return true;
  142. }
  143. /**
  144. * @param \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\AccountAlias $alias
  145. * @return bool
  146. */
  147. public function deleteAlias(\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\AccountAlias $alias)
  148. {
  149. $params = [
  150. new SoapParam($alias->getAccountId(), "id"),
  151. new SoapParam($alias->getAlias(), "alias"),
  152. ];
  153. $result = $this->connection->request("RemoveAccountAliasRequest", $params);
  154. $this->setLastResult($result);
  155. if(!$result->getLastError())
  156. {
  157. return true;
  158. }
  159. $this->setError($result->getLastError());
  160. return false;
  161. }
  162. /**
  163. * @param $name
  164. * @return \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Response
  165. */
  166. public function getAccountId($name)
  167. {
  168. $params = [
  169. new SoapVar('<ns1:account by="name">' . $name . '</ns1:account>', XSD_ANYXML),
  170. ];
  171. return $this->connection->cleanResponse()->request("GetAccountInfoRequest", $params);
  172. }
  173. /**
  174. * @param \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Account $account
  175. * @return \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Response
  176. */
  177. public function getAccountInfo(\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Account $account)
  178. {
  179. if($value = $account->getId())
  180. {
  181. $type = 'id';
  182. }elseif($value =$account->getName())
  183. {
  184. $type = 'name';
  185. }
  186. $result = null;
  187. $params = [
  188. new SoapVar('<ns1:account by="' . $type . '">' . $value . '</ns1:account>', XSD_ANYXML),
  189. ];
  190. return $this->connection->request("GetAccountInfoRequest", $params);
  191. }
  192. /**
  193. * @param \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Account $account
  194. * @return \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Response
  195. */
  196. public function delegateAuth(\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Account $account)
  197. {
  198. if($value = $account->getId())
  199. {
  200. $type = 'id';
  201. }elseif($value =$account->getName())
  202. {
  203. $type = 'name';
  204. }
  205. $result = null;
  206. $params = [
  207. new SoapVar('<ns1:account by="' . $type . '">' . $value . '</ns1:account>', XSD_ANYXML),
  208. ];
  209. $result = $this->connection->cleanResponse()->request("DelegateAuthRequest", $params);
  210. $this->setLastResult($result);
  211. if($result->getLastError())
  212. {
  213. $this->setError($result->getLastError());
  214. return false;
  215. }
  216. return $result;
  217. }
  218. /**
  219. * @param \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Account $account
  220. * @return \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Response
  221. */
  222. public function getAccountOptions(\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Account $account)
  223. {
  224. if($value = $account->getId())
  225. {
  226. $type = 'id';
  227. }elseif($value =$account->getName())
  228. {
  229. $type = 'name';
  230. }
  231. $params = [
  232. new SoapVar('<ns1:account by="' . $type . '">' . $value . '</ns1:account>', XSD_ANYXML),
  233. ];
  234. return $this->connection
  235. ->cleanResponse()
  236. ->request("GetAccountRequest", $params);
  237. }
  238. /**
  239. * @param \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Domain $domain
  240. * @return \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Response
  241. */
  242. public function getAllByDomain(\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Domain $domain)
  243. {
  244. if($value = $domain->getId())
  245. {
  246. $type = 'id';
  247. }elseif($value =$domain->getName())
  248. {
  249. $type = 'name';
  250. }
  251. $params = [
  252. new SoapVar('<ns1:domain by="' . $type . '">' . $value . '</ns1:domain>', XSD_ANYXML),
  253. ];
  254. $result = $this->connection->request("GetAllAccountsRequest", $params);
  255. return $result;
  256. }
  257. public function getAllAccounts($idOrNameDomain, $type = "auto")
  258. {
  259. if ($type == "auto")
  260. {
  261. //$realType = getDomainType($idOrNameDomain);
  262. }
  263. else
  264. {
  265. $realType = $type;
  266. }
  267. $result = null;
  268. $params = [
  269. new SoapVar('<ns1:domain by="' . $realType . '">' . $idOrNameDomain . '</ns1:domain>', XSD_ANYXML),
  270. ];
  271. return $this->connection->request("GetAllAccountsRequest", $params);
  272. }
  273. }