FormProcessing.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. /* vim: set expandtab sw=4 ts=4 sts=4: */
  3. /**
  4. * Formset processing library
  5. *
  6. * @package PhpMyAdmin-Setup
  7. */
  8. declare(strict_types=1);
  9. namespace PhpMyAdmin\Setup;
  10. use PhpMyAdmin\Config\FormDisplay;
  11. use PhpMyAdmin\Core;
  12. use PhpMyAdmin\Response;
  13. use PhpMyAdmin\Template;
  14. use PhpMyAdmin\Url;
  15. /**
  16. * PhpMyAdmin\Setup\FormProcessing class
  17. *
  18. * @package PhpMyAdmin-Setup
  19. */
  20. class FormProcessing
  21. {
  22. /**
  23. * Processes forms registered in $form_display, handles error correction
  24. *
  25. * @param FormDisplay $form_display Form to display
  26. *
  27. * @return void
  28. */
  29. public static function process(FormDisplay $form_display)
  30. {
  31. if (isset($_GET['mode']) && $_GET['mode'] == 'revert') {
  32. // revert erroneous fields to their default values
  33. $form_display->fixErrors();
  34. $response = Response::getInstance();
  35. $response->disable();
  36. $response->generateHeader303('index.php' . Url::getCommonRaw());
  37. }
  38. if (! $form_display->process(false)) {
  39. // handle form view and failed POST
  40. echo $form_display->getDisplay(true, true);
  41. return;
  42. }
  43. // check for form errors
  44. if (! $form_display->hasErrors()) {
  45. $response = Response::getInstance();
  46. $response->disable();
  47. $response->generateHeader303('index.php' . Url::getCommonRaw());
  48. return;
  49. }
  50. // form has errors, show warning
  51. $page = isset($_GET['page']) ? $_GET['page'] : '';
  52. $formset = isset($_GET['formset']) ? $_GET['formset'] : '';
  53. $formId = Core::isValid($_GET['id'], 'numeric') ? $_GET['id'] : '';
  54. if ($formId === null && $page == 'servers') {
  55. // we've just added a new server, get its id
  56. $formId = $form_display->getConfigFile()->getServerCount();
  57. }
  58. $urlParams = [
  59. 'page' => $page,
  60. 'formset' => $formset,
  61. 'id' => $formId,
  62. ];
  63. $template = new Template();
  64. echo $template->render('setup/error', [
  65. 'url_params' => $urlParams,
  66. 'errors' => $form_display->displayErrors(),
  67. ]);
  68. }
  69. }