MonitorController.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?php
  2. /* vim: set expandtab sw=4 ts=4 sts=4: */
  3. /**
  4. * Holds the PhpMyAdmin\Controllers\Server\Status\MonitorController
  5. *
  6. * @package PhpMyAdmin\Controllers
  7. */
  8. declare(strict_types=1);
  9. namespace PhpMyAdmin\Controllers\Server\Status;
  10. use PhpMyAdmin\DatabaseInterface;
  11. use PhpMyAdmin\Response;
  12. use PhpMyAdmin\Server\Status\Data;
  13. use PhpMyAdmin\Server\Status\Monitor;
  14. use PhpMyAdmin\SysInfo;
  15. use PhpMyAdmin\Template;
  16. /**
  17. * Class MonitorController
  18. * @package PhpMyAdmin\Controllers\Server\Status
  19. */
  20. class MonitorController extends AbstractController
  21. {
  22. /**
  23. * @var Monitor
  24. */
  25. private $monitor;
  26. /**
  27. * MonitorController constructor.
  28. *
  29. * @param Response $response Response object
  30. * @param DatabaseInterface $dbi DatabaseInterface object
  31. * @param Template $template Template object
  32. * @param Data $data Data object
  33. * @param Monitor $monitor Monitor object
  34. */
  35. public function __construct($response, $dbi, Template $template, $data, $monitor)
  36. {
  37. parent::__construct($response, $dbi, $template, $data);
  38. $this->monitor = $monitor;
  39. }
  40. /**
  41. * @return string HTML
  42. */
  43. public function index(): string
  44. {
  45. $form = [
  46. 'server_time' => microtime(true) * 1000,
  47. 'server_os' => SysInfo::getOs(),
  48. 'is_superuser' => $this->dbi->isSuperuser(),
  49. 'server_db_isLocal' => $this->data->db_isLocal,
  50. ];
  51. $javascriptVariableNames = [];
  52. foreach ($this->data->status as $name => $value) {
  53. if (is_numeric($value)) {
  54. $javascriptVariableNames[] = $name;
  55. }
  56. }
  57. return $this->template->render('server/status/monitor/index', [
  58. 'image_path' => $GLOBALS['pmaThemeImage'],
  59. 'javascript_variable_names' => $javascriptVariableNames,
  60. 'form' => $form,
  61. ]);
  62. }
  63. /**
  64. * @param array $params Request parameters
  65. * @return array JSON
  66. */
  67. public function chartingData(array $params): array
  68. {
  69. $json = [];
  70. $json['message'] = $this->monitor->getJsonForChartingData(
  71. $params['requiredData'] ?? ''
  72. );
  73. return $json;
  74. }
  75. /**
  76. * @param array $params Request parameters
  77. * @return array JSON
  78. */
  79. public function logDataTypeSlow(array $params): array
  80. {
  81. $json = [];
  82. $json['message'] = $this->monitor->getJsonForLogDataTypeSlow(
  83. (int) $params['time_start'],
  84. (int) $params['time_end']
  85. );
  86. return $json;
  87. }
  88. /**
  89. * @param array $params Request parameters
  90. * @return array JSON
  91. */
  92. public function logDataTypeGeneral(array $params): array
  93. {
  94. $json = [];
  95. $json['message'] = $this->monitor->getJsonForLogDataTypeGeneral(
  96. (int) $params['time_start'],
  97. (int) $params['time_end'],
  98. (bool) $params['limitTypes'],
  99. (bool) $params['removeVariables']
  100. );
  101. return $json;
  102. }
  103. /**
  104. * @param array $params Request parameters
  105. * @return array JSON
  106. */
  107. public function loggingVars(array $params): array
  108. {
  109. $json = [];
  110. $json['message'] = $this->monitor->getJsonForLoggingVars(
  111. $params['varName'],
  112. $params['varValue']
  113. );
  114. return $json;
  115. }
  116. /**
  117. * @param array $params Request parameters
  118. * @return array JSON
  119. */
  120. public function queryAnalyzer(array $params): array
  121. {
  122. $json = [];
  123. $json['message'] = $this->monitor->getJsonForQueryAnalyzer(
  124. $params['database'] ?? '',
  125. $params['query'] ?? ''
  126. );
  127. return $json;
  128. }
  129. }