public function actionPostSubmission() { $this->requirePostRequest(); $submission = new Formerly_SubmissionModel(); $submission->formId = craft()->request->getRequiredPost('formId'); //check file upload for errors, craft will not be happy otherwise $errors = false; if (sizeof($_FILES) > 0 && array_key_exists('questions', $_FILES) && array_key_exists('error', $_FILES['questions'])) { foreach ($_FILES['questions']['error'] as $key => $error) { switch ($error) { case UPLOAD_ERR_OK: break; case UPLOAD_ERR_NO_FILE: break; case UPLOAD_ERR_INI_SIZE: case UPLOAD_ERR_FORM_SIZE: $submission->addError($key, 'File size exceeded size limit.'); $errors = true; //clear key so setContentFromPost works unset($_FILES['questions']['name'][$key]); unset($_FILES['questions']['error'][$key]); unset($_FILES['questions']['type'][$key]); unset($_FILES['questions']['size'][$key]); unset($_FILES['questions']['tmp_name'][$key]); break; default: $submission->addError($key, 'File upload failed.'); //clear key so setContentFromPost works unset($_FILES['questions']['name'][$key]); unset($_FILES['questions']['error'][$key]); unset($_FILES['questions']['type'][$key]); unset($_FILES['questions']['size'][$key]); unset($_FILES['questions']['tmp_name'][$key]); $errors = true; } } if ($errors) { $submission->setContentFromPost('questions'); craft()->urlManager->setRouteVariables(array('submission' => $submission)); return; } } $submission->setContentFromPost('questions'); if (craft()->formerly_submissions->postSubmission($submission)) { if (craft()->request->isAjaxRequest()) { $this->returnJson(array('ok' => 'yes', 'id' => $submission->id)); } else { $this->redirectToPostedUrl($submission); } } else { if (craft()->request->isAjaxRequest()) { $this->returnJson(array('ok' => 'no', 'errors' => $submission->getErrors())); } else { craft()->urlManager->setRouteVariables(array('submission' => $submission)); } } }