private function getArticle($number, $language, $user) { $em = $this->container->get('em'); $languageObject = $em->getRepository('Newscoop\\Entity\\Language')->findOneByCode($language); // Fetch article $articleObj = new \Article($languageObject->getId(), $number); if (!$articleObj->exists()) { throw new NewscoopException('Article does not exist'); } if (!$articleObj->userCanModify($user)) { throw new AccessDeniedException('User cannot modify article.'); } // Only users with a lock on the article can change it. if ($articleObj->isLocked() && $user->getUserId() != $articleObj->getLockedByUser()) { $lockTime = new \DateTime($articleObj->getLockTime()); $now = new \DateTime('now'); $difference = $now->diff($lockTime); $ago = $difference->format('%R%H:%I:%S'); $lockUser = new \User($articleObj->getLockedByUser()); throw new NewscoopException(sprintf('Article locked by %s (%s ago)', $lockUser->getRealName(), $ago)); } return $articleObj; }