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. logModuleCall(
  47. 'zimbraEmail',
  48. __FUNCTION__,
  49. $params,
  50. 'Debug Account',
  51. $result
  52. );
  53. $this->setLastResult($result);
  54. /**
  55. * load response to model
  56. */
  57. if($accountData = $result->getResponseBody()['CREATEACCOUNTRESPONSE']['ACCOUNT'])
  58. {
  59. $account->fill($accountData);
  60. return $account;
  61. }
  62. $this->setError($result->getLastError());
  63. return false;
  64. }
  65. /**
  66. * @param \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\AccountAlias $alias
  67. * @return \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\AccountAlias
  68. */
  69. public function createAlias(\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\AccountAlias $alias)
  70. {
  71. $params = [
  72. new SoapParam($alias->getAccountId(), "id"),
  73. new SoapParam($alias->getAlias(), "alias"),
  74. ];
  75. $result = $this->connection->request("AddAccountAliasRequest", $params);
  76. $this->setLastResult($result);
  77. if(!$result->getLastError())
  78. {
  79. return $alias;
  80. }
  81. $this->setError($result->getLastError());
  82. return false;
  83. }
  84. /**
  85. * @param \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Account $account
  86. * @return bool|\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Account
  87. */
  88. public function update(\ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Account $account)
  89. {
  90. $params = [
  91. new SoapParam($account->getId(), "id"),
  92. ];
  93. /**
  94. * add account params
  95. */
  96. foreach ($account->getAttrs() as $key => $value)
  97. {
  98. $params[] = new SoapVar('<ns1:a n="' . $key . '">' . $value . '</ns1:a>', XSD_ANYXML);
  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. }