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;
}
}