]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/CoreBundle/Repository/EntryRepository.php
Merge pull request #2677 from wallabag/add-wallabag_user.de.yml
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Repository / EntryRepository.php
index 14616d8889e7dc2f2d60d93b60beb73e9e87e15f..47e24d6b4796a572fac31fbb0de3636630441d3e 100644 (file)
@@ -22,7 +22,7 @@ class EntryRepository extends EntityRepository
         return $this->createQueryBuilder('e')
             ->leftJoin('e.user', 'u')
             ->andWhere('u.id = :userId')->setParameter('userId', $userId)
-            ->orderBy('e.id', 'desc')
+            ->orderBy('e.createdAt', 'desc')
         ;
     }
 
@@ -85,6 +85,36 @@ class EntryRepository extends EntityRepository
         ;
     }
 
+    /**
+     * Retrieves entries filtered with a search term for a user.
+     *
+     * @param int    $userId
+     * @param string $term
+     * @param strint $currentRoute
+     *
+     * @return QueryBuilder
+     */
+    public function getBuilderForSearchByUser($userId, $term, $currentRoute)
+    {
+        $qb = $this
+            ->getBuilderByUser($userId);
+
+        if ('starred' === $currentRoute) {
+            $qb->andWhere('e.isStarred = true');
+        } elseif ('unread' === $currentRoute) {
+            $qb->andWhere('e.isArchived = false');
+        } elseif ('archive' === $currentRoute) {
+            $qb->andWhere('e.isArchived = true');
+        }
+
+        $qb
+            ->andWhere('e.content LIKE :term OR e.title LIKE :term')->setParameter('term', '%'.$term.'%')
+            ->leftJoin('e.tags', 't')
+            ->groupBy('e.id');
+
+        return $qb;
+    }
+
     /**
      * Retrieves untagged entries for a user.
      *