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