DomainAliases.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. namespace ThurData\Servers\KerioEmail\App\UI\Client\DomainAlias\Pages;
  3. use ThurData\Servers\KerioEmail\App\UI\Client\DomainAlias\Buttons\AddDomainAliasButton;
  4. use ThurData\Servers\KerioEmail\App\UI\Client\DomainAlias\Buttons\DeleteDomainAliasButton;
  5. use ThurData\Servers\KerioEmail\App\UI\Client\DomainAlias\Buttons\MassDeleteDomainAliasButton;
  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: 13:37
  18. * Class DomainAliases
  19. */
  20. class DomainAliases extends DataTable implements ClientArea
  21. {
  22. protected $id = 'lists';
  23. protected $name = 'lists';
  24. protected $title = null;
  25. protected function loadHtml()
  26. {
  27. $this
  28. ->addColumn((new Column('name'))
  29. ->setOrderable(DataProvider::SORT_ASC)
  30. ->setSearchable(true, Column::TYPE_STRING));
  31. }
  32. public function initContent()
  33. {
  34. $this->addMassActionButton(new MassDeleteDomainAliasButton());
  35. $this->addButton(new AddDomainAliasButton());
  36. $this->addActionButton(new DeleteDomainAliasButton());
  37. }
  38. public function loadData()
  39. {
  40. $maildomain = $this->getWhmcsParamByKey('domain');
  41. $api = new KerioWhmcs('whmcsKerioEmail', 'Thurdata', '1.0');
  42. try {
  43. $api->login($this->getWhmcsParamByKey('serverhostname'), $this->getWhmcsParamByKey('serverusername'), $this->getWhmcsParamByKey('serverpassword'));
  44. $domains = $api->getDomains(['id','name','aliasList']);
  45. } catch (KerioApiException $error) {
  46. logModuleCall(
  47. 'kerioEmail',
  48. __FUNCTION__,
  49. $error,
  50. 'Debug Error',
  51. $error->getMessage()
  52. );
  53. return ['error' => $error->getMessage()];
  54. }
  55. foreach($domains as $domain) {
  56. if(($domain['name']) === $maildomain){
  57. $aliasList = $domain['aliasList'];
  58. }
  59. }
  60. /**
  61. *
  62. * prepare new array
  63. */
  64. $data = [];
  65. /**
  66. * parse aliases
  67. */
  68. foreach ($aliasList as $alias)
  69. {
  70. /* @var $alias Alias */
  71. $tmp = [
  72. 'id' => $alias,
  73. 'name' => $alias,
  74. ];
  75. $data[] = $tmp;
  76. }
  77. $dataProv = new ArrayDataProvider();
  78. $dataProv->setDefaultSorting('name', 'ASC')->setData($data);
  79. $this->setDataProvider($dataProv);
  80. }
  81. }