DomainAliases.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. namespace ThurData\Servers\KerioEmail\App\UI\Client\DomainAlias\Pages;
  3. use ThurData\Servers\KerioEmail\App\Helpers\KerioManager;
  4. use ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\Domain;
  5. use ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Repository;
  6. use ThurData\Servers\KerioEmail\App\UI\Client\DomainAlias\Buttons\AddDomainAliasButton;
  7. use ThurData\Servers\KerioEmail\App\UI\Client\DomainAlias\Buttons\AddListButton;
  8. use ThurData\Servers\KerioEmail\App\UI\Client\DomainAlias\Buttons\DeleteDomainAliasButton;
  9. use ThurData\Servers\KerioEmail\App\UI\Client\DomainAlias\Buttons\MassDeleteDomainAliasButton;
  10. use ThurData\Servers\KerioEmail\Core\Models\Whmcs\Hosting;
  11. use ThurData\Servers\KerioEmail\Core\UI\Interfaces\ClientArea;
  12. use ThurData\Servers\KerioEmail\Core\UI\Widget\DataTable\Column;
  13. use ThurData\Servers\KerioEmail\Core\UI\Widget\DataTable\DataProviders\DataProvider;
  14. use ThurData\Servers\KerioEmail\Core\UI\Widget\DataTable\DataProviders\Providers\ArrayDataProvider;
  15. use ThurData\Servers\KerioEmail\Core\UI\Widget\DataTable\DataTable;
  16. use ThurData\Servers\KerioEmail\Api\KerioWhmcs;
  17. /**
  18. *
  19. * Created by PhpStorm.
  20. * User: ThurData
  21. * Date: 18.09.19
  22. * Time: 13:37
  23. * Class DomainAliases
  24. */
  25. class DomainAliases extends DataTable implements ClientArea
  26. {
  27. protected $id = 'lists';
  28. protected $name = 'lists';
  29. protected $title = null;
  30. protected function loadHtml()
  31. {
  32. $this
  33. ->addColumn((new Column('name'))
  34. ->setOrderable(DataProvider::SORT_ASC)
  35. ->setSearchable(true, Column::TYPE_STRING));
  36. }
  37. public function initContent()
  38. {
  39. $this->addMassActionButton(new MassDeleteDomainAliasButton());
  40. $this->addButton(new AddDomainAliasButton());
  41. $this->addActionButton(new DeleteDomainAliasButton());
  42. }
  43. public function loadData()
  44. {
  45. $api = new KerioWhmcs('whmcsKerioEmail', 'Thurdata', '1.0');
  46. try {
  47. $api->login($this->getWhmcsParamByKey('serverhostname'), $this->getWhmcsParamByKey('serverusername'), $this->getWhmcsParamByKey('serverpassword'));
  48. $domains = $api->getDomains(['id','name','aliasList']);
  49. } catch (KerioApiException $error) {
  50. logModuleCall(
  51. 'kerioEmail',
  52. __FUNCTION__,
  53. $error,
  54. 'Debug Error',
  55. $error->getMessage()
  56. );
  57. return ['error' => $error->getMessage()];
  58. }
  59. foreach($domains as $domain) {
  60. if(($domain['name']) === $this->getWhmcsParamByKey('domain')){
  61. $this->domainID = $domain['id'];
  62. $this->domainName = $domain['name'];
  63. $this->aliasList = $domain['aliasList'];
  64. }
  65. }
  66. /**
  67. *
  68. * prepare new array
  69. */
  70. $data = [];
  71. /**
  72. * parse aliases
  73. */
  74. foreach ($this->aliasList as $alias)
  75. {
  76. /* @var $alias Alias */
  77. $tmp = [
  78. 'id' => $alias,
  79. 'name' => $alias,
  80. ];
  81. $data[] = $tmp;
  82. }
  83. $dataProv = new ArrayDataProvider();
  84. $dataProv->setDefaultSorting('name', 'ASC')->setData($data);
  85. $this->setDataProvider($dataProv);
  86. }
  87. }