DomainAliases.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. namespace ModulesGarden\Servers\ZimbraEmail\App\UI\Client\DomainAlias\Pages;
  3. use ModulesGarden\Servers\ZimbraEmail\App\Helpers\ZimbraManager;
  4. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Domain;
  5. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Repository;
  6. use ModulesGarden\Servers\ZimbraEmail\App\UI\Client\DomainAlias\Buttons\AddDomainAliasButton;
  7. use ModulesGarden\Servers\ZimbraEmail\App\UI\Client\DomainAlias\Buttons\AddListButton;
  8. use ModulesGarden\Servers\ZimbraEmail\App\UI\Client\DomainAlias\Buttons\DeleteDomainAliasButton;
  9. use ModulesGarden\Servers\ZimbraEmail\App\UI\Client\DomainAlias\Buttons\MassDeleteDomainAliasButton;
  10. use ModulesGarden\Servers\ZimbraEmail\Core\Models\Whmcs\Hosting;
  11. use ModulesGarden\Servers\ZimbraEmail\Core\UI\Interfaces\ClientArea;
  12. use ModulesGarden\Servers\ZimbraEmail\Core\UI\Widget\DataTable\Column;
  13. use ModulesGarden\Servers\ZimbraEmail\Core\UI\Widget\DataTable\DataProviders\DataProvider;
  14. use ModulesGarden\Servers\ZimbraEmail\Core\UI\Widget\DataTable\DataProviders\Providers\ArrayDataProvider;
  15. use ModulesGarden\Servers\ZimbraEmail\Core\UI\Widget\DataTable\DataTable;
  16. /**
  17. *
  18. * Created by PhpStorm.
  19. * User: Tomasz Bielecki ( tomasz.bi@modulesgarden.com )
  20. * Date: 18.09.19
  21. * Time: 13:37
  22. * Class DomainAliases
  23. */
  24. class DomainAliases extends DataTable implements ClientArea
  25. {
  26. protected $id = 'lists';
  27. protected $name = 'lists';
  28. protected $title = null;
  29. protected function loadHtml()
  30. {
  31. $this
  32. ->addColumn((new Column('name'))
  33. ->setOrderable(DataProvider::SORT_ASC)
  34. ->setSearchable(true, Column::TYPE_STRING))
  35. ->addColumn((new Column('description'))
  36. ->setOrderable()
  37. ->setSearchable(true));
  38. }
  39. public function initContent()
  40. {
  41. $this->addMassActionButton(new MassDeleteDomainAliasButton());
  42. $this->addButton(new AddDomainAliasButton());
  43. $this->addActionButton(new DeleteDomainAliasButton());
  44. }
  45. public function loadData()
  46. {
  47. /**
  48. * load hosting
  49. */
  50. $hosting = Hosting::where('id', $this->getRequestValue('id'))->first();
  51. /**
  52. * load api client by server id
  53. * get repo
  54. * get aliases per domain
  55. */
  56. $aliases = (new ZimbraManager())
  57. ->getApiByServer($hosting->server)
  58. ->soap
  59. ->repository()
  60. ->domains
  61. ->getAliases($hosting->domain);
  62. /**
  63. *
  64. * prepare new array
  65. */
  66. $data = [];
  67. /**
  68. * parse aliases
  69. */
  70. foreach ($aliases as $domain)
  71. {
  72. /* @var $domain Domain */
  73. $tmp = [
  74. 'id' => $domain->getId(),
  75. 'name' => $domain->getName(),
  76. 'description' => $domain->getAttr(Domain::ATTR_DESCRIPTION)
  77. ];
  78. $data[] = $tmp;
  79. }
  80. $dataProv = new ArrayDataProvider();
  81. $dataProv->setDefaultSorting('name', 'ASC')->setData($data);
  82. $this->setDataProvider($dataProv);
  83. }
  84. }