mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-18 15:33:15 +00:00
Remove $app dependency on FeedItemRepository::isRecordInPublicFeed() method.
This commit is contained in:
@@ -13,6 +13,8 @@ namespace Alchemy\Phrasea\Controller;
|
|||||||
use Alchemy\Phrasea\Application;
|
use Alchemy\Phrasea\Application;
|
||||||
use Alchemy\Phrasea\Authentication\ACLProvider;
|
use Alchemy\Phrasea\Authentication\ACLProvider;
|
||||||
use Alchemy\Phrasea\Authentication\Authenticator;
|
use Alchemy\Phrasea\Authentication\Authenticator;
|
||||||
|
use Alchemy\Phrasea\Model\Repositories\BasketElementRepository;
|
||||||
|
use Alchemy\Phrasea\Model\Repositories\FeedItemRepository;
|
||||||
use Alchemy\Phrasea\Model\Serializer\CaptionSerializer;
|
use Alchemy\Phrasea\Model\Serializer\CaptionSerializer;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
@@ -85,15 +87,17 @@ class PermalinkController extends AbstractDelivery
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \databox $databox
|
* @param \databox $databox
|
||||||
* @param $token
|
* @param string $token
|
||||||
* @param $record_id
|
* @param int $record_id
|
||||||
* @param string $subdef
|
* @param string $subdef
|
||||||
* @return \record_adapter
|
* @return \record_adapter
|
||||||
*/
|
*/
|
||||||
private function retrieveRecord(\databox $databox, $token, $record_id, $subdef)
|
private function retrieveRecord(\databox $databox, $token, $record_id, $subdef)
|
||||||
{
|
{
|
||||||
|
/** @var FeedItemRepository $feedItemsRepository */
|
||||||
|
$feedItemsRepository = $this->app['repo.feed-items'];
|
||||||
if (in_array($subdef, [\databox_subdef::CLASS_PREVIEW, \databox_subdef::CLASS_THUMBNAIL])
|
if (in_array($subdef, [\databox_subdef::CLASS_PREVIEW, \databox_subdef::CLASS_THUMBNAIL])
|
||||||
&& $this->app['repo.feed-items']->isRecordInPublicFeed($this->app, $databox->get_sbas_id(), $record_id)
|
&& $feedItemsRepository->isRecordInPublicFeed($databox->get_sbas_id(), $record_id)
|
||||||
) {
|
) {
|
||||||
return $databox->get_record($record_id);
|
return $databox->get_record($record_id);
|
||||||
}
|
}
|
||||||
@@ -132,6 +136,7 @@ class PermalinkController extends AbstractDelivery
|
|||||||
$watermark = !$this->acl->get($this->authentication->getUser())->has_right_on_base($record->get_base_id(), 'nowatermark');
|
$watermark = !$this->acl->get($this->authentication->getUser())->has_right_on_base($record->get_base_id(), 'nowatermark');
|
||||||
|
|
||||||
if ($watermark) {
|
if ($watermark) {
|
||||||
|
/** @var BasketElementRepository $repository */
|
||||||
$repository = $this->app['repo.basket-elements'];
|
$repository = $this->app['repo.basket-elements'];
|
||||||
|
|
||||||
if (count($repository->findReceivedValidationElementsByRecord($record, $this->authentication->getUser())) > 0) {
|
if (count($repository->findReceivedValidationElementsByRecord($record, $this->authentication->getUser())) > 0) {
|
||||||
|
@@ -12,6 +12,7 @@
|
|||||||
namespace Alchemy\Phrasea\Model\Repositories;
|
namespace Alchemy\Phrasea\Model\Repositories;
|
||||||
|
|
||||||
use Alchemy\Phrasea\Application;
|
use Alchemy\Phrasea\Application;
|
||||||
|
use Alchemy\Phrasea\Model\Entities\FeedItem;
|
||||||
use Doctrine\ORM\EntityRepository;
|
use Doctrine\ORM\EntityRepository;
|
||||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||||
|
|
||||||
@@ -26,15 +27,14 @@ class FeedItemRepository extends EntityRepository
|
|||||||
/**
|
/**
|
||||||
* Checks if a record is published in a public feed.
|
* Checks if a record is published in a public feed.
|
||||||
*
|
*
|
||||||
* @param Application $app
|
* @param int $sbas_id
|
||||||
* @param integer $sbas_id
|
* @param int $record_id
|
||||||
* @param integer $record_id
|
|
||||||
*
|
*
|
||||||
* @return Boolean
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function isRecordInPublicFeed(Application $app, $sbas_id, $record_id)
|
public function isRecordInPublicFeed($sbas_id, $record_id)
|
||||||
{
|
{
|
||||||
$dql = 'SELECT i
|
$dql = 'SELECT COUNT(i)
|
||||||
FROM Phraseanet:FeedItem i
|
FROM Phraseanet:FeedItem i
|
||||||
JOIN i.entry e
|
JOIN i.entry e
|
||||||
JOIN e.feed f
|
JOIN e.feed f
|
||||||
@@ -45,7 +45,7 @@ class FeedItemRepository extends EntityRepository
|
|||||||
$query = $this->_em->createQuery($dql);
|
$query = $this->_em->createQuery($dql);
|
||||||
$query->setParameters(['sbas_id' => $sbas_id, 'record_id' => $record_id]);
|
$query->setParameters(['sbas_id' => $sbas_id, 'record_id' => $record_id]);
|
||||||
|
|
||||||
return count($query->getResult()) > 0;
|
return $query->getSingleScalarResult() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -246,7 +246,7 @@ class ACL implements cache_cacheableInterface
|
|||||||
$granted = true;
|
$granted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (false === $granted && $this->app['repo.feed-items']->isRecordInPublicFeed($this->app, $record->getDataboxId(), $record->getRecordId())) {
|
if (false === $granted && $this->app['repo.feed-items']->isRecordInPublicFeed($record->getDataboxId(), $record->getRecordId())) {
|
||||||
$granted = true;
|
$granted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -9,13 +9,13 @@ class FeedItemRepositoryTest extends \PhraseanetTestCase
|
|||||||
public function testIs_record_in_public_feedInPublicFeed()
|
public function testIs_record_in_public_feedInPublicFeed()
|
||||||
{
|
{
|
||||||
$record = self::$DI['record_7'];
|
$record = self::$DI['record_7'];
|
||||||
$this->assertTrue(self::$DI['app']['orm.em']->getRepository('Phraseanet:FeedItem')->isRecordInPublicFeed(self::$DI['app'], $record->get_sbas_id(), $record->get_record_id()));
|
$this->assertTrue(self::$DI['app']['orm.em']->getRepository('Phraseanet:FeedItem')->isRecordInPublicFeed($record->get_sbas_id(), $record->get_record_id()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testIs_record_in_public_feedInPrivateFeed()
|
public function testIs_record_in_public_feedInPrivateFeed()
|
||||||
{
|
{
|
||||||
$record = self::$DI['record_2'];
|
$record = self::$DI['record_2'];
|
||||||
$this->assertFalse(self::$DI['app']['orm.em']->getRepository('Phraseanet:FeedItem')->isRecordInPublicFeed(self::$DI['app'], $record->get_sbas_id(), $record->get_record_id()));
|
$this->assertFalse(self::$DI['app']['orm.em']->getRepository('Phraseanet:FeedItem')->isRecordInPublicFeed($record->get_sbas_id(), $record->get_record_id()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testLoadLatestItems()
|
public function testLoadLatestItems()
|
||||||
|
Reference in New Issue
Block a user