/** * Saves a navigation. * * @param AmNav_NavigationModel $navigation * * @throws Exception * @return bool */ public function saveNavigation(AmNav_NavigationModel $navigation) { // Navigation data if ($navigation->id) { $navigationRecord = AmNav_NavigationRecord::model()->findById($navigation->id); if (!$navigationRecord) { throw new Exception(Craft::t('No navigation exists with the ID “{id}”.', array('id' => $navigation->id))); } } else { $navigationRecord = new AmNav_NavigationRecord(); } // Set attributes $navigationRecord->setAttributes($navigation->getAttributes()); $navigationRecord->setAttribute('settings', json_encode($navigation->settings)); // Validate $navigationRecord->validate(); $navigation->addErrors($navigationRecord->getErrors()); // Save navigation if (!$navigation->hasErrors()) { // Save in database return $navigationRecord->save(); } return false; }