GeneralLogController.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. declare(strict_types=1);
  3. namespace PhpMyAdmin\Controllers\Server\Status\Monitor;
  4. use PhpMyAdmin\Controllers\Server\Status\AbstractController;
  5. use PhpMyAdmin\DatabaseInterface;
  6. use PhpMyAdmin\ResponseRenderer;
  7. use PhpMyAdmin\Server\Status\Data;
  8. use PhpMyAdmin\Server\Status\Monitor;
  9. use PhpMyAdmin\Template;
  10. use PhpMyAdmin\Url;
  11. final class GeneralLogController extends AbstractController
  12. {
  13. /** @var Monitor */
  14. private $monitor;
  15. /** @var DatabaseInterface */
  16. private $dbi;
  17. public function __construct(
  18. ResponseRenderer $response,
  19. Template $template,
  20. Data $data,
  21. Monitor $monitor,
  22. DatabaseInterface $dbi
  23. ) {
  24. parent::__construct($response, $template, $data);
  25. $this->monitor = $monitor;
  26. $this->dbi = $dbi;
  27. }
  28. public function __invoke(): void
  29. {
  30. global $errorUrl;
  31. $params = [
  32. 'time_start' => $_POST['time_start'] ?? null,
  33. 'time_end' => $_POST['time_end'] ?? null,
  34. 'limitTypes' => $_POST['limitTypes'] ?? null,
  35. 'removeVariables' => $_POST['removeVariables'] ?? null,
  36. ];
  37. $errorUrl = Url::getFromRoute('/');
  38. if ($this->dbi->isSuperUser()) {
  39. $this->dbi->selectDb('mysql');
  40. }
  41. if (! $this->response->isAjax()) {
  42. return;
  43. }
  44. $data = $this->monitor->getJsonForLogDataTypeGeneral(
  45. (int) $params['time_start'],
  46. (int) $params['time_end'],
  47. (bool) $params['limitTypes'],
  48. (bool) $params['removeVariables']
  49. );
  50. if ($data === null) {
  51. $this->response->setRequestStatus(false);
  52. return;
  53. }
  54. $this->response->addJSON(['message' => $data]);
  55. }
  56. }