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;
}