/** * Edit Note * * @return \Zend\View\Model\ViewModel */ public function editAction() { $id = $this->getEvent()->getRouteMatch()->getParam('id'); if (empty($id) || !is_numeric($id)) { return $this->redirect()->toRoute('secretary/note'); } // Permission Check $permissionCheck = $this->noteService->checkNoteEditPermission($this->identity->getId(), $id); if (false === $permissionCheck) { // @todo log stuff here? return $this->redirect()->toRoute('secretary/note'); } $viewModel = new ViewModel(); $keyRequestForm = $this->getKeyRequestForm($id, 'edit'); // View Vars $viewModel->setVariable('showKeyRequestForm', true); $viewModel->setVariable('keyRequestForm', $keyRequestForm); // Render Key Request form if (!$this->getRequest()->isPost()) { return $viewModel; } // Key Request Form Validation if ($this->getRequest()->isPost() && $this->getRequest()->getPost('key-request')) { $keyRequestForm->setData($this->getRequest()->getPost()); if (!$keyRequestForm->isValid()) { return new ViewModel($viewModel); } // Do Note Encryption try { $formValues = $keyRequestForm->getData(); $noteDecrypted = $this->getNoteService()->doNoteEncryption($id, $this->identity->getId(), $formValues['key'], $formValues['passphrase']); } catch (\LogicException $e) { $viewModel->setVariable('msg', array('error', $e->getMessage())); return $viewModel; } } $noteRecord = $this->getNoteService()->fetchNote($id); $groupMembers = null; if (false === $noteRecord->getPrivate()) { $groupMembers = $this->groupService->fetchNoteGroupMembers($noteRecord->getId(), $noteRecord->getGroup()->getId(), $this->identity->getId()); $viewModel->setVariable('groupMembers', $groupMembers); $groupMembersUnselected = $this->groupService->fetchNoteGroupMembersUnselected($noteRecord->getId(), $noteRecord->getGroup()->getId(), $this->identity->getId()); $viewModel->setVariable('groupMembersUnselected', $groupMembersUnselected); } $form = $this->getNoteForm($noteRecord, 'edit', $id, $groupMembers); $viewModel->setVariable('noteForm', $form); $viewModel->setVariable('editMode', true); $viewModel->setVariable('noteRecord', $noteRecord); $viewModel->setVariable('noteFormLegend', 'Modify Note'); $viewModel->setVariable('showKeyRequestForm', false); if (!$this->getRequest()->getPost('title')) { $form->get('content')->setValue($noteDecrypted['decrypted']); return $viewModel; } if ($this->getRequest()->getPost('title')) { $form->setData($this->getRequest()->getPost()); if ($form->isValid()) { $group = $this->getRequest()->getPost('groupHidden'); if (!empty($group)) { if ($group != $noteRecord->getGroup()->getId()) { $this->events->trigger('logViolation', __METHOD__ . '::l42', array('message' => sprintf('User: %s wants to change GroupID from: %s to: %s', $this->identity->getEmail(), $noteRecord->getGroup()->getId(), $group))); $viewVars['msg'] = array('error', 'You cannot change the group'); return new ViewModel($viewVars); } $members = $this->getRequest()->getPost('members'); if (empty($members)) { $viewVars['msg'] = array('error', 'Please select a group member to share note with'); return new ViewModel($viewVars); } $this->noteService->updateGroupNote($this->identity, $form->getData(), $noteRecord->getGroup()->getId(), $members); } else { $this->noteService->updateUserNote($this->identity, $form->getData()); } $this->flashMessenger()->addSuccessMessage($this->translator->translate('Note was updated successfully')); return $this->redirect()->toRoute('secretary/note'); } } $viewModel->setVariable('msg', 'An error occurred'); return $viewModel; }