public function processPageRightEdit($params)
 {
     $this->formHelper = new FormHelper(FormHelper::METHOD_POST);
     $pageID = isset($params[0]) ? $params[0] : null;
     $rightGroupModel = new RightGroupModel($this->cmsController->getDB());
     $optsRightGroups = array();
     foreach ($rightGroupModel->getRightGroups() as $g) {
         if ($g->isRoot() === true) {
             continue;
         }
         $optsRightGroups[$g->getID()] = $g->getGroupName();
     }
     $this->formHelper->addField('rightgroup', null, FormHelper::TYPE_OPTION, true, array('missingError' => 'Please choose a group', 'invalidError' => 'Please choose a valid group', 'options' => $optsRightGroups));
     $this->formHelper->addField('rights', null, FormHelper::TYPE_MULTIOPTIONS, false, array('missingError' => 'Please choose one or more rights', 'invalidError' => 'Please choose one or more valid rights', 'options' => array('read' => 'read', 'write' => 'write')));
     $this->formHelper->addField('date_from', null, FormHelper::TYPE_DATE, true, array('missingError' => 'Please enter a date from where the group should have access', 'invalidError' => 'Please enter a valid date from where the group should habe acess'));
     $this->formHelper->addField('date_to', null, FormHelper::TYPE_DATE, false, array('invalidError' => 'Please enter a valid date till when the group should habe acess'));
     if (!$this->formHelper->sent() || !$this->formHelper->validate()) {
         return $this->getPageRightEdit($params);
     }
     $dateFrom = $this->formHelper->getFieldValue('date_from');
     $dateTo = $this->formHelper->getFieldValue('date_to');
     if ($dateFrom !== null) {
         $dtFrom = new \DateTime($this->formHelper->getFieldValue('date_from'));
     }
     if ($dateTo !== null) {
         $dtTo = new \DateTime($this->formHelper->getFieldValue('date_to'));
     }
     $rights = $this->formHelper->getFieldValue('rights');
     try {
         $stmntSaveRightGroup = $this->cmsController->getDB()->prepare("\n\t\t\t\tINSERT INTO page_has_rightgroup SET page_IDFK = ?, rightgroup_IDFK = ?, start_date = ?, end_date = ?, rights = ?\n\t\t\t\tON DUPLICATE KEY UPDATE start_date = ?, end_date = ?, rights = ?\n\t\t\t");
         $this->cmsController->getDB()->insert($stmntSaveRightGroup, array($pageID, $this->formHelper->getFieldValue('rightgroup'), $dateFrom !== null ? $dtFrom->format('Y-m-d H:i:s') : null, $dateTo !== null ? $dtTo->format('Y-m-d H:i:s') : null, CmsUtils::getRightsAsDec(in_array('read', $rights) ? '1' : '0', in_array('write', $rights) ? '1' : '0'), $dateFrom !== null ? $dtFrom->format('Y-m-d H:i:s') : null, $dateTo !== null ? $dtTo->format('Y-m-d H:i:s') : null, CmsUtils::getRightsAsDec(in_array('read', $rights) ? '1' : '0', in_array('write', $rights) ? '1' : '0')));
     } catch (\Exception $e) {
         $this->formHelper->addError(null, 'Could not save right information');
     }
     if ($this->formHelper->hasErrors()) {
         return $this->getPageRightEdit($params);
     }
     RequestHandler::redirect($this->baseLink . '/page/' . $pageID);
 }
 public function postEditNavHasEntry($params)
 {
     $this->formHelper = $this->generateFormEditNavHasEntry();
     if (!$this->formHelper->sent() || $this->formHelper->validate() === false) {
         return $this->getEditNav($params);
     }
     try {
         $this->cmsController->getDB()->beginTransaction();
         $navID = $params[0];
         $entryID = $params[1];
         // Get old hidden states
         $stmntHidden = $this->cmsController->getDB()->prepare("\n\t\t\t\tSELECT navigation_entry_IDFK, hidden FROM navigation_has_entry WHERE navigation_IDFK = ? AND parent_navigation_entry_IDFK = ?\n\t\t\t");
         $resHidden = $this->cmsController->getDB()->select($stmntHidden, array($navID, $entryID));
         $hiddenStates = array();
         foreach ($resHidden as $h) {
             $hiddenStates[$h->navigation_entry_IDFK] = $h->hidden;
         }
         $stmntDelete = $this->cmsController->getDB()->prepare("\n\t\t\t\tDELETE FROM navigation_has_entry WHERE navigation_IDFK = ? AND parent_navigation_entry_IDFK = ?\n\t\t\t");
         $this->cmsController->getDB()->delete($stmntDelete, array($navID, $entryID));
         $stmntInsert = $this->cmsController->getDB()->prepare("\n\t\t\t\tINSERT INTO navigation_has_entry SET navigation_IDFK = ?, navigation_entry_IDFK = ?, parent_navigation_entry_IDFK = ?, sort = ?, hidden = ?\n\t\t\t");
         foreach ($this->formHelper->getFieldValue('entries') as $i => $e) {
             $this->cmsController->getDB()->insert($stmntInsert, array($navID, $e, $entryID, $i + 1, isset($hiddenStates[$e]) && $hiddenStates[$e] == 1 ? 1 : 0));
         }
         $stmntUpdateThisEntry = $this->cmsController->getDB()->prepare("\n\t\t\t\tUPDATE navigation_has_entry SET hidden = ? WHERE navigation_IDFK = ? AND navigation_entry_IDFK = ?\n\t\t\t");
         $this->cmsController->getDB()->update($stmntUpdateThisEntry, array($this->formHelper->getFieldValue('hidden'), $navID, $entryID));
         $this->cmsController->getDB()->commit();
     } catch (\Exception $e) {
         if ($e->getCode() === 23000) {
             $errorMsg = 'The navigation entry <b>#' . $entryID . '</b> is already used in this navigation. Each navigation entry can only be used once per navigation.';
         } else {
             $errorMsg = 'Could not save navigation: ' . $e->getMessage();
         }
         $this->formHelper->addError(null, $errorMsg);
         $this->cmsController->getDB()->rollBack();
         return $this->getEditNavHasEntry($params);
     }
     RequestHandler::redirect($this->baseLink . '/nav/' . $navID . '/edit');
 }