getHeader();
$scripts = $header->getScripts();
$scripts->addFile('server_variables.js');
/**
* Does the common work
*/
require 'libraries/server_common.inc.php';
/**
* Required to display documentation links
*/
require 'libraries/server_variables_doc.php';
/**
* Ajax request
*/
if (isset($_REQUEST['ajax_request']) && $_REQUEST['ajax_request'] == true) {
$response = PMA_Response::getInstance();
if (isset($_REQUEST['type'])) {
if ($_REQUEST['type'] === 'getval') {
// Send with correct charset
header('Content-Type: text/html; charset=UTF-8');
$varValue = PMA_DBI_fetch_single_row(
'SHOW GLOBAL VARIABLES WHERE Variable_name="'
. PMA_Util::sqlAddSlashes($_REQUEST['varName']) . '";',
'NUM'
);
if (isset($VARIABLE_DOC_LINKS[$_REQUEST['varName']][3])
&& $VARIABLE_DOC_LINKS[$_REQUEST['varName']][3] == 'byte'
) {
$response->addJSON(
'message',
implode(
' ', PMA_Util::formatByteDown($varValue[1], 3, 3)
)
);
} else {
$response->addJSON(
'message',
$varValue[1]
);
}
} else if ($_REQUEST['type'] === 'setval') {
$value = $_REQUEST['varValue'];
if (isset($VARIABLE_DOC_LINKS[$_REQUEST['varName']][3])
&& $VARIABLE_DOC_LINKS[$_REQUEST['varName']][3] == 'byte'
&& preg_match(
'/^\s*(\d+(\.\d+)?)\s*(mb|kb|mib|kib|gb|gib)\s*$/i',
$value,
$matches
)
) {
$exp = array(
'kb' => 1,
'kib' => 1,
'mb' => 2,
'mib' => 2,
'gb' => 3,
'gib' => 3
);
$value = floatval($matches[1]) * PMA_Util::pow(
1024,
$exp[strtolower($matches[3])]
);
} else {
$value = PMA_Util::sqlAddSlashes($value);
}
if (! is_numeric($value)) {
$value="'" . $value . "'";
}
if (! preg_match("/[^a-zA-Z0-9_]+/", $_REQUEST['varName'])
&& PMA_DBI_query(
'SET GLOBAL ' . $_REQUEST['varName'] . ' = ' . $value
)
) {
// Some values are rounded down etc.
$varValue = PMA_DBI_fetch_single_row(
'SHOW GLOBAL VARIABLES WHERE Variable_name="'
. PMA_Util::sqlAddSlashes($_REQUEST['varName'])
. '";', 'NUM'
);
$response->addJSON(
'variable',
formatVariable($_REQUEST['varName'], $varValue[1])
);
} else {
$response->isSuccess(false);
$response->addJSON(
'error',
__('Setting variable failed')
);
}
}
exit;
}
}
/**
* Displays the sub-page heading
*/
$output = '
' . PMA_Util::getImage('s_vars.png')
. '' . __('Server variables and settings') . "\n"
. PMA_Util::showMySQLDocu(
'server_system_variables', 'server_system_variables'
)
. '
' . "\n";
/**
* Link templates
*/
$url = 'server_variables.php?' . PMA_generate_common_url();
$output .= '';
$output .= PMA_Util::getIcon('b_edit.png', __('Edit')) . '';
$output .= '';
$output .= PMA_Util::getIcon('b_save.png', __('Save')) . ' ';
$output .= '';
$output .= PMA_Util::getIcon('b_close.png', __('Cancel')) . ' ';
$output .= PMA_Util::getImage(
'b_help.png',
__('Documentation'),
array(
'style' => 'display:none',
'id' => 'docImage'
)
);
/**
* Sends the queries and buffers the results
*/
$serverVarsSession = PMA_DBI_fetch_result('SHOW SESSION VARIABLES;', 0, 1);
$serverVars = PMA_DBI_fetch_result('SHOW GLOBAL VARIABLES;', 0, 1);
/**
* Displays the page
*/
$value = ! empty($_REQUEST['filter']) ? htmlspecialchars($_REQUEST['filter']) : '';
$output .= '';
$output .= ''
. '';
$odd_row = true;
foreach ($serverVars as $name => $value) {
$has_session_value = isset($serverVarsSession[$name])
&& $serverVarsSession[$name] != $value;
$row_class = ($odd_row ? ' odd' : ' even')
. ($has_session_value ? ' diffSession' : '');
$output .= '
'
. '
';
// To display variable documentation link
if (isset($VARIABLE_DOC_LINKS[$name])) {
$output .= '';
$output .= PMA_Util::showMySQLDocu(
$VARIABLE_DOC_LINKS[$name][1],
$VARIABLE_DOC_LINKS[$name][1],
false,
$VARIABLE_DOC_LINKS[$name][2] . '_' . $VARIABLE_DOC_LINKS[$name][0],
true
);
$output .= htmlspecialchars(str_replace('_', ' ', $name));
$output .= '';
$output .= '';
} else {
$output .= htmlspecialchars(str_replace('_', ' ', $name));
}
$output .= '
'
. '
'
. formatVariable($name, $value)
. '
'
. '
'
. '
';
if ($has_session_value) {
$output .= '
'
. '
(' . __('Session value') . ')
'
. '
' . formatVariable($name, $serverVarsSession[$name]) . '
'
. '
'
. '
';
}
$odd_row = ! $odd_row;
}
$output .= '
';
$response->addHtml($output);
/**
* Format Variable
*
* @param string $name variable name
* @param numeric $value variable value
*
* @return formatted string
*/
function formatVariable($name, $value)
{
global $VARIABLE_DOC_LINKS;
if (is_numeric($value)) {
if (isset($VARIABLE_DOC_LINKS[$name][3])
&& $VARIABLE_DOC_LINKS[$name][3]=='byte'
) {
return ''
. implode(' ', PMA_Util::formatByteDown($value, 3, 3))
. '';
} else {
return PMA_Util::formatNumber($value, 0);
}
}
return htmlspecialchars($value);
}
?>