Fix Preferences writing empty values

refs #4525
This commit is contained in:
Jannis Moßhammer 2013-08-21 09:54:40 +02:00 committed by Eric Lippmann
parent 9cd4c2f856
commit dbdfd09796

View File

@ -76,14 +76,13 @@ class PreferenceController extends BasePreferenceController
$form = new GeneralForm(); $form = new GeneralForm();
$form->setConfiguration(IcingaConfig::app()); $form->setConfiguration(IcingaConfig::app());
$form->setRequest($this->getRequest()); $form->setRequest($this->getRequest());
if ($form->isSubmittedAndValid()) { if ($form->isSubmittedAndValid()) {
$preferences = $form->getPreferences(); $preferences = $form->getPreferences();
$userPreferences = $this->getRequest()->getUser()->getPreferences(); $userPreferences = $this->getRequest()->getUser()->getPreferences();
$userPreferences->startTransaction(); $userPreferences->startTransaction();
foreach ($preferences as $key => $value) { foreach ($preferences as $key => $value) {
if ($value === '') { if (!$value) {
$userPreferences->remove($key); $userPreferences->remove($key);
} else { } else {
$userPreferences->set($key, $value); $userPreferences->set($key, $value);
@ -92,6 +91,12 @@ class PreferenceController extends BasePreferenceController
try { try {
$userPreferences->commit(); $userPreferences->commit();
$this->view->success = true; $this->view->success = true;
// recreate form to show new values
$form = new GeneralForm();
$form->setConfiguration(IcingaConfig::app());
$form->setRequest($this->getRequest());
} catch (Exception $e) { } catch (Exception $e) {
$this->view->exceptionMessage = $e->getMessage(); $this->view->exceptionMessage = $e->getMessage();
} }