Aliases.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <?php
  2. namespace ThurData\Servers\KerioEmail\App\UI\Client\EmailAlias\Pages;
  3. use ThurData\Servers\KerioEmail\App\UI\Client\EmailAlias\Buttons\AddEmailAliasButton;
  4. use ThurData\Servers\KerioEmail\App\UI\Client\EmailAlias\Buttons\DeleteEmailAliasButton;
  5. use ThurData\Servers\KerioEmail\App\UI\Client\EmailAlias\Buttons\MassDeleteEmailAliasButton;
  6. use ThurData\Servers\KerioEmail\Core\UI\Interfaces\ClientArea;
  7. use ThurData\Servers\KerioEmail\Core\UI\Widget\DataTable\Column;
  8. use ThurData\Servers\KerioEmail\Core\UI\Widget\DataTable\DataProviders\DataProvider;
  9. use ThurData\Servers\KerioEmail\Core\UI\Widget\DataTable\DataProviders\Providers\ArrayDataProvider;
  10. use ThurData\Servers\KerioEmail\Core\UI\Widget\DataTable\DataTable;
  11. use ThurData\Servers\KerioEmail\Api\KerioWhmcs;
  12. /**
  13. *
  14. * Created by PhpStorm.
  15. * User: ThurData
  16. * Date: 18.09.19
  17. * Time: 11:46
  18. * Class Aliases
  19. */
  20. class Aliases extends DataTable implements ClientArea
  21. {
  22. protected $id = 'emailAliases';
  23. protected $name = 'emailAliases';
  24. protected $title = null;
  25. protected function loadHtml()
  26. {
  27. $this
  28. ->addColumn((new Column('email_alias'))
  29. ->setOrderable(DataProvider::SORT_ASC)
  30. ->setSearchable(true, Column::TYPE_STRING))
  31. ->addColumn((new Column('account'))
  32. ->setOrderable()
  33. ->setSearchable(true));
  34. }
  35. public function initContent()
  36. {
  37. $this->addMassActionButton(new MassDeleteEmailAliasButton());
  38. $addEmailAliasesButton = new AddEmailAliasButton();
  39. if($this->isCreateButtonDisabled())
  40. {
  41. $addEmailAliasesButton->addHtmlAttribute('disabled', true);
  42. }
  43. $this->addButton($addEmailAliasesButton);
  44. $this->addActionButton(new DeleteEmailAliasButton());
  45. }
  46. public function loadData()
  47. {
  48. $fields = array(
  49. "id",
  50. "name",
  51. "deliverTo");
  52. $api = new KerioWhmcs('whmcsKerioEmail', 'Thurdata', '1.0');
  53. try {
  54. $api->login($this->getWhmcsParamByKey('serverhostname'), $this->getWhmcsParamByKey('serverusername'), $this->getWhmcsParamByKey('serverpassword'));
  55. $domains = $api->getDomains(['id','name']);
  56. } catch (KerioApiException $error) {
  57. logModuleCall(
  58. 'kerioEmail',
  59. __FUNCTION__,
  60. $error,
  61. 'Debug Error',
  62. $error->getMessage()
  63. );
  64. return ['error' => $error->getMessage()];
  65. }
  66. foreach($domains as $maildomain) {
  67. if(($maildomain['name']) === $this->getWhmcsParamByKey('domain')){
  68. $this->maildomainID = $maildomain['id'];
  69. $this->maildomain = $maildomain['name'];
  70. }
  71. }
  72. try {
  73. $aliases = $api->getAliases($fields,$this->maildomainID);
  74. } catch (KerioApiException $error) {
  75. logModuleCall(
  76. 'kerioEmail',
  77. __FUNCTION__,
  78. $error,
  79. 'Debug Error',
  80. $error->getMessage()
  81. );
  82. return ['error' => $error->getMessage()];
  83. }
  84. $api->logout();
  85. /**
  86. * format model to array
  87. */
  88. $data = [];
  89. foreach ($aliases as $alias)
  90. {
  91. /* @var $alias AccountAlias */
  92. $tmp = [
  93. 'id' => $alias['id'],
  94. 'email_alias' => $alias['name'] . '@' . $this->maildomain,
  95. 'account' => $alias['deliverTo']
  96. ];
  97. $data[] = $tmp;
  98. }
  99. $dataProv = new ArrayDataProvider();
  100. $dataProv->setDefaultSorting('email_alias', 'ASC')->setData($data);
  101. $this->setDataProvider($dataProv);
  102. }
  103. /**
  104. *
  105. * check if add button should be disabled
  106. * @return bool
  107. */
  108. private function isCreateButtonDisabled()
  109. {
  110. $domain = $this->getWhmcsParamByKey('domain');
  111. $api = new KerioWhmcs('whmcsKerioEmail', 'Thurdata', '1.0');
  112. try {
  113. $api->login($this->getWhmcsParamByKey('serverhostname'), $this->getWhmcsParamByKey('serverusername'), $this->getWhmcsParamByKey('serverpassword'));
  114. $domainID = $api->getDomainId($domain);
  115. } catch (KerioApiException $error) {
  116. logModuleCall(
  117. 'kerioEmail',
  118. __FUNCTION__,
  119. $error,
  120. 'Debug Error',
  121. $error->getMessage()
  122. );
  123. return ['error' => $error->getMessage()];
  124. }
  125. try {
  126. $accCount = $api->countUser($domainID);
  127. } catch (KerioApiException $error) {
  128. logModuleCall(
  129. 'kerioEmail',
  130. __FUNCTION__,
  131. $error,
  132. 'Debug Error',
  133. $error->getMessage()
  134. );
  135. return ['error' => $error->getMessage()];
  136. }
  137. $api->logout();
  138. if ($accCount > 0) {
  139. return FALSE;
  140. }
  141. return TRUE;
  142. }
  143. }