namespace Wallabag\CoreBundle\Repository;
use Doctrine\ORM\EntityRepository;
+use Doctrine\ORM\Query;
use Pagerfanta\Adapter\DoctrineORMAdapter;
use Pagerfanta\Pagerfanta;
use Wallabag\CoreBundle\Entity\Tag;
;
}
+ /**
+ * Retrieves untagged entries for a user.
+ *
+ * @param int $userId
+ *
+ * @return QueryBuilder
+ */
+ public function getBuilderForUntaggedByUser($userId)
+ {
+ return $this
+ ->getBuilderByUser($userId)
+ ->leftJoin('e.tags', 't')
+ ->groupBy('e.id')
+ ->having('count(t.id) = 0');
+ }
+
/**
* Find Entries.
*
* @param bool $isStarred
* @param string $sort
* @param string $order
+ * @param int $since
+ * @param string $tags
*
* @return array
*/
$qb->andWhere('e.isStarred =:isStarred')->setParameter('isStarred', (bool) $isStarred);
}
- if ($since >= 0) {
+ if ($since > 0) {
$qb->andWhere('e.updatedAt > :since')->setParameter('since', new \DateTime(date('Y-m-d H:i:s', $since)));
}
$this->getEntityManager()->flush();
}
+ /**
+ * Remove tags from all user entries.
+ *
+ * @param int $userId
+ * @param Array<Tag> $tags
+ */
+ public function removeTags($userId, $tags)
+ {
+ foreach ($tags as $tag) {
+ $this->removeTag($userId, $tag);
+ }
+ }
+
/**
* Find all entries that are attached to a give tag id.
*
public function findByUrlAndUserId($url, $userId)
{
$res = $this->createQueryBuilder('e')
- ->where('e.url = :url')->setParameter('url', $url)
+ ->where('e.url = :url')->setParameter('url', urldecode($url))
->andWhere('e.user = :user_id')->setParameter('user_id', $userId)
->getQuery()
->getResult();