From 04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa Mon Sep 17 00:00:00 2001 From: Charles Date: Thu, 9 Jan 2020 10:55:03 +0100 Subject: phpmyadmin working --- .../Controllers/Server/BinlogController.php | 149 +++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 srcs/phpmyadmin/libraries/classes/Controllers/Server/BinlogController.php (limited to 'srcs/phpmyadmin/libraries/classes/Controllers/Server/BinlogController.php') diff --git a/srcs/phpmyadmin/libraries/classes/Controllers/Server/BinlogController.php b/srcs/phpmyadmin/libraries/classes/Controllers/Server/BinlogController.php new file mode 100644 index 0000000..859559c --- /dev/null +++ b/srcs/phpmyadmin/libraries/classes/Controllers/Server/BinlogController.php @@ -0,0 +1,149 @@ +binaryLogs = $this->dbi->fetchResult( + 'SHOW MASTER LOGS', + 'Log_name', + null, + DatabaseInterface::CONNECT_USER, + DatabaseInterface::QUERY_STORE + ); + } + + /** + * Index action + * + * @param array $params Request params + * + * @return string + */ + public function indexAction(array $params): string + { + global $cfg, $pmaThemeImage; + + include_once ROOT_PATH . 'libraries/server_common.inc.php'; + + $position = ! empty($params['pos']) ? (int) $params['pos'] : 0; + + $urlParams = []; + if (isset($params['log']) + && array_key_exists($params['log'], $this->binaryLogs) + ) { + $urlParams['log'] = $params['log']; + } + + $isFullQuery = false; + if (! empty($params['is_full_query'])) { + $isFullQuery = true; + $urlParams['is_full_query'] = 1; + } + + $sqlQuery = $this->getSqlQuery( + $params['log'] ?? '', + $position, + (int) $cfg['MaxRows'] + ); + $result = $this->dbi->query($sqlQuery); + + $numRows = 0; + if (isset($result) && $result) { + $numRows = $this->dbi->numRows($result); + } + + $previousParams = $urlParams; + $fullQueriesParams = $urlParams; + $nextParams = $urlParams; + if ($position > 0) { + $fullQueriesParams['pos'] = $position; + if ($position > $cfg['MaxRows']) { + $previousParams['pos'] = $position - $cfg['MaxRows']; + } + } + $fullQueriesParams['is_full_query'] = 1; + if ($isFullQuery) { + unset($fullQueriesParams['is_full_query']); + } + if ($numRows >= $cfg['MaxRows']) { + $nextParams['pos'] = $position + $cfg['MaxRows']; + } + + $values = []; + while ($value = $this->dbi->fetchAssoc($result)) { + $values[] = $value; + } + + return $this->template->render('server/binlog/index', [ + 'url_params' => $urlParams, + 'binary_logs' => $this->binaryLogs, + 'log' => $params['log'], + 'sql_message' => Util::getMessage(Message::success(), $sqlQuery), + 'values' => $values, + 'has_previous' => $position > 0, + 'has_next' => $numRows >= $cfg['MaxRows'], + 'previous_params' => $previousParams, + 'full_queries_params' => $fullQueriesParams, + 'next_params' => $nextParams, + 'has_icons' => Util::showIcons('TableNavigationLinksMode'), + 'is_full_query' => $isFullQuery, + 'image_path' => $pmaThemeImage, + ]); + } + + /** + * @param string $log Binary log file name + * @param int $position Position to display + * @param int $maxRows Maximum number of rows + * + * @return string + */ + private function getSqlQuery( + string $log, + int $position, + int $maxRows + ): string { + $sqlQuery = 'SHOW BINLOG EVENTS'; + if (! empty($log)) { + $sqlQuery .= ' IN \'' . $log . '\''; + } + $sqlQuery .= ' LIMIT ' . $position . ', ' . $maxRows; + + return $sqlQuery; + } +} -- cgit