';
}
/**
* Displays top part of a fieldset
*
* @param string $title title of fieldset
* @param string $description description shown on top of fieldset
* @param array $errors error messages to display
* @param array $attributes optional extra attributes of fieldset
*
* @return void
*/
function PMA_displayFieldsetTop($title = '', $description = '', $errors = null,
$attributes = array()
) {
global $_FormDisplayGroup;
$_FormDisplayGroup = 0;
$attributes = array_merge(array('class' => 'optbox'), $attributes);
foreach ($attributes as $k => &$attr) {
$attr = $k . '="' . htmlspecialchars($attr) . '"';
}
echo '
';
echo '' . $title . ' ';
if (!empty($description)) {
echo '' . $description . '
';
}
// this must match with displayErrors() in scripts.js
if (is_array($errors) && count($errors) > 0) {
echo '';
foreach ($errors as $error) {
echo '' . $error . ' ';
}
echo ' ';
}
echo '';
}
/**
* Displays input field
*
* $opts keys:
* o doc - (string) documentation link
* o errors - error array
* o setvalue - (string) shows button allowing to set poredefined value
* o show_restore_default - (boolean) whether show "restore default" button
* o userprefs_allow - whether user preferences are enabled for this field
* (null - no support, true/false - enabled/disabled)
* o userprefs_comment - (string) field comment
* o values - key - value paris for fields
* o values_escaped - (boolean) tells whether values array is already escaped
* (defaults to false)
* o values_disabled - (array)list of disabled values (keys from values)
* o comment - (string) tooltip comment
* o comment_warning - (bool) whether this comments warns about something
*
* @param string $path config option path
* @param string $name config option name
* @param string $type type of config option
* @param mixed $value current value
* @param string $description verbose description
* @param bool $value_is_default whether value is default
* @param array $opts see above description
*
* @return void
*/
function PMA_displayInput($path, $name, $type, $value, $description = '',
$value_is_default = true, $opts = null
) {
global $_FormDisplayGroup;
static $icons; // An array of IMG tags used further below in the function
if (defined('TESTSUITE')) {
$icons = null;
}
$is_setup_script = defined('PMA_SETUP');
if ($icons === null) { // if the static variables have not been initialised
$icons = array();
// Icon definitions:
// The same indexes will be used in the $icons array.
// The first element contains the filename and the second
// element is used for the "alt" and "title" attributes.
$icon_init = array(
'edit' => array('b_edit.png', ''),
'help' => array('b_help.png', __('Documentation')),
'reload' => array('s_reload.png', ''),
'tblops' => array('b_tblops.png', '')
);
if ($is_setup_script) {
// When called from the setup script, we don't have access to the
// sprite-aware getImage() function because the PMA_theme class
// has not been loaded, so we generate the img tags manually.
foreach ($icon_init as $k => $v) {
$title = '';
if (! empty($v[1])) {
$title = ' title="' . $v[1] . '"';
}
$icons[$k] = sprintf(
' ',
$v[1],
".{$GLOBALS['cfg']['ThemePath']}/original/img/{$v[0]}",
$title
);
}
} else {
// In this case we just use getImage() because it's available
foreach ($icon_init as $k => $v) {
$icons[$k] = PMA_Util::getImage(
$v[0], $v[1]
);
}
}
}
$has_errors = isset($opts['errors']) && !empty($opts['errors']);
$option_is_disabled = ! $is_setup_script && isset($opts['userprefs_allow'])
&& ! $opts['userprefs_allow'];
$name_id = 'name="' . htmlspecialchars($path) . '" id="'
. htmlspecialchars($path) . '"';
$field_class = $type == 'checkbox' ? 'checkbox' : '';
if (! $value_is_default) {
$field_class .= ($field_class == '' ? '' : ' ')
. ($has_errors ? 'custom field-error' : 'custom');
}
$field_class = $field_class ? ' class="' . $field_class . '"' : '';
$tr_class = $_FormDisplayGroup > 0
? 'group-field group-field-' . $_FormDisplayGroup
: '';
if (isset($opts['setvalue']) && $opts['setvalue'] == ':group') {
unset($opts['setvalue']);
$_FormDisplayGroup++;
$tr_class = 'group-header-field group-header-' . $_FormDisplayGroup;
}
if ($option_is_disabled) {
$tr_class .= ($tr_class ? ' ' : '') . 'disabled-field';
}
$tr_class = $tr_class ? ' class="' . $tr_class . '"' : '';
echo '';
echo '';
echo '' . $name . ' ';
if (! empty($opts['doc'])) {
echo '';
echo '' . $icons['help'] . ' ';
echo "\n";
echo ' ';
}
if ($option_is_disabled) {
echo '' . __('Disabled') . " ";
}
if (!empty($description)) {
echo '' . $description . ' ';
}
echo ' ';
echo '';
switch ($type) {
case 'text':
echo ' ';
break;
case 'password':
echo ' ';
break;
case 'short_text':
echo ' ';
break;
case 'number_text':
echo ' ';
break;
case 'checkbox':
echo ' ';
break;
case 'select':
echo '';
$escape = !(isset($opts['values_escaped']) && $opts['values_escaped']);
$values_disabled = isset($opts['values_disabled'])
? array_flip($opts['values_disabled']) : array();
foreach ($opts['values'] as $opt_value_key => $opt_value) {
// set names for boolean values
if (is_bool($opt_value)) {
$opt_value = strtolower($opt_value ? __('Yes') : __('No'));
}
// escape if necessary
if ($escape) {
$display = htmlspecialchars($opt_value);
$display_value = htmlspecialchars($opt_value_key);
} else {
$display = $opt_value;
$display_value = $opt_value_key;
}
// compare with selected value
// boolean values are cast to integers when used as array keys
$selected = is_bool($value)
? (int) $value === $opt_value_key
: $opt_value_key === $value;
echo '' . $display . ' ';
}
echo ' ';
break;
case 'list':
echo '';
break;
}
if (isset($opts['comment']) && $opts['comment']) {
$class = 'field-comment-mark';
if (isset($opts['comment_warning']) && $opts['comment_warning']) {
$class .= ' field-comment-warning';
}
echo 'i ';
}
if ($is_setup_script
&& isset($opts['userprefs_comment'])
&& $opts['userprefs_comment']
) {
echo '';
}
if (isset($opts['setvalue']) && $opts['setvalue']) {
echo '' . $icons['edit'] . ' ';
}
if (isset($opts['show_restore_default']) && $opts['show_restore_default']) {
echo ''
. $icons['reload'] . ' ';
}
// this must match with displayErrors() in scripts/config.js
if ($has_errors) {
echo "\n ";
foreach ($opts['errors'] as $error) {
echo '' . htmlspecialchars($error) . ' ';
}
echo ' ';
}
echo ' ';
if ($is_setup_script && isset($opts['userprefs_allow'])) {
echo '';
echo ' ';
echo ' ';
} else if ($is_setup_script) {
echo ' ';
}
echo ' ';
}
/**
* Display group header
*
* @param string $header_text Text of header
*
* @return void
*/
function PMA_displayGroupHeader($header_text)
{
global $_FormDisplayGroup;
$_FormDisplayGroup++;
if (! $header_text) {
return;
}
$colspan = defined('PMA_SETUP')
? 3
: 2;
echo '';
}
/**
* Display group footer
*
* @return void
*/
function PMA_displayGroupFooter()
{
global $_FormDisplayGroup;
$_FormDisplayGroup--;
}
/**
* Displays bottom part of a fieldset
*
* @return void
*/
function PMA_displayFieldsetBottom()
{
$colspan = 2;
if (defined('PMA_SETUP')) {
$colspan++;
}
echo '';
echo '';
echo ' ';
echo ' ';
echo ' ';
echo ' ';
echo '
';
echo ' ';
}
/**
* Displays simple bottom part of a fieldset (without submit buttons)
*
* @return void
*/
function PMA_displayFieldsetBottomSimple()
{
echo '';
echo '';
}
/**
* Closes form tabs
*
* @return void
*/
function PMA_displayTabsBottom()
{
echo "
\n";
}
/**
* Displays bottom part of the form
*
* @return void
*/
function PMA_displayFormBottom()
{
echo "\n";
}
/**
* Appends JS validation code to $js_array
*
* @param string $field_id ID of field to validate
* @param string|array $validators validators callback
* @param array &$js_array will be updated with javascript code
*
* @return void
*/
function PMA_addJsValidate($field_id, $validators, &$js_array)
{
foreach ((array)$validators as $validator) {
$validator = (array)$validator;
$v_name = array_shift($validator);
$v_name = "PMA_" . $v_name;
$v_args = array();
foreach ($validator as $arg) {
$v_args[] = PMA_escapeJsString($arg);
}
$v_args = $v_args ? ", ['" . implode("', '", $v_args) . "']" : '';
$js_array[] = "validateField('$field_id', '$v_name', true$v_args)";
}
}
/**
* Displays JavaScript code
*
* @param array $js_array lines of javascript code
*
* @return void
*/
function PMA_displayJavascript($js_array)
{
if (empty($js_array)) {
return;
}
echo '' . "\n";
}
/**
* Displays error list
*
* @param string $name name of item with errors
* @param array $error_list list of errors to show
*
* @return void
*/
function PMA_displayErrors($name, $error_list)
{
echo '