3 namespace Wallabag\CoreBundle\Repository
;
5 use Doctrine\ORM\Query
;
6 use Doctrine\ORM\EntityRepository
;
7 use Doctrine\ORM\Tools\Pagination\Paginator
;
8 use Wallabag\CoreBundle\Entity\Entries
;
10 class EntriesRepository
extends EntityRepository
13 * Retrieves unread entries for a user
17 * @param int $maxResults
20 public function findUnreadByUser($userId, $firstResult, $maxResults = 12)
22 $qb = $this->createQueryBuilder('e')
24 ->setFirstResult($firstResult)
25 ->setMaxResults($maxResults)
26 ->where('e.isArchived = false')
27 ->andWhere('e.userId =:userId')->setParameter('userId', $userId)
28 ->andWhere('e.isDeleted=false')
29 ->orderBy('e.createdAt', 'desc')
32 $paginator = new Paginator($qb);
38 * Retrieves read entries for a user
42 * @param int $maxResults
45 public function findArchiveByUser($userId, $firstResult, $maxResults = 12)
47 $qb = $this->createQueryBuilder('e')
49 ->setFirstResult($firstResult)
50 ->setMaxResults($maxResults)
51 ->where('e.isArchived = true')
52 ->andWhere('e.userId =:userId')->setParameter('userId', $userId)
53 ->andWhere('e.isDeleted=false')
54 ->orderBy('e.createdAt', 'desc')
57 $paginator = new Paginator($qb);
63 * Retrieves starred entries for a user
67 * @param int $maxResults
70 public function findStarredByUser($userId, $firstResult, $maxResults = 12)
72 $qb = $this->createQueryBuilder('e')
74 ->setFirstResult($firstResult)
75 ->setMaxResults($maxResults)
76 ->where('e.isStarred = true')
77 ->andWhere('e.userId =:userId')->setParameter('userId', $userId)
78 ->andWhere('e.isDeleted=false')
79 ->orderBy('e.createdAt', 'desc')
82 $paginator = new Paginator($qb);
87 public function findEntries($userId, $isArchived, $isStarred, $isDeleted, $sort, $order)
89 $qb = $this->createQueryBuilder('e')
91 ->where('e.userId =:userId')->setParameter('userId', $userId);
93 if (!is_null($isArchived)) {
94 $qb->andWhere('e.isArchived =:isArchived')->setParameter('isArchived', $isArchived);
97 if (!is_null($isStarred)) {
98 $qb->andWhere('e.isStarred =:isStarred')->setParameter('isStarred', $isStarred);
101 if (!is_null($isDeleted)) {
102 $qb->andWhere('e.isDeleted =:isDeleted')->setParameter('isDeleted', $isDeleted);
105 if ('created' === $sort) {
106 $qb->orderBy('e.createdAt', $order);
107 } elseif ('updated' === $sort) {
108 $qb->orderBy('e.updatedAt', $order);
113 ->getResult(Query
::HYDRATE_ARRAY
);