X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FRepository%2FEntryRepository.php;fp=src%2FWallabag%2FCoreBundle%2FRepository%2FEntryRepository.php;h=fabb19638b7f1b9da2968929614d0658df807d47;hb=50f35f0db2be9586205e793f315608eec59c9666;hp=879e66719a60ef39d561d5f65424c8d2a7da96a6;hpb=9a57653aec85b0f5220436d5cb76545e66c24a11;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Repository/EntryRepository.php b/src/Wallabag/CoreBundle/Repository/EntryRepository.php index 879e6671..fabb1963 100644 --- a/src/Wallabag/CoreBundle/Repository/EntryRepository.php +++ b/src/Wallabag/CoreBundle/Repository/EntryRepository.php @@ -325,8 +325,8 @@ class EntryRepository extends EntityRepository * Find an entry by its url and its owner. * If it exists, return the entry otherwise return false. * - * @param $url - * @param $userId + * @param string $url + * @param int $userId * * @return Entry|bool */ @@ -417,8 +417,8 @@ class EntryRepository extends EntityRepository /** * Find all entries by url and owner. * - * @param $url - * @param $userId + * @param string $url + * @param int $userId * * @return array */ @@ -434,20 +434,17 @@ class EntryRepository extends EntityRepository /** * Returns a random entry, filtering by status. * - * @param $userId - * @param string $type can be unread, archive, starred, etc + * @param int $userId + * @param string $type Can be unread, archive, starred, etc * * @throws \Doctrine\ORM\NoResultException - * @throws \Doctrine\ORM\NonUniqueResultException - * - * @see https://github.com/doctrine/doctrine2/issues/5479#issuecomment-403862934 * * @return Entry */ public function getRandomEntry($userId, $type = '') { $qb = $this->getQueryBuilderByUser($userId) - ->select('MIN(e.id)', 'MAX(e.id)'); + ->select('e.id'); switch ($type) { case 'unread': @@ -465,18 +462,12 @@ class EntryRepository extends EntityRepository break; } - $idLimits = $qb - ->getQuery() - ->getOneOrNullResult(); - $randomPossibleIds = rand($idLimits[1], $idLimits[2]); + $ids = $qb->getQuery()->getArrayResult(); - return $qb - ->select('e') - ->andWhere('e.id >= :random_id') - ->setParameter('random_id', $randomPossibleIds) - ->setMaxResults(1) - ->getQuery() - ->getSingleResult(); + // random select one in the list + $randomId = $ids[mt_rand(0, \count($ids) - 1)]['id']; + + return $this->find($randomId); } /**