public function saveLayout(FormBuilder2_LayoutModel $layout)
{
if ($layout->id) {
$layoutRecord = FormBuilder2_LayoutRecord::model()->findById($layout->id);
if (!$layoutRecord) {
throw new Exception(Craft::t('No layout exists with the ID “{id}”', array('id' => $layout->id)));
}
$oldLayout = FormBuilder2_LayoutModel::populateModel($layoutRecord);
$isNewLayout = false;
} else {
$layoutRecord = new FormBuilder2_LayoutRecord();
$isNewLayout = true;
}
$layoutRecord->name = $layout->name;
$layoutRecord->handle = $layout->handle;
$layoutRecord->description = $layout->description;
$layoutRecord->icon = $layout->icon;
$layoutRecord->templateName = $layout->templateName;
$layoutRecord->templateOriginalName = $layout->templateOriginalName;
$layoutRecord->templatePath = $layout->templatePath;
$layoutRecord->validate();
$layout->addErrors($layoutRecord->getErrors());
if (!$layout->hasErrors()) {
$transaction = craft()->db->getCurrentTransaction() ? false : craft()->db->beginTransaction();
try {
$layoutRecord->save(false);
if (!$layout->id) {
$layout->id = $layoutRecord->id;
}
if ($transaction !== null) {
$transaction->commit();
}
} catch (\Exception $e) {
if ($transaction !== null) {
$transaction->rollback();
}
throw $e;
}
return true;
} else {
return false;
}
}