form_processing.lib.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. /* vim: set expandtab sw=4 ts=4 sts=4: */
  3. /**
  4. * Formset processing library
  5. *
  6. * @package PhpMyAdmin-Setup
  7. */
  8. /**
  9. * Processes forms registered in $form_display, handles error correction
  10. *
  11. * @param FormDisplay $form_display Form to display
  12. *
  13. * @return void
  14. */
  15. function PMA_Process_formset(FormDisplay $form_display)
  16. {
  17. if (filter_input(INPUT_GET, 'mode') == 'revert') {
  18. // revert erroneous fields to their default values
  19. $form_display->fixErrors();
  20. PMA_generateHeader303();
  21. }
  22. if (!$form_display->process(false)) {
  23. // handle form view and failed POST
  24. $form_display->display(true, true);
  25. return;
  26. }
  27. // check for form errors
  28. if (!$form_display->hasErrors()) {
  29. PMA_generateHeader303();
  30. return;
  31. }
  32. // form has errors, show warning
  33. $separator = PMA_URL_getArgSeparator('html');
  34. $page = filter_input(INPUT_GET, 'page');
  35. $formset = filter_input(INPUT_GET, 'formset');
  36. $formset = $formset ? "{$separator}formset=$formset" : '';
  37. $formId = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
  38. if ($formId === null && $page == 'servers') {
  39. // we've just added a new server, get its id
  40. $formId = $form_display->getConfigFile()->getServerCount();
  41. }
  42. $formId = $formId ? "{$separator}id=$formId" : '';
  43. ?>
  44. <div class="error">
  45. <h4><?php echo __('Warning') ?></h4>
  46. <?php echo __('Submitted form contains errors') ?><br />
  47. <a href="?page=<?php echo $page . $formset . $formId . $separator ?>mode=revert">
  48. <?php echo __('Try to revert erroneous fields to their default values')
  49. ?>
  50. </a>
  51. </div>
  52. <?php $form_display->displayErrors() ?>
  53. <a class="btn" href="index.php"><?php echo __('Ignore errors') ?></a>
  54. &nbsp;
  55. <a class="btn" href="?page=<?php echo $page . $formset . $formId
  56. . $separator ?>mode=edit"><?php echo __('Show form') ?></a>
  57. <?php
  58. }
  59. /**
  60. * Generate header for 303
  61. *
  62. * @return void
  63. */
  64. function PMA_generateHeader303()
  65. {
  66. // drop post data
  67. header('HTTP/1.1 303 See Other');
  68. header('Location: index.php');
  69. if (!defined('TESTSUITE')) {
  70. exit;
  71. }
  72. }
  73. ?>