Add more search methods to repositories

This commit is contained in:
Andrey
2013-05-30 18:58:05 +02:00
parent c2f7a5685e
commit fc9379ca63
3 changed files with 93 additions and 14 deletions

View File

@@ -16,11 +16,22 @@ class OrderElementRepository extends EntityRepository
{ {
$dql = 'SELECT f FROM Entities\FeedPublisher f $dql = 'SELECT f FROM Entities\FeedPublisher f
WHERE f.id = :id '; WHERE f.id = :id ';
$query = $this->_em->createQuery($dql); $query = $this->_em->createQuery($dql);
$query->setParameter('id', $id); $query->setParameter('id', $id);
$feed = $query->getResult();
return $query->getOneOrNullResult();
return $feed[0]; }
public function findByUser(\Entities\Feed $feed, \User_Adapter $user)
{
$dql = 'SELECT f FROM Entities\FeedPublisher f
WHERE f.usr_id = :usrId AND f.feed = :feed';
$query = $this->_em->createQuery($dql);
$query->setParameter('usrId', $user->get_id());
$query->setParameter('feed', $feed);
return $query->getOneOrNullResult();
} }
} }

View File

@@ -2,6 +2,7 @@
namespace Repositories; namespace Repositories;
use Alchemy\Phrasea\Application;
use Doctrine\ORM\EntityRepository; use Doctrine\ORM\EntityRepository;
/** /**
@@ -12,7 +13,7 @@ use Doctrine\ORM\EntityRepository;
*/ */
class SessionRepository extends EntityRepository class SessionRepository extends EntityRepository
{ {
/** /**
* *
* @param User_Adapter $user * @param User_Adapter $user
@@ -35,19 +36,46 @@ class SessionRepository extends EntityRepository
$query = $this->_em->createQuery($dql); $query = $this->_em->createQuery($dql);
$feeds = $query->getResult(); $feeds = $query->getResult();
return $feeds; return $feeds;
} }
public function find($id) public function findAllPublic()
{ {
$dql = 'SELECT f FROM Entities\Feed f $dql = 'SELECT f FROM Entities\Feed f
WHERE f.id = :id '; WHERE f.public = true
ORDER BY f.created_on DESC';
$query = $this->_em->createQuery($dql); $query = $this->_em->createQuery($dql);
$query->setParameter('id', $id); $feeds = $query->getResult();
$feed = $query->getResult();
return $feeds;
return $feed[0]; }
public function loadWithUser(Application $app, \User_Adapter $user, $id)
{
$feed = $this->find($id);
if ($feed) {
$coll = $feed->getCollection($app);
if ($feed->getPublic()
|| $coll === null
|| in_array($coll->get_base_id(), array_keys($user->ACL()->get_granted_base()))) {
return $feed;
}
}
return null;
}
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) . ')';
$query = $this->_em->createQuery($dql);
$feeds = $query->getResult();
return $feeds;
} }
} }

View File

@@ -12,4 +12,44 @@ use Doctrine\ORM\EntityRepository;
*/ */
class UserSettingRepository extends EntityRepository class UserSettingRepository extends EntityRepository
{ {
public function find($id)
{
$dql = 'SELECT f FROM Entities\FeedEntry f
WHERE f.id = :id ';
$query = $this->_em->createQuery($dql);
$query->setParameter('id', $id);
return $query->getOneOrNullResult();
}
public function findByFeed($feed, $id)
{
$dql = 'SELECT f FROM Entities\FeedEntry f
WHERE f.id = :id AND f.feed = :feed';
$query = $this->_em->createQuery($dql);
$query->setParameter('id', $id);
$query->setParameter('feed', $feed);
return $query->getOneOrNullResult();
}
public function findByFeeds($feeds, $offset_start = null, $how_many = null)
{
$dql = 'SELECT f FROM Entities\FeedEntry f
WHERE f.feed IN (:feeds)';
$query = $this->_em->createQuery($dql);
$query->setParameter('feeds', $feeds);
if (null !== $offset_start) {
$query->setFirstResult($offset_start);
}
if (null !== $how_many) {
$query->setMaxResults($how_many);
}
return $query->getResult();
}
} }