IpLogDataTable.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace ModulesGarden\ProxmoxAddon\App\UI\IpLog\Pages;
  3. use ModulesGarden\ProxmoxAddon\App\Models\IpLog;
  4. use ModulesGarden\ProxmoxAddon\App\UI\IpLog\Buttons\DeleteButton;
  5. use ModulesGarden\ProxmoxAddon\App\UI\IpLog\Buttons\DeleteMassButton;
  6. use ModulesGarden\ProxmoxAddon\Core\Models\Whmcs\Client;
  7. use ModulesGarden\ProxmoxAddon\Core\Models\Whmcs\Hosting;
  8. use ModulesGarden\ProxmoxAddon\Core\UI\Interfaces\AdminArea;
  9. use ModulesGarden\ProxmoxAddon\Core\UI\Widget\DataTable\Column;
  10. use ModulesGarden\ProxmoxAddon\Core\UI\Widget\DataTable\DataProviders\Providers\QueryDataProvider;
  11. use ModulesGarden\ProxmoxAddon\Core\UI\Widget\DataTable\DataTable;
  12. /**
  13. * Description of ServersDataTable
  14. *
  15. * @author Pawel Kopec <pawelk@modulesgardne.com>
  16. */
  17. class IpLogDataTable extends DataTable implements AdminArea
  18. {
  19. public function initContent()
  20. {
  21. $this->initIds('ipLog');
  22. $this->title = null;
  23. $this->addActionButton(new DeleteButton());
  24. $this->addMassActionButton(new DeleteMassButton);
  25. }
  26. protected function loadHtml()
  27. {
  28. $i = (new IpLog())->getTable();
  29. $h = (new Hosting)->getTable();
  30. $c = (new Client())->getTable();
  31. $this->addColumn((new Column('id', $i))->setSearchable(true, Column::TYPE_INT)->setOrderable('DESC'))
  32. ->addColumn((new Column('message', $i))->setSearchable(true, Column::TYPE_STRING)->setOrderable())
  33. ->addColumn((new Column('domain', $h))->setSearchable(true, Column::TYPE_STRING)->setOrderable())
  34. ->addColumn((new Column('firstname', $c))->setSearchable(true, Column::TYPE_STRING)->setOrderable())
  35. ->addColumn((new Column('created_at', $i))->setSearchable(true, Column::TYPE_DATE)->setOrderable());
  36. }
  37. public function replaceFieldDomain($key, $row)
  38. {
  39. if ($row->domain)
  40. {
  41. return sprintf('<a href="clientsservices.php?userid=%s&id=%s"> %s</a>', $row->userid, $row->hosting_id, $row->domain);
  42. }
  43. return sprintf('<a href="clientsservices.php?userid=%s&id=%s"> %s</a>', $row->userid, $row->hosting_id, $row->hosting_id);
  44. }
  45. public function replaceFieldFirstname($key, $row)
  46. {
  47. return sprintf('<a href="clientssummary.php?userid=%s">%s %s</a>', $row->userid, $row->firstname, $row->lastname);
  48. }
  49. protected function loadData()
  50. {
  51. $i = (new IpLog())->getTable();
  52. $h = (new Hosting)->getTable();
  53. $c = (new Client())->getTable();
  54. $query = (new IpLog())
  55. ->query()
  56. ->getQuery()
  57. ->leftJoin($h, "{$i}.hosting_id", '=', "{$h}.id")
  58. ->leftJoin($c, "{$h}.userid", '=', "{$c}.id")
  59. ->select("{$i}.*", "{$h}.domain", "{$h}.userid", "{$c}.firstname", "{$c}.lastname");
  60. $dataProv = new QueryDataProvider();
  61. $dataProv->setDefaultSorting("id", 'DESC');
  62. $dataProv->setData($query);
  63. $this->setDataProvider($dataProv);
  64. }
  65. }