/** * Outputs HTML for the forms under the menu tab * * @param bool $show_restore_default whether to show "restore default" * button besides the input field * @param array &$js_default stores JavaScript code * to be displayed * @param array &$js will be updated with javascript code * @param bool $show_buttons whether show submit and reset button * * @return string $htmlOutput */ private function _displayForms($show_restore_default, array &$js_default, array &$js, $show_buttons) { $htmlOutput = ''; $validators = PMA_Validator::getValidators($this->_configFile); foreach ($this->_forms as $form) { /* @var $form Form */ $form_desc = isset($GLOBALS["strConfigForm_{$form->name}_desc"]) ? PMA_lang("Form_{$form->name}_desc") : ''; $form_errors = isset($this->_errors[$form->name]) ? $this->_errors[$form->name] : null; $htmlOutput .= PMA_displayFieldsetTop(PMA_lang("Form_{$form->name}"), $form_desc, $form_errors, array('id' => $form->name)); foreach ($form->fields as $field => $path) { $work_path = array_search($path, $this->_systemPaths); $translated_path = $this->_translatedPaths[$work_path]; // always true/false for user preferences display // otherwise null $userprefs_allow = isset($this->_userprefsKeys[$path]) ? !isset($this->_userprefsDisallow[$path]) : null; // display input $htmlOutput .= $this->_displayFieldInput($form, $field, $path, $work_path, $translated_path, $show_restore_default, $userprefs_allow, $js_default); // register JS validators for this field if (isset($validators[$path])) { PMA_addJsValidate($translated_path, $validators[$path], $js); } } $htmlOutput .= PMA_displayFieldsetBottom($show_buttons); } return $htmlOutput; }
<?php /* vim: set expandtab sw=4 ts=4 sts=4: */ /** * Validation callback. * * @package PhpMyAdmin-Setup */ /** * Core libraries. */ require './lib/common.inc.php'; $validators = array(); require './libraries/config/Validator.class.php'; header('Content-type: application/json'); $vids = explode(',', filter_input(INPUT_POST, 'id')); $values = json_decode(filter_input(INPUT_POST, 'values')); if (!$values instanceof stdClass) { PMA_fatalError(__('Wrong data')); } $values = (array) $values; $result = PMA_Validator::validate($GLOBALS['ConfigFile'], $vids, $values, true); if ($result === false) { $result = 'Wrong data or no validation for ' . $vids; } echo $result !== true ? json_encode($result) : '';
/** * Outputs HTML for forms * * @param bool $tabbed_form if true, use a form with tabs * @param bool $show_restore_default whether show "restore default" button * besides the input field * * @return void */ public function display($tabbed_form = false, $show_restore_default = false) { static $js_lang_sent = false; $js = array(); $js_default = array(); $tabbed_form = $tabbed_form && count($this->_forms) > 1; $validators = PMA_Validator::getValidators($this->_configFile); PMA_displayFormTop(); if ($tabbed_form) { $tabs = array(); foreach ($this->_forms as $form) { $tabs[$form->name] = PMA_lang("Form_{$form->name}"); } PMA_displayTabsTop($tabs); } // validate only when we aren't displaying a "new server" form $is_new_server = false; foreach ($this->_forms as $form) { /* @var $form Form */ if ($form->index === 0) { $is_new_server = true; break; } } if (!$is_new_server) { $this->_validate(); } // user preferences $this->_loadUserprefsInfo(); // display forms foreach ($this->_forms as $form) { /* @var $form Form */ $form_desc = isset($GLOBALS["strConfigForm_{$form->name}_desc"]) ? PMA_lang("Form_{$form->name}_desc") : ''; $form_errors = isset($this->_errors[$form->name]) ? $this->_errors[$form->name] : null; PMA_displayFieldsetTop(PMA_lang("Form_{$form->name}"), $form_desc, $form_errors, array('id' => $form->name)); foreach ($form->fields as $field => $path) { $work_path = array_search($path, $this->_systemPaths); $translated_path = $this->_translatedPaths[$work_path]; // always true/false for user preferences display // otherwise null $userprefs_allow = isset($this->_userprefsKeys[$path]) ? !isset($this->_userprefsDisallow[$path]) : null; // display input $this->_displayFieldInput($form, $field, $path, $work_path, $translated_path, $show_restore_default, $userprefs_allow, $js_default); // register JS validators for this field if (isset($validators[$path])) { PMA_addJsValidate($translated_path, $validators[$path], $js); } } PMA_displayFieldsetBottom(); } if ($tabbed_form) { PMA_displayTabsBottom(); } PMA_displayFormBottom(); // if not already done, send strings used for valdiation to JavaScript if (!$js_lang_sent) { $js_lang_sent = true; $js_lang = array(); foreach ($this->_jsLangStrings as $strName => $strValue) { $js_lang[] = "'{$strName}': '" . PMA_jsFormat($strValue, false) . '\''; } $js[] = "\$.extend(PMA_messages, {\n\t" . implode(",\n\t", $js_lang) . '})'; } $js[] = "\$.extend(defaultValues, {\n\t" . implode(",\n\t", $js_default) . '})'; PMA_displayJavascript($js); }