mirror of
https://github.com/wallabag/wallabag.git
synced 2025-10-20 19:52:09 +00:00
Move icon into the top menu bar
Change the way to select a random entry: - select all ids from the given user (with filters) - choose randomly one in php - find that entry
This commit is contained in:
parent
9a57653aec
commit
50f35f0db2
22 changed files with 57 additions and 28 deletions
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue