class EntryRepository extends EntityRepository
{
- private $lifeTime;
-
/**
* Return a query builder to used by other getBuilderFor* method.
*
;
}
+ /**
+ * 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.
*
$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();
return $qb->getQuery()->getSingleScalarResult();
}
-
- public function setLifeTime($lifeTime)
- {
- $this->lifeTime = $lifeTime;
- }
-
- /**
- * Enable cache for a query.
- *
- * @param Query $query
- *
- * @return Query
- */
- public function enableCache(Query $query)
- {
- $query->useQueryCache(true);
- $query->useResultCache(true);
- $query->setResultCacheLifetime($this->lifeTime);
-
- return $query;
- }
}