Account.php 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. <?php
  2. namespace ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Actions;
  3. use ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Interfaces\AbstractAction;
  4. use SoapFault;
  5. use SoapParam;
  6. use SoapVar;
  7. use ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Helpers\XmlParser;
  8. /**
  9. *
  10. * Created by PhpStorm.
  11. * User: Tomasz Bielecki ( tomasz.bi@thurdata.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 Kerio API
  23. * @param \ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\Account $account
  24. * @return bool|void
  25. */
  26. public function create(\ThurData\Servers\KerioEmail\App\Libs\Kerio\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 \ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\AccountAlias $alias
  60. * @return \ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\AccountAlias
  61. */
  62. public function createAlias(\ThurData\Servers\KerioEmail\App\Libs\Kerio\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 \ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\Account $account
  79. * @return bool|\ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\Account
  80. */
  81. public function update(\ThurData\Servers\KerioEmail\App\Libs\Kerio\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. $result = $this->connection->request("ModifyAccountRequest", $params);
  94. $this->setLastResult($result);
  95. if($accountData = $result->getResponseBody()['MODIFYACCOUNTRESPONSE']['ACCOUNT'])
  96. {
  97. $account->fill($accountData);
  98. return $account;
  99. }
  100. $this->setError($result->getLastError());
  101. return false;
  102. }
  103. public function setPassword(\ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\Account $account)
  104. {
  105. $params = [
  106. new SoapParam($account->getId(), "id"),
  107. new SoapParam($account->getPassword(), "newPassword"),
  108. ];
  109. $result = $this->connection->request("SetPasswordRequest", $params);
  110. $this->setLastResult($result);
  111. if($result->getLastError())
  112. {
  113. $this->setError($result->getLastError());
  114. return false;
  115. }
  116. return true;
  117. }
  118. /**
  119. * @param \ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\Account $account
  120. * @return bool
  121. */
  122. public function delete(\ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\Account $account)
  123. {
  124. $params = [
  125. new SoapParam($account->getId(), "id"),
  126. ];
  127. $result = $this->connection->request("DeleteAccountRequest", $params);
  128. $this->setLastResult($result);
  129. if($result->getLastError())
  130. {
  131. $this->setError($result->getLastError());
  132. return false;
  133. }
  134. return true;
  135. }
  136. /**
  137. * @param \ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\AccountAlias $alias
  138. * @return bool
  139. */
  140. public function deleteAlias(\ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\AccountAlias $alias)
  141. {
  142. $params = [
  143. new SoapParam($alias->getAccountId(), "id"),
  144. new SoapParam($alias->getAlias(), "alias"),
  145. ];
  146. $result = $this->connection->request("RemoveAccountAliasRequest", $params);
  147. $this->setLastResult($result);
  148. if(!$result->getLastError())
  149. {
  150. return true;
  151. }
  152. $this->setError($result->getLastError());
  153. return false;
  154. }
  155. /**
  156. * @param $name
  157. * @return \ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Response
  158. */
  159. public function getAccountId($name)
  160. {
  161. $params = [
  162. new SoapVar('<ns1:account by="name">' . $name . '</ns1:account>', XSD_ANYXML),
  163. ];
  164. return $this->connection->cleanResponse()->request("GetAccountInfoRequest", $params);
  165. }
  166. /**
  167. * @param \ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\Account $account
  168. * @return \ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Response
  169. */
  170. public function getAccountInfo(\ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\Account $account)
  171. {
  172. if($value = $account->getId())
  173. {
  174. $type = 'id';
  175. }elseif($value =$account->getName())
  176. {
  177. $type = 'name';
  178. }
  179. $result = null;
  180. $params = [
  181. new SoapVar('<ns1:account by="' . $type . '">' . $value . '</ns1:account>', XSD_ANYXML),
  182. ];
  183. return $this->connection->request("GetAccountInfoRequest", $params);
  184. }
  185. /**
  186. * @param \ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\Account $account
  187. * @return \ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Response
  188. */
  189. public function delegateAuth(\ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\Account $account)
  190. {
  191. if($value = $account->getId())
  192. {
  193. $type = 'id';
  194. }elseif($value =$account->getName())
  195. {
  196. $type = 'name';
  197. }
  198. $result = null;
  199. $params = [
  200. new SoapVar('<ns1:account by="' . $type . '">' . $value . '</ns1:account>', XSD_ANYXML),
  201. ];
  202. $result = $this->connection->cleanResponse()->request("DelegateAuthRequest", $params);
  203. $this->setLastResult($result);
  204. if($result->getLastError())
  205. {
  206. $this->setError($result->getLastError());
  207. return false;
  208. }
  209. return $result;
  210. }
  211. /**
  212. * @param \ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\Account $account
  213. * @return \ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Response
  214. */
  215. public function getAccountOptions(\ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\Account $account)
  216. {
  217. if($value = $account->getId())
  218. {
  219. $type = 'id';
  220. }elseif($value =$account->getName())
  221. {
  222. $type = 'name';
  223. }
  224. $params = [
  225. new SoapVar('<ns1:account by="' . $type . '">' . $value . '</ns1:account>', XSD_ANYXML),
  226. ];
  227. return $this->connection
  228. ->cleanResponse()
  229. ->request("GetAccountRequest", $params);
  230. }
  231. /**
  232. * @param \ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\Domain $domain
  233. * @return \ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Response
  234. */
  235. public function getAllByDomain(\ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\Domain $domain)
  236. {
  237. if($value = $domain->getId())
  238. {
  239. $type = 'id';
  240. }elseif($value =$domain->getName())
  241. {
  242. $type = 'name';
  243. }
  244. $params = [
  245. new SoapVar('<ns1:domain by="' . $type . '">' . $value . '</ns1:domain>', XSD_ANYXML),
  246. ];
  247. $result = $this->connection->request("GetAllAccountsRequest", $params);
  248. return $result;
  249. }
  250. public function getAllAccounts($idOrNameDomain, $type = "auto")
  251. {
  252. if ($type == "auto")
  253. {
  254. //$realType = getDomainType($idOrNameDomain);
  255. }
  256. else
  257. {
  258. $realType = $type;
  259. }
  260. $result = null;
  261. $params = [
  262. new SoapVar('<ns1:domain by="' . $realType . '">' . $idOrNameDomain . '</ns1:domain>', XSD_ANYXML),
  263. ];
  264. return $this->connection->request("GetAllAccountsRequest", $params);
  265. }
  266. }