public function saveTemplate(FormBuilder2_TemplateModel $template) { if ($template->id) { $templateRecord = FormBuilder2_TemplateRecord::model()->findById($template->id); if (!$templateRecord) { throw new Exception(Craft::t('No template exists with the ID “{id}”', array('id' => $template->id))); } $oldTemplate = FormBuilder2_TemplateModel::populateModel($templateRecord); $isNewTemplate = false; } else { $templateRecord = new FormBuilder2_TemplateRecord(); $isNewTemplate = true; } $templateRecord->name = $template->name; $templateRecord->handle = $template->handle; $templateRecord->bodyText = $template->bodyText; $templateRecord->footerText = $template->footerText; $templateRecord->templateContent = JsonHelper::encode($template->templateContent); $templateRecord->templateStyles = JsonHelper::encode($template->templateStyles); $templateRecord->templateSettings = JsonHelper::encode($template->templateSettings); $templateRecord->validate(); $template->addErrors($templateRecord->getErrors()); if (!$template->hasErrors()) { $transaction = craft()->db->getCurrentTransaction() ? false : craft()->db->beginTransaction(); try { $templateRecord->save(false); if (!$template->id) { $template->id = $templateRecord->id; } if ($transaction !== null) { $transaction->commit(); } } catch (\Exception $e) { if ($transaction !== null) { $transaction->rollback(); } throw $e; } return true; } else { return false; } }