/** * Store the submitted data into the session and redirect to the next step * unless it's the last. * * @param array $submitted * @param array $labels * @param $fieldsOrForm * @param $formOrFields */ public function prepareFormData(&$submitted, &$labels, $fieldsOrForm, $formOrFields) { // Compat with Contao 4 and 3.5 $form = $fieldsOrForm instanceof \Form ? $fieldsOrForm : $formOrFields; $manager = new MPFormsFormManager($form->id); // Don't do anything if not valid if (!$manager->isValidFormFieldCombination()) { return; } // Store data in session $manager->storeData($submitted, $labels, (array) $_SESSION['FILES']); // Submit form if ($manager->isLastStep() && 'continue' === $submitted['mp_form_pageswitch']) { $allData = $manager->getDataOfAllSteps(); // Replace data by reference and then return so the default Contao // routine kicks in $submitted = $allData['submitted']; $labels = $allData['labels']; $_SESSION['FILES'] = $allData['files']; // Clear session $manager->resetData(); return; } else { // Make sure the Contao form data session handling doesn't do // anything at all while we're on a multipage form $_SESSION['FORM_DATA'] = []; } $this->redirectToStep($manager, $manager->getNextStep()); }