Craft\Formerly_SubmissionsService::saveSubmission PHP Method

saveSubmission() public method

public saveSubmission ( craft\Formerly_SubmissionModel $submission )
$submission craft\Formerly_SubmissionModel
    public function saveSubmission(Formerly_SubmissionModel $submission)
    {
        $submissionRecord = new Formerly_SubmissionRecord();
        $submissionRecord->formId = $submission->formId;
        $submissionRecord->validate();
        $submission->addErrors($submissionRecord->getErrors());
        $this->onAfterValidate(new Event($this, array('submission' => $submission)));
        if (!$submission->hasErrors()) {
            //Check for honeypot
            if (craft()->config->exists(Formerly_ConfigSettings::SettingsGroupName) && array_key_exists(Formerly_ConfigSettings::HoneyPotName, craft()->config->get(Formerly_ConfigSettings::SettingsGroupName))) {
                $honeyPotName = craft()->config->get(Formerly_ConfigSettings::SettingsGroupName)[Formerly_ConfigSettings::HoneyPotName];
                if (array_key_exists($honeyPotName, $_REQUEST) && $_REQUEST[$honeyPotName] != null) {
                    //ooh we have data in our honeypot!
                    //don't flag an error just return back
                    return false;
                }
            }
            foreach ($_REQUEST['questions'] as $key => $value) {
                if (strpos($key, 'email') > -1) {
                    $email = $value;
                }
            }
            $transaction = craft()->db->getCurrentTransaction() === null ? craft()->db->beginTransaction() : null;
            try {
                if (craft()->elements->saveElement($submission)) {
                    $submissionRecord->id = $submission->id;
                    $submissionRecord->save(false);
                    if ($transaction !== null) {
                        $transaction->commit();
                    }
                    return true;
                } else {
                    return false;
                }
            } catch (\Exception $ex) {
                if ($transaction !== null) {
                    $transaction->rollback();
                }
            }
        }
        return false;
    }