/** * Update article. * * @return HttpResponse|ViewModel */ public function updateAction() { $sm = $this->getServiceLocator(); $userService = $sm->get('Stjornvisi\\Service\\User'); $articleService = $sm->get('Stjornvisi\\Service\\Article'); $auth = new AuthenticationService(); $access = $userService->getType($auth->hasIdentity() ? $auth->getIdentity()->id : null); //ACCESS GRANTED // if ($access->is_admin) { $id = $this->params()->fromRoute('id', 0); //ARTICLE FOUND // article in database if (($article = $articleService->get($this->params()->fromRoute('id', 0))) != false) { $form = new ArticleForm($articleService->fetchAllAuthors()); $form->setAttribute('action', $this->url()->fromRoute('greinar/update', ['id' => $id])); //POST // post request if ($this->request->isPost()) { $form->setData($this->request->getPost()); //VALID FORM // form is valid if ($form->isValid()) { $articleService->update($id, $form->getData()); return $this->redirect()->toRoute('greinar/index', ['id' => $id]); //INVALID FORM // form is invalid } else { $this->getResponse()->setStatusCode(400); return new ViewModel(['form' => $form]); } //QUERY // get request } else { $form->bind(new \ArrayObject($article)); return new ViewModel(['form' => $form]); } //NOT FOUND // 404 } else { return $this->notFoundAction(); } //ACCESS DENIED // } else { $this->getResponse()->setStatusCode(401); $model = new ViewModel(); $model->setTemplate('error/401'); return $model; } }