public function lockUnlockArticle(Request $request, $number, $language) { $em = $this->container->get('em'); $article = $em->getRepository('Newscoop\\Entity\\Article')->getArticle($number, $language)->getOneOrNullResult(); if (!$article) { throw new NewscoopException('Article does not exist'); } $response = new Response(); $response->setStatusCode(403); if ($request->getMethod() === 'POST') { if (!$article->isLocked()) { $article->setLockUser($this->getUser()); $article->setLockTime(new \DateTime()); $response->setStatusCode(200); } } if ($request->getMethod() === 'DELETE') { if ($article->isLocked()) { $article->setLockUser(); $article->setLockTime(); $response->setStatusCode(204); } } $em->flush(); return $response; }