/** * Save a form. * @param PlainForm_FormModel $form [description] * @return [type] [description] */ public function saveForm(PlainForm_FormModel $form) { if ($form->id) { $formRecord = PlainForm_FormRecord::model()->findById($form->id); if (!$formRecord) { throw new Exception(Craft::t('No form exists with the ID "{id}"', array('id' => $form->id))); } $oldForm = PlainForm_FormModel::populateModel($formRecord); $isNewForm = false; } else { $formRecord = new PlainForm_FormRecord(); $isNewForm = true; } // Set record attributes $formRecord->name = $form->name; $formRecord->handle = $form->handle; $formRecord->description = $form->description; $formRecord->successMessage = $form->successMessage; $formRecord->emailSubject = $form->emailSubject; $formRecord->fromEmail = $form->fromEmail; $formRecord->fromName = $form->fromName; $formRecord->replyToEmail = $form->replyToEmail; $formRecord->toEmail = $form->toEmail; $formRecord->notificationTemplatePath = $form->notificationTemplatePath; $formRecord->validate(); $form->addErrors($formRecord->getErrors()); if (!$form->hasErrors()) { $transaction = craft()->db->getCurrentTransaction() === null ? craft()->db->beginTransaction() : null; try { $formRecord->save(false); if (!$form->id) { $form->id = $formRecord->id; } if ($transaction !== null) { $transaction->commit(); } } catch (\Exception $e) { if ($transaction !== null) { $transaction->rollback(); } throw $e; } return true; } else { return false; } }