X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FRepository%2FEntryRepository.php;h=bfd079377ac783bdd4c2e0e2f84cb3f2e9d0496b;hb=8668796106b856ca041512af27268ce6e49d2caf;hp=8b29aad2d2e81823239ac98e9c91454cc8802c56;hpb=f3bfb875e94021a93e24a41fbc0f8d86d4dee378;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Repository/EntryRepository.php b/src/Wallabag/CoreBundle/Repository/EntryRepository.php index 8b29aad2..bfd07937 100644 --- a/src/Wallabag/CoreBundle/Repository/EntryRepository.php +++ b/src/Wallabag/CoreBundle/Repository/EntryRepository.php @@ -129,6 +129,21 @@ class EntryRepository extends EntityRepository ->andWhere('t.id is null'); } + /** + * Retrieve the number of untagged entries for a user. + * + * @param int $userId + * + * @return int + */ + public function countUntaggedEntriesByUser($userId) + { + return (int) $this->getRawBuilderForUntaggedByUser($userId) + ->select('count(e.id)') + ->getQuery() + ->getSingleScalarResult(); + } + /** * Find Entries. * @@ -291,7 +306,6 @@ class EntryRepository extends EntityRepository * DELETE et FROM entry_tag et WHERE et.entry_id IN ( SELECT e.id FROM entry e WHERE e.user_id = :userId ) AND et.tag_id = :tagId * * @param int $userId - * @param Tag $tag */ public function removeTag($userId, Tag $tag) { @@ -345,7 +359,7 @@ class EntryRepository extends EntityRepository * @param string $url * @param int $userId * - * @return Entry|bool + * @return Entry|false */ public function findByUrlAndUserId($url, $userId) { @@ -362,13 +376,24 @@ class EntryRepository extends EntityRepository * @param string $hashedUrl Url hashed using sha1 * @param int $userId * - * @return Entry|bool + * @return Entry|false */ public function findByHashedUrlAndUserId($hashedUrl, $userId) { + // try first using hashed_url (to use the database index) $res = $this->createQueryBuilder('e') ->where('e.hashedUrl = :hashed_url')->setParameter('hashed_url', $hashedUrl) - ->orWhere('e.hashedGivenUrl = :hashed_given_url')->setParameter('hashed_given_url', $hashedUrl) + ->andWhere('e.user = :user_id')->setParameter('user_id', $userId) + ->getQuery() + ->getResult(); + + if (\count($res)) { + return current($res); + } + + // then try using hashed_given_url (to use the database index) + $res = $this->createQueryBuilder('e') + ->where('e.hashedGivenUrl = :hashed_given_url')->setParameter('hashed_given_url', $hashedUrl) ->andWhere('e.user = :user_id')->setParameter('user_id', $userId) ->getQuery() ->getResult(); @@ -539,9 +564,8 @@ class EntryRepository extends EntityRepository /** * Return the given QueryBuilder with an orderBy() call. * - * @param QueryBuilder $qb - * @param string $sortBy - * @param string $direction + * @param string $sortBy + * @param string $direction * * @return QueryBuilder */