CURRENT_TIMESTAMP() OR t.expiration IS NULL) ORDER BY t.created DESC'; $query = $this->_em->createQuery($dql); $query->setMaxResults(1); $query->setParameters([ ':type' => TokenManipulator::TYPE_VALIDATE, ':user' => $user, ':basket_id' => $basket->getId(), ]); return $query->getOneOrNullResult(); } /** * @param string $value * @return Token|null * @throws NonUniqueResultException */ public function findValidToken($value) { $dql = 'SELECT t FROM Phraseanet:Token t WHERE t.value = :value AND (t.expiration IS NULL OR t.expiration >= CURRENT_TIMESTAMP()) ORDER BY t.created DESC'; $query = $this->_em->createQuery($dql); $query->setMaxResults(1); $query->setParameters([':value' => $value]); return $query->getOneOrNullResult(); } /** * @return Token[] */ public function findExpiredTokens($nbDaysAfterExpiration = 0) { $dql = 'SELECT t FROM Phraseanet:Token t WHERE t.expiration < :date'; $query = $this->_em->createQuery($dql); $date = new DateTime(); if ($nbDaysAfterExpiration != 0) { $date->modify("-" . $nbDaysAfterExpiration . " day"); } $query->setParameters([':date' => $date]); return $query->getResult(); } public function getEntityManager() { return parent::getEntityManager(); } }