mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-17 06:53:15 +00:00
PHRAS-3754 admin - user detail - Record ACL tab (#4148)
* record acl tab in admin * fix email locked, limit record right to 200 * fix * add filter * update * feed element, basket element * feed list * feed entries * when not expand * some improvement
This commit is contained in:
@@ -233,4 +233,50 @@ DQL;
|
||||
|
||||
return $builder->getQuery()->getResult();
|
||||
}
|
||||
|
||||
public function getElements(User $user, $databoxId = null, $recordId = null, $nbElement = 200)
|
||||
{
|
||||
$qb = $this->createQueryBuilder('be');
|
||||
$qb->innerJoin('be.basket', 'b');
|
||||
|
||||
$qb->where($qb->expr()->eq('b.user', ':user'));
|
||||
$qb->setParameter(':user', $user);
|
||||
|
||||
if ($databoxId != null) {
|
||||
$qb->andWhere('be.sbas_id = :databoxId');
|
||||
$qb->setParameter(':databoxId', $databoxId);
|
||||
}
|
||||
|
||||
if ($recordId != null) {
|
||||
$qb->andWhere('be.record_id = :recordId');
|
||||
$qb->setParameter(':recordId', $recordId);
|
||||
}
|
||||
|
||||
$qb->orderBy('be.id', 'DESC');
|
||||
$qb->setMaxResults($nbElement);
|
||||
|
||||
return $qb->getQuery()->getResult();
|
||||
}
|
||||
|
||||
public function getElementsCount(User $user, $databoxId = null, $recordId = null)
|
||||
{
|
||||
$qb = $this->createQueryBuilder('be');
|
||||
$qb->select('count(be)');
|
||||
$qb->innerJoin('be.basket', 'b');
|
||||
|
||||
$qb->where($qb->expr()->eq('b.user', ':user'));
|
||||
$qb->setParameter(':user', $user);
|
||||
|
||||
if ($databoxId != null) {
|
||||
$qb->andWhere('be.sbas_id = :databoxId');
|
||||
$qb->setParameter(':databoxId', $databoxId);
|
||||
}
|
||||
|
||||
if ($recordId != null) {
|
||||
$qb->andWhere('be.record_id = :recordId');
|
||||
$qb->setParameter(':recordId', $recordId);
|
||||
}
|
||||
|
||||
return $qb->getQuery()->getSingleScalarResult();
|
||||
}
|
||||
}
|
||||
|
@@ -13,6 +13,7 @@ namespace Alchemy\Phrasea\Model\Repositories;
|
||||
|
||||
use Alchemy\Phrasea\Model\Entities\Feed;
|
||||
use Alchemy\Phrasea\Model\Entities\FeedEntry;
|
||||
use Alchemy\Phrasea\Model\Entities\User;
|
||||
use Doctrine\ORM\EntityRepository;
|
||||
|
||||
/**
|
||||
@@ -64,4 +65,24 @@ class FeedEntryRepository extends EntityRepository
|
||||
|
||||
return $builder->getQuery()->getSingleScalarResult();
|
||||
}
|
||||
|
||||
public function getByUserAndFeed(User $user, Feed $feed, $isCount = false)
|
||||
{
|
||||
$qb = $this->createQueryBuilder('fe');
|
||||
|
||||
$qb->innerJoin('fe.publisher', 'fp');
|
||||
$qb->where($qb->expr()->eq('fp.user', ':publisher'));
|
||||
$qb->setParameter(':publisher', $user);
|
||||
|
||||
$qb->andWhere($qb->expr()->eq('fe.feed', ':feed'));
|
||||
$qb->setParameter(':feed', $feed);
|
||||
|
||||
if ($isCount) {
|
||||
$qb->select('count(fe)');
|
||||
return $qb->getQuery()->getSingleScalarResult();
|
||||
} else {
|
||||
$qb->orderBy('fe.id', 'DESC');
|
||||
return $qb->getQuery()->getResult();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -13,6 +13,7 @@ namespace Alchemy\Phrasea\Model\Repositories;
|
||||
|
||||
use Alchemy\Phrasea\Application;
|
||||
use Alchemy\Phrasea\Model\Entities\FeedItem;
|
||||
use Alchemy\Phrasea\Model\Entities\User;
|
||||
use Doctrine\ORM\EntityRepository;
|
||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
|
||||
@@ -103,4 +104,52 @@ class FeedItemRepository extends EntityRepository
|
||||
|
||||
return $items;
|
||||
}
|
||||
|
||||
public function getItemsCount(User $user, $databoxId = null, $recordId = null)
|
||||
{
|
||||
$qb = $this->createQueryBuilder('fi');
|
||||
$qb->select('count(fi)');
|
||||
$qb->innerjoin('fi.entry', 'fe');
|
||||
$qb->innerjoin('fe.publisher', 'fp');
|
||||
|
||||
$qb->where($qb->expr()->eq('fp.user', ':publisher'));
|
||||
$qb->setParameter(':publisher', $user);
|
||||
|
||||
if ($databoxId != null) {
|
||||
$qb->andWhere('fi.sbasId = :databoxId');
|
||||
$qb->setParameter(':databoxId', $databoxId);
|
||||
}
|
||||
|
||||
if ($recordId != null) {
|
||||
$qb->andWhere('fi.recordId = :recordId');
|
||||
$qb->setParameter(':recordId', $recordId);
|
||||
}
|
||||
|
||||
return $qb->getQuery()->getSingleScalarResult();
|
||||
}
|
||||
|
||||
public function getLastItems(User $user, $databoxId = null, $recordId = null, $nbItems = 200)
|
||||
{
|
||||
$qb = $this->createQueryBuilder('fi');
|
||||
$qb->innerjoin('fi.entry', 'fe');
|
||||
$qb->innerjoin('fe.publisher', 'fp');
|
||||
|
||||
$qb->where($qb->expr()->eq('fp.user', ':publisher'));
|
||||
$qb->setParameter(':publisher', $user);
|
||||
|
||||
if ($databoxId != null) {
|
||||
$qb->andWhere('fi.sbasId = :databoxId');
|
||||
$qb->setParameter(':databoxId', $databoxId);
|
||||
}
|
||||
|
||||
if ($recordId != null) {
|
||||
$qb->andWhere('fi.recordId = :recordId');
|
||||
$qb->setParameter(':recordId', $recordId);
|
||||
}
|
||||
|
||||
$qb->orderBy('fi.id', 'DESC');
|
||||
$qb->setMaxResults($nbItems);
|
||||
|
||||
return $qb->getQuery()->getResult();
|
||||
}
|
||||
}
|
||||
|
@@ -12,6 +12,7 @@
|
||||
namespace Alchemy\Phrasea\Model\Repositories;
|
||||
|
||||
use Alchemy\Phrasea\Model\Entities\Feed;
|
||||
use Alchemy\Phrasea\Model\Entities\User;
|
||||
use Doctrine\ORM\EntityRepository;
|
||||
|
||||
/**
|
||||
@@ -108,4 +109,14 @@ class FeedRepository extends EntityRepository
|
||||
|
||||
return $qb->getQuery()->getResult();
|
||||
}
|
||||
|
||||
public function getUserFeed(User $user)
|
||||
{
|
||||
$qb = $this->createQueryBuilder('f');
|
||||
$qb->innerJoin('f.publishers', 'fp');
|
||||
$qb->where($qb->expr()->eq('fp.user', ':publisher'));
|
||||
$qb->setParameter(':publisher', $user);
|
||||
|
||||
return $qb->getQuery()->getResult();
|
||||
}
|
||||
}
|
||||
|
@@ -472,7 +472,6 @@ class WorkerRunningJobRepository extends EntityRepository
|
||||
}
|
||||
|
||||
return $qb->getQuery()->getSingleScalarResult();
|
||||
|
||||
}
|
||||
|
||||
public function updateStatusRunningToCanceledSinceCreated($hour = 0)
|
||||
|
Reference in New Issue
Block a user