Fix #11445 MySQL 5.7 and Status page for an unprivileged user

Signed-off-by: Madhura Jayaratne <madhura.cj@gmail.com>
This commit is contained in:
Madhura Jayaratne 2015-08-31 21:23:51 +10:00
parent ca917746b6
commit d3e8dac98c
7 changed files with 67 additions and 17 deletions

View File

@ -97,6 +97,7 @@ phpMyAdmin - ChangeLog
- issue Do not export `sys` database when exporting server
- issue #11436 CREATE DATABASE should be enabled by default on server exports
- issue #11442 MySQL 5.7 and SHOW VARIABLES
- issue #11445 MySQL 5.7 and Status page for an unprivileged user
4.4.15.0 (not yet released)
- issue #11411 Undefined "replace" function on numeric scalar

View File

@ -16,6 +16,12 @@ AJAX.registerTeardown('server_status_advisor.js', function () {
});
AJAX.registerOnload('server_status_advisor.js', function () {
// if no advisor is loaded
if ($('#advisorData').length == 0) {
return;
}
/**** Server config advisor ****/
var $dialog = $('<div />').attr('id', 'advisorDialog');
var $instructionsDialog = $('<div />')

View File

@ -34,6 +34,7 @@ class PMA_ServerStatusData
public $section;
public $sectionUsed;
public $selfUrl;
public $dataLoaded;
/**
* An empty setter makes the above properties read-only
@ -314,7 +315,18 @@ class PMA_ServerStatusData
$this->selfUrl = basename($GLOBALS['PMA_PHP_SELF']);
// get status from server
$server_status = $GLOBALS['dbi']->fetchResult('SHOW GLOBAL STATUS', 0, 1);
$server_status_result = $GLOBALS['dbi']->tryQuery('SHOW GLOBAL STATUS');
$server_status = array();
if ($server_status_result === false) {
$this->dataLoaded = false;
} else {
$this->dataLoaded = true;
while ($arr = $GLOBALS['dbi']->fetchRow($server_status_result)) {
$server_status[$arr[0]] = $arr[1];
}
$GLOBALS['dbi']->freeResult($server_status_result);
}
if (PMA_DRIZZLE) {
// Drizzle doesn't put query statistics into variables, add it
$sql = "SELECT concat('Com_', variable_name), variable_value "

View File

@ -23,15 +23,22 @@ if (PMA_DRIZZLE) {
include_once 'libraries/replication_gui.lib.php';
}
$ServerStatusData = new PMA_ServerStatusData();
/**
* start output
*/
$response = PMA_Response::getInstance();
$response->addHTML('<div>');
$response->addHTML($ServerStatusData->getMenuHtml());
$response->addHTML(PMA_getHtmlForServerStatus($ServerStatusData));
$response->addHTML('</div>');
$serverStatusData = new PMA_ServerStatusData();
$response->addHTML($serverStatusData->getMenuHtml());
if ($serverStatusData->dataLoaded) {
$response->addHTML(PMA_getHtmlForServerStatus($serverStatusData));
} else {
$response->addHTML(
PMA_Message::error(
__('Not enough privilege to view server status.')
)->getDisplay()
);
}
$response->addHTML('</div>');
exit;

View File

@ -20,7 +20,7 @@ if (PMA_DRIZZLE) {
include_once 'libraries/replication_gui.lib.php';
}
$ServerStatusData = new PMA_ServerStatusData();
$serverStatusData = new PMA_ServerStatusData();
$response = PMA_Response::getInstance();
$scripts = $response->getHeader()->getScripts();
@ -30,8 +30,16 @@ $scripts->addFile('server_status_advisor.js');
* Output
*/
$response->addHTML('<div>');
$response->addHTML($ServerStatusData->getMenuHtml());
$response->addHTML(PMA_getHtmlForAdvisor());
$response->addHTML($serverStatusData->getMenuHtml());
if ($serverStatusData->dataLoaded) {
$response->addHTML(PMA_getHtmlForAdvisor());
} else {
$response->addHTML(
PMA_Message::error(
__('Not enough privilege to view the advisor.')
)->getDisplay()
);
}
$response->addHTML('</div>');
exit;

View File

@ -21,7 +21,7 @@ if (PMA_DRIZZLE) {
include_once 'libraries/replication_gui.lib.php';
}
$ServerStatusData = new PMA_ServerStatusData();
$serverStatusData = new PMA_ServerStatusData();
$response = PMA_Response::getInstance();
$header = $response->getHeader();
@ -46,7 +46,15 @@ $scripts->addFile('server_status_sorter.js');
// Add the html content to the response
$response->addHTML('<div>');
$response->addHTML($ServerStatusData->getMenuHtml());
$response->addHTML(PMA_getHtmlForQueryStatistics($ServerStatusData));
$response->addHTML($serverStatusData->getMenuHtml());
if ($serverStatusData->dataLoaded) {
$response->addHTML(PMA_getHtmlForQueryStatistics($serverStatusData));
} else {
$response->addHTML(
PMA_Message::error(
__('Not enough privilege to view query statistics.')
)->getDisplay()
);
}
$response->addHTML('</div>');
exit;

View File

@ -36,7 +36,7 @@ if (isset($_REQUEST['flush'])) {
unset($_flush_commands);
}
$ServerStatusData = new PMA_ServerStatusData();
$serverStatusData = new PMA_ServerStatusData();
$response = PMA_Response::getInstance();
$header = $response->getHeader();
@ -46,10 +46,18 @@ $scripts->addFile('jquery/jquery.tablesorter.js');
$scripts->addFile('server_status_sorter.js');
$response->addHTML('<div>');
$response->addHTML($ServerStatusData->getMenuHtml());
$response->addHTML(PMA_getHtmlForFilter($ServerStatusData));
$response->addHTML(PMA_getHtmlForLinkSuggestions($ServerStatusData));
$response->addHTML(PMA_getHtmlForVariablesList($ServerStatusData));
$response->addHTML($serverStatusData->getMenuHtml());
if ($serverStatusData->dataLoaded) {
$response->addHTML(PMA_getHtmlForFilter($serverStatusData));
$response->addHTML(PMA_getHtmlForLinkSuggestions($serverStatusData));
$response->addHTML(PMA_getHtmlForVariablesList($serverStatusData));
} else {
$response->addHTML(
PMA_Message::error(
__('Not enough privilege to view status variables.')
)->getDisplay()
);
}
$response->addHTML('</div>');
exit;