mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-16 06:23:18 +00:00
replaced repository methods with query-builder ones
This commit is contained in:
@@ -92,7 +92,7 @@ class Aggregate implements FeedInterface
|
||||
*/
|
||||
public static function create(Application $app, array $feed_ids)
|
||||
{
|
||||
$feeds = $this->em->getRepository('Entities\Feed')->findByIdArray($feed_ids);
|
||||
$feeds = $this->em->getRepository('Entities\Feed')->findByIds($feed_ids);
|
||||
|
||||
return new static($app, $feeds);
|
||||
}
|
||||
@@ -114,7 +114,11 @@ class Aggregate implements FeedInterface
|
||||
return null;
|
||||
}
|
||||
|
||||
return $this->em->getRepository('Entities\FeedEntry')->findByFeeds($this->feeds, $offset_start, $how_many);
|
||||
$feedIds = array();
|
||||
foreach ($this->feeds as $feed) {
|
||||
$feedIds[] = $feed->getId();
|
||||
}
|
||||
return $this->em->getRepository('Entities\FeedEntry')->findByFeeds($feedIds, $offset_start, $how_many);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -195,7 +199,11 @@ class Aggregate implements FeedInterface
|
||||
public function getCountTotalEntries()
|
||||
{
|
||||
if (count($this->feeds) > 0) {
|
||||
return count($this->em->getRepository('Entities\FeedEntry')->findByFeeds($this->feeds));
|
||||
$feedIds = array();
|
||||
foreach ($this->feeds as $feed) {
|
||||
$feedIds[] = $feed->getId();
|
||||
}
|
||||
return count($this->em->getRepository('Entities\FeedEntry')->findByFeeds($feedIds));
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@@ -78,14 +78,16 @@ class SessionRepository extends EntityRepository
|
||||
* @param array $feed_id
|
||||
* @return Collection
|
||||
*/
|
||||
public function findByIdArray(array $feed_id)
|
||||
{
|
||||
$dql = 'SELECT f FROM Entities\Feed f
|
||||
ORDER BY f.created_on DESC
|
||||
WHERE f.id IN (' . implode(",", $feed_id) . ')';
|
||||
public function findByIds(array $feedIds)
|
||||
{
|
||||
$qb = $this->createQueryBuilder('f');
|
||||
|
||||
$query = $this->_em->createQuery($dql);
|
||||
|
||||
return $query->getResult();
|
||||
if (!empty($feedIds)) {
|
||||
$qb->Where($qb->expr()->in('f.id', $feedIds));
|
||||
}
|
||||
|
||||
$qb->orderBy('f.updated_on', 'DESC');
|
||||
|
||||
return $qb->getQuery()->getResult();
|
||||
}
|
||||
}
|
||||
|
@@ -25,26 +25,29 @@ class UserSettingRepository extends EntityRepository
|
||||
* Returns a collection of FeedEntry from given feeds, limited to $how_many results, starting with $offset_start
|
||||
*
|
||||
* @param array $feeds
|
||||
* @param integer $offset_start
|
||||
* @param integer $how_many
|
||||
* @param integer $offsetStart
|
||||
* @param integer $howMany
|
||||
*
|
||||
* @return \Doctrine\Common\Collections\Collection
|
||||
*/
|
||||
public function findByFeeds($feeds, $offset_start = null, $how_many = null)
|
||||
public function findByFeeds($feeds, $offsetStart = null, $perPage = null)
|
||||
{
|
||||
$dql = 'SELECT f FROM Entities\FeedEntry f
|
||||
WHERE f.feed IN (:feeds) order by f.updated_on DESC';
|
||||
$qb = $this->createQueryBuilder('f');
|
||||
|
||||
$query = $this->_em->createQuery($dql);
|
||||
$query->setParameter('feeds', $feeds);
|
||||
|
||||
if (null !== $offset_start && 0 !== $offset_start) {
|
||||
$query->setFirstResult($offset_start);
|
||||
}
|
||||
if (null !== $how_many) {
|
||||
$query->setMaxResults($how_many);
|
||||
if (!empty($feeds)) {
|
||||
$qb->Where($qb->expr()->in('f.feed', $feeds));
|
||||
}
|
||||
|
||||
return $query->getResult();
|
||||
$qb->orderBy('f.updated_on', 'DESC');
|
||||
|
||||
if ($offsetStart) {
|
||||
$qb->setFirstResult(max(0, (int) $offsetStart));
|
||||
}
|
||||
|
||||
if ($perPage) {
|
||||
$qb->setMaxResults(max(5, (int) $perPage));
|
||||
}
|
||||
|
||||
return $qb->getQuery()->getResult();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user