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:
Aina Sitraka
2022-10-26 00:21:25 +03:00
committed by GitHub
parent 19b4f6d06b
commit 69ccdefb51
10 changed files with 742 additions and 141 deletions

View File

@@ -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();
}
}

View File

@@ -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();
}
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -472,7 +472,6 @@ class WorkerRunningJobRepository extends EntityRepository
}
return $qb->getQuery()->getSingleScalarResult();
}
public function updateStatusRunningToCanceledSinceCreated($hour = 0)