diff options
Diffstat (limited to 'srcs/phpmyadmin/libraries/classes/Setup/FormProcessing.php')
| -rw-r--r-- | srcs/phpmyadmin/libraries/classes/Setup/FormProcessing.php | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/libraries/classes/Setup/FormProcessing.php b/srcs/phpmyadmin/libraries/classes/Setup/FormProcessing.php new file mode 100644 index 0000000..dce9ecc --- /dev/null +++ b/srcs/phpmyadmin/libraries/classes/Setup/FormProcessing.php @@ -0,0 +1,77 @@ +<?php +/* vim: set expandtab sw=4 ts=4 sts=4: */ +/** + * Formset processing library + * + * @package PhpMyAdmin-Setup + */ +declare(strict_types=1); + +namespace PhpMyAdmin\Setup; + +use PhpMyAdmin\Config\FormDisplay; +use PhpMyAdmin\Core; +use PhpMyAdmin\Response; +use PhpMyAdmin\Template; +use PhpMyAdmin\Url; + +/** + * PhpMyAdmin\Setup\FormProcessing class + * + * @package PhpMyAdmin-Setup + */ +class FormProcessing +{ + /** + * Processes forms registered in $form_display, handles error correction + * + * @param FormDisplay $form_display Form to display + * + * @return void + */ + public static function process(FormDisplay $form_display) + { + if (isset($_GET['mode']) && $_GET['mode'] == 'revert') { + // revert erroneous fields to their default values + $form_display->fixErrors(); + $response = Response::getInstance(); + $response->disable(); + $response->generateHeader303('index.php' . Url::getCommonRaw()); + } + + if (! $form_display->process(false)) { + // handle form view and failed POST + echo $form_display->getDisplay(true, true); + return; + } + + // check for form errors + if (! $form_display->hasErrors()) { + $response = Response::getInstance(); + $response->disable(); + $response->generateHeader303('index.php' . Url::getCommonRaw()); + return; + } + + // form has errors, show warning + $page = isset($_GET['page']) ? $_GET['page'] : ''; + $formset = isset($_GET['formset']) ? $_GET['formset'] : ''; + $formId = Core::isValid($_GET['id'], 'numeric') ? $_GET['id'] : ''; + if ($formId === null && $page == 'servers') { + // we've just added a new server, get its id + $formId = $form_display->getConfigFile()->getServerCount(); + } + + $urlParams = [ + 'page' => $page, + 'formset' => $formset, + 'id' => $formId, + ]; + + $template = new Template(); + echo $template->render('setup/error', [ + 'url_params' => $urlParams, + 'errors' => $form_display->displayErrors(), + ]); + } +} |
