/** * Adjust form fields to given page. * * @param \FormFieldModel[] $formFields * @param string $formId * @param \Form $form */ public function compileFormFields($formFields, $formId, \Form $form) { // Make sure empty form fields arrays are skipped if (0 === count($formFields)) { return $formFields; } $manager = new MPFormsFormManager($form->id); // Don't try to render multi page form if no valid combination if (!$manager->isValidFormFieldCombination()) { return $manager->getFieldsWithoutPageBreaks(); } // Do not let Contao validate anything if user wants to go back if ('back' === $_POST['mp_form_pageswitch']) { $this->redirectToStep($manager, $manager->getPreviousStep()); } // Validate previous steps data if (!$manager->isFirstStep()) { $vResult = $manager->validateSteps(0, $manager->getCurrentStep() - 1); if (true !== $vResult) { $manager->setPreviousStepsWereInvalid(); $this->redirectToStep($manager, $vResult); } } // If someone wanted to skip the page, fake form submission so fields // are validated and show the error message. if ($manager->getPreviousStepsWereInvalid()) { \Input::setPost('FORM_SUBMIT', $manager->getFormId()); $manager->resetPreviousStepsWereInvalid(); } return $manager->getFieldsForStep($manager->getCurrentStep()); }