mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-13 13:03:20 +00:00
Rebased, fixed minor bugs
This commit is contained in:
@@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
namespace Alchemy\Phrasea\Controller\Client;
|
namespace Alchemy\Phrasea\Controller\Client;
|
||||||
|
|
||||||
|
use Alchemy\Phrasea\Feed\Aggregate;
|
||||||
use Alchemy\Phrasea\SearchEngine\SearchEngineOptions;
|
use Alchemy\Phrasea\SearchEngine\SearchEngineOptions;
|
||||||
use Alchemy\Phrasea\Exception\SessionNotFound;
|
use Alchemy\Phrasea\Exception\SessionNotFound;
|
||||||
use Entities\UserQuery;
|
use Entities\UserQuery;
|
||||||
@@ -538,8 +539,10 @@ class Root implements ControllerProviderInterface
|
|||||||
*/
|
*/
|
||||||
private function getPublicationStartPage(Application $app)
|
private function getPublicationStartPage(Application $app)
|
||||||
{
|
{
|
||||||
|
$aggregate = Aggregate::createFromUser($app['EM'], $app['authentication']->getUser());
|
||||||
|
|
||||||
return $app['twig']->render('client/home_inter_pub_basket.html.twig', array(
|
return $app['twig']->render('client/home_inter_pub_basket.html.twig', array(
|
||||||
'feeds' => $app['EM']->getRepository('Entities\Feed')->getAllforUser($app['authentication']->getUser()),
|
'feeds' => $aggregate,
|
||||||
'image_size' => (int) $app['authentication']->getUser()->getPrefs('images_size')
|
'image_size' => (int) $app['authentication']->getUser()->getPrefs('images_size')
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
@@ -80,24 +80,7 @@ class Aggregate implements FeedInterface
|
|||||||
|
|
||||||
public function getEntries($offset_start = 0, $how_many = null)
|
public function getEntries($offset_start = 0, $how_many = null)
|
||||||
{
|
{
|
||||||
$count = 0;
|
return $this->em->getRepository('Entities\FeedEntry')->findByFeeds($this->feeds, $offset_start, $how_many);
|
||||||
$added = 0;
|
|
||||||
|
|
||||||
$collection = array();
|
|
||||||
foreach ($this->feeds as $feed) {
|
|
||||||
foreach ($feed->getEntries() as $entry) {
|
|
||||||
if ($count >= $offset_start) {
|
|
||||||
$collection[] = $entry;
|
|
||||||
$added++;
|
|
||||||
}
|
|
||||||
$count++;
|
|
||||||
if (null !== $how_many && $added == $how_many) {
|
|
||||||
return $collection;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $collection;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getSubtitle()
|
public function getSubtitle()
|
||||||
@@ -112,9 +95,7 @@ class Aggregate implements FeedInterface
|
|||||||
|
|
||||||
public function getIconUrl()
|
public function getIconUrl()
|
||||||
{
|
{
|
||||||
$url = '/skins/icons/rss32.gif';
|
return false;
|
||||||
|
|
||||||
return $url;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getCreatedOn()
|
public function getCreatedOn()
|
||||||
|
@@ -1,108 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace Alchemy\Phrasea\Feed;
|
|
||||||
|
|
||||||
use Alchemy\Phrasea\Exception\InvalidArgumentException;
|
|
||||||
use Alchemy\Phrasea\Feed\Aggregate;
|
|
||||||
use Entities\AggregateToken;
|
|
||||||
use Doctrine\ORM\EntityManager;
|
|
||||||
use Symfony\Component\Routing\Generator\UrlGenerator;
|
|
||||||
|
|
||||||
class AggregateLinkGenerator
|
|
||||||
{
|
|
||||||
const FORMAT_ATOM = 'atom';
|
|
||||||
const FORMAT_RSS = 'rss';
|
|
||||||
|
|
||||||
private $em;
|
|
||||||
private $generator;
|
|
||||||
private $random;
|
|
||||||
|
|
||||||
public function __construct(UrlGenerator $generator, EntityManager $em, \random $random)
|
|
||||||
{
|
|
||||||
$this->generator = $generator;
|
|
||||||
$this->em = $em;
|
|
||||||
$this->random = $random;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function generate(Aggregate $aggregate, \User_Adapter $user, $format, $page = null, $renew = false)
|
|
||||||
{
|
|
||||||
switch ($format) {
|
|
||||||
case self::FORMAT_ATOM:
|
|
||||||
$params = array('token' => $this->getAggregateToken($user, $renew)->getValue(),
|
|
||||||
'format' => 'atom');
|
|
||||||
if (null !== $page) {
|
|
||||||
$params['page'] = $page;
|
|
||||||
}
|
|
||||||
return new FeedLink(
|
|
||||||
$this->generator->generate('feed_user_aggregated', $params, UrlGenerator::ABSOLUTE_URL),
|
|
||||||
sprintf('%s - %s', $aggregate->getTitle(), 'Atom'),
|
|
||||||
'application/atom+xml'
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
case self::FORMAT_RSS:
|
|
||||||
$params = array('token' => $this->getAggregateToken($user, $renew)->getValue(),
|
|
||||||
'format' => 'rss');
|
|
||||||
if (null !== $page) {
|
|
||||||
$params['page'] = $page;
|
|
||||||
}
|
|
||||||
return new FeedLink(
|
|
||||||
$this->generator->generate('feed_user_aggregated', $params, UrlGenerator::ABSOLUTE_URL),
|
|
||||||
sprintf('%s - %s', $aggregate->getTitle(), 'RSS'),
|
|
||||||
'application/rss+xml'
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new InvalidArgumentException(sprintf('Format %s is not recognized.', $format));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function generatePublic(Aggregate $aggregate, $format, $page = null)
|
|
||||||
{
|
|
||||||
switch ($format) {
|
|
||||||
case self::FORMAT_ATOM:
|
|
||||||
$params = array('format' => 'atom');
|
|
||||||
if (null !== $page) {
|
|
||||||
$params['page'] = $page;
|
|
||||||
}
|
|
||||||
return new FeedLink(
|
|
||||||
$this->generator->generate('feed_user_aggregated', $params, UrlGenerator::ABSOLUTE_URL),
|
|
||||||
sprintf('%s - %s', $aggregate->getTitle(), 'Atom'),
|
|
||||||
'application/atom+xml'
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
case self::FORMAT_RSS:
|
|
||||||
$params = array('format' => 'rss');
|
|
||||||
if (null !== $page) {
|
|
||||||
$params['page'] = $page;
|
|
||||||
}
|
|
||||||
return new FeedLink(
|
|
||||||
$this->generator->generate('feed_user_aggregated', $params, UrlGenerator::ABSOLUTE_URL),
|
|
||||||
sprintf('%s - %s', $aggregate->getTitle(), 'RSS'),
|
|
||||||
'application/rss+xml'
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new InvalidArgumentException(sprintf('Format %s is not recognized.', $format));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getAggregateToken(\User_Adapter $user, $renew = false)
|
|
||||||
{
|
|
||||||
$token = $this->em
|
|
||||||
->getRepository('Entities\AggregateToken')
|
|
||||||
->findByUser($user);
|
|
||||||
|
|
||||||
if (null === $token || true === $renew) {
|
|
||||||
if (null === $token) {
|
|
||||||
$token = new AggregateToken();
|
|
||||||
$token->setUsrId($user->get_id());
|
|
||||||
}
|
|
||||||
|
|
||||||
$token->setValue($this->random->generatePassword(12, \random::LETTERS_AND_NUMBERS));
|
|
||||||
$this->em->persist($token);
|
|
||||||
$this->em->flush();
|
|
||||||
}
|
|
||||||
|
|
||||||
return $token;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,68 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file is part of Phraseanet
|
|
||||||
*
|
|
||||||
* (c) 2005-2013 Alchemy
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view the LICENSE
|
|
||||||
* file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Alchemy\Phrasea\Feed;
|
|
||||||
|
|
||||||
class FeedLink implements FeedLinkInterface
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
protected $mimetype;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
protected $title;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
protected $uri;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param string $uri
|
|
||||||
* @param string $title
|
|
||||||
* @param string $mimetype
|
|
||||||
*
|
|
||||||
* @return FeedLink
|
|
||||||
*/
|
|
||||||
public function __construct($uri, $title, $mimetype)
|
|
||||||
{
|
|
||||||
$this->mimetype = $mimetype;
|
|
||||||
$this->uri = $uri;
|
|
||||||
$this->title = $title;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
public function getMimetype()
|
|
||||||
{
|
|
||||||
return $this->mimetype;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
public function getTitle()
|
|
||||||
{
|
|
||||||
return $this->title;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
public function getURI()
|
|
||||||
{
|
|
||||||
return $this->uri;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,116 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace Alchemy\Phrasea\Feed;
|
|
||||||
|
|
||||||
use Alchemy\Phrasea\Exception\InvalidArgumentException;
|
|
||||||
use Doctrine\ORM\EntityManager;
|
|
||||||
use Entities\Feed;
|
|
||||||
use Entities\FeedToken;
|
|
||||||
use Symfony\Component\Routing\Generator\UrlGenerator;
|
|
||||||
|
|
||||||
class LinkGenerator
|
|
||||||
{
|
|
||||||
const FORMAT_ATOM = 'atom';
|
|
||||||
const FORMAT_RSS = 'rss';
|
|
||||||
|
|
||||||
private $em;
|
|
||||||
private $generator;
|
|
||||||
private $random;
|
|
||||||
|
|
||||||
public function __construct(UrlGenerator $generator, EntityManager $em, \random $random)
|
|
||||||
{
|
|
||||||
$this->generator = $generator;
|
|
||||||
$this->em = $em;
|
|
||||||
$this->random = $random;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function generate(Feed $feed, \User_Adapter $user, $format, $page = null, $renew = false)
|
|
||||||
{
|
|
||||||
switch ($format) {
|
|
||||||
case self::FORMAT_ATOM:
|
|
||||||
$params = array('token' => $this->getFeedToken($feed, $user, $renew)->getValue(),
|
|
||||||
'id' => $feed->getId(),
|
|
||||||
'format' => 'atom');
|
|
||||||
if (null !== $page) {
|
|
||||||
$params['page'] = $page;
|
|
||||||
}
|
|
||||||
return new FeedLink(
|
|
||||||
$this->generator->generate('feed_user', $params, UrlGenerator::ABSOLUTE_URL),
|
|
||||||
sprintf('%s - %s', $feed->getTitle(), 'Atom'),
|
|
||||||
'application/atom+xml'
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
case self::FORMAT_RSS:
|
|
||||||
$params = array('token' => $this->getFeedToken($feed, $user, $renew)->getValue(),
|
|
||||||
'id' => $feed->getId(),
|
|
||||||
'format' => 'rss');
|
|
||||||
if (null !== $page) {
|
|
||||||
$params['page'] = $page;
|
|
||||||
}
|
|
||||||
return new FeedLink(
|
|
||||||
$this->generator->generate('feed_user', $params, UrlGenerator::ABSOLUTE_URL),
|
|
||||||
sprintf('%s - %s', $feed->getTitle(), 'RSS'),
|
|
||||||
'application/rss+xml'
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new InvalidArgumentException(sprintf('Format %s is not recognized.', $format));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function generatePublic(Feed $feed, $format, $page = null)
|
|
||||||
{
|
|
||||||
switch ($format) {
|
|
||||||
case self::FORMAT_ATOM:
|
|
||||||
$params = array('id' => $feed->getId(),
|
|
||||||
'format' => 'atom');
|
|
||||||
if (null !== $page) {
|
|
||||||
$params['page'] = $page;
|
|
||||||
}
|
|
||||||
return new FeedLink(
|
|
||||||
$this->generator->generate('feed_public', $params, UrlGenerator::ABSOLUTE_URL),
|
|
||||||
sprintf('%s - %s', $feed->getTitle(), 'Atom'),
|
|
||||||
'application/atom+xml'
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
case self::FORMAT_RSS:
|
|
||||||
$params = array('id' => $feed->getId(),
|
|
||||||
'format' => 'rss');
|
|
||||||
if (null !== $page) {
|
|
||||||
$params['page'] = $page;
|
|
||||||
}
|
|
||||||
return new FeedLink(
|
|
||||||
$this->generator->generate('feed_public', $params, UrlGenerator::ABSOLUTE_URL),
|
|
||||||
sprintf('%s - %s', $feed->getTitle(), 'RSS'),
|
|
||||||
'application/rss+xml'
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new InvalidArgumentException(sprintf('Format %s is not recognized.', $format));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getFeedToken(Feed $feed, \User_Adapter $user, $renew = false)
|
|
||||||
{
|
|
||||||
$token = $this->em
|
|
||||||
->getRepository('Entities\FeedToken')
|
|
||||||
->findByFeedAndUser($feed, $user);
|
|
||||||
|
|
||||||
if (null === $token || true === $renew) {
|
|
||||||
if (null === $token) {
|
|
||||||
$token = new FeedToken();
|
|
||||||
$token->setFeed($feed);
|
|
||||||
$token->setUsrId($user->get_id());
|
|
||||||
$feed->addToken($token);
|
|
||||||
|
|
||||||
$this->em->persist($feed);
|
|
||||||
}
|
|
||||||
|
|
||||||
$token->setValue($this->random->generatePassword(12, \random::LETTERS_AND_NUMBERS));
|
|
||||||
$this->em->persist($token);
|
|
||||||
$this->em->flush();
|
|
||||||
}
|
|
||||||
|
|
||||||
return $token;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,30 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file is part of Phraseanet
|
|
||||||
*
|
|
||||||
* (c) 2005-2013 Alchemy
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view the LICENSE
|
|
||||||
* file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Alchemy\Phrasea\Feed;
|
|
||||||
|
|
||||||
interface FeedLinkInterface
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getMimetype();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getTitle();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getURI();
|
|
||||||
}
|
|
@@ -32,7 +32,7 @@ class SessionRepository extends EntityRepository
|
|||||||
}
|
}
|
||||||
|
|
||||||
$dql .= ' OR f.public = true
|
$dql .= ' OR f.public = true
|
||||||
ORDER BY f.created_on DESC';
|
ORDER BY f.updated_on DESC';
|
||||||
|
|
||||||
$query = $this->_em->createQuery($dql);
|
$query = $this->_em->createQuery($dql);
|
||||||
$feeds = $query->getResult();
|
$feeds = $query->getResult();
|
||||||
@@ -44,7 +44,7 @@ class SessionRepository extends EntityRepository
|
|||||||
{
|
{
|
||||||
$dql = 'SELECT f FROM Entities\Feed f
|
$dql = 'SELECT f FROM Entities\Feed f
|
||||||
WHERE f.public = true
|
WHERE f.public = true
|
||||||
ORDER BY f.created_on DESC';
|
ORDER BY f.updated_on DESC';
|
||||||
|
|
||||||
$query = $this->_em->createQuery($dql);
|
$query = $this->_em->createQuery($dql);
|
||||||
$feeds = $query->getResult();
|
$feeds = $query->getResult();
|
||||||
|
@@ -38,7 +38,7 @@ class UserSettingRepository extends EntityRepository
|
|||||||
public function findByFeeds($feeds, $offset_start = null, $how_many = null)
|
public function findByFeeds($feeds, $offset_start = null, $how_many = null)
|
||||||
{
|
{
|
||||||
$dql = 'SELECT f FROM Entities\FeedEntry f
|
$dql = 'SELECT f FROM Entities\FeedEntry f
|
||||||
WHERE f.feed IN (:feeds)';
|
WHERE f.feed IN (:feeds) order by f.updated_on DESC';
|
||||||
|
|
||||||
$query = $this->_em->createQuery($dql);
|
$query = $this->_em->createQuery($dql);
|
||||||
$query->setParameter('feeds', $feeds);
|
$query->setParameter('feeds', $feeds);
|
||||||
|
@@ -185,19 +185,19 @@ class record_preview extends record_adapter
|
|||||||
foreach ($entry->getItems() as $element) {
|
foreach ($entry->getItems() as $element) {
|
||||||
$i ++;
|
$i ++;
|
||||||
if ($first) {
|
if ($first) {
|
||||||
$sbas_id = $element->getRecord()->get_sbas_id();
|
$sbas_id = $element->getRecord($this->app)->get_sbas_id();
|
||||||
$record_id = $element->getRecord()->get_record_id();
|
$record_id = $element->getRecord($this->app)->get_record_id();
|
||||||
$this->original_item = $element;
|
|
||||||
$this->name = $entry->getTitle();
|
$this->name = $entry->getTitle();
|
||||||
|
$this->original_item = $element;
|
||||||
$number = $element->getOrd();
|
$number = $element->getOrd();
|
||||||
}
|
}
|
||||||
$first = false;
|
$first = false;
|
||||||
|
|
||||||
if ($element->getOrd() == $pos) {
|
if ($element->getOrd() == $pos) {
|
||||||
$sbas_id = $element->getRecord()->get_sbas_id();
|
$sbas_id = $element->getRecord($this->app)->get_sbas_id();
|
||||||
$record_id = $element->getRecord()->get_record_id();
|
$record_id = $element->getRecord($this->app)->get_record_id();
|
||||||
$this->original_item = $element;
|
|
||||||
$this->name = $entry->getTitle();
|
$this->name = $entry->getTitle();
|
||||||
|
$this->original_item = $element;
|
||||||
$number = $element->getOrd();
|
$number = $element->getOrd();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -29,7 +29,7 @@
|
|||||||
{% for item in feed_entry.getItems() %}
|
{% for item in feed_entry.getItems() %}
|
||||||
<li class="image_box" id="item_{{item.getId()}}">
|
<li class="image_box" id="item_{{item.getId()}}">
|
||||||
<a href="{{ path('lightbox_ajax_load_feeditem', { 'entry_id' : feed_entry.getId(), 'item_id' : item.getId()}) }}">
|
<a href="{{ path('lightbox_ajax_load_feeditem', { 'entry_id' : feed_entry.getId(), 'item_id' : item.getId()}) }}">
|
||||||
{{thumbnail.format(item.getRecord().get_thumbnail(), 80, 80, '', true, false)}}
|
{{thumbnail.format(item.getRecord(app).get_thumbnail(), 80, 80, '', true, false)}}
|
||||||
</a>
|
</a>
|
||||||
<input type="hidden" class="display_id" name="display_id" value="{{item.getOrd()}}" />
|
<input type="hidden" class="display_id" name="display_id" value="{{item.getOrd()}}" />
|
||||||
</li>
|
</li>
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
<div data-role="page">
|
<div data-role="page">
|
||||||
<div data-role="header">
|
<div data-role="header">
|
||||||
<a href="{{ path('lightbox_feed_entry', { 'entry_id' : feed_element.getEntry().getId() }) }}" data-rel="back" data-icon="arrow-l">Back</a>
|
<a href="{{ path('lightbox_feed_entry', { 'entry_id' : feed_element.getEntry().getId() }) }}" data-rel="back" data-icon="arrow-l">Back</a>
|
||||||
<h1>{{feed_element.getOrd()}} - {{record.getTitle()}}</h1>
|
<h1>{{feed_element.getOrd()}} - {{record.get_title()}}</h1>
|
||||||
<a rel="external" href="{{ path('lightbox') }}" data-icon="home" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home">Home</a>
|
<a rel="external" href="{{ path('lightbox') }}" data-icon="home" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home">Home</a>
|
||||||
</div>
|
</div>
|
||||||
<div data-role="content">
|
<div data-role="content">
|
||||||
|
@@ -39,7 +39,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div style="width:100%;position:relative;float:left;" id="PUBLICONT{{ entry.getId() }}">
|
<div style="width:100%;position:relative;float:left;" id="PUBLICONT{{ entry.getId() }}">
|
||||||
{% for item in entry.getItems() %}
|
{% for item in entry.getItems() %}
|
||||||
{% set record = item.getRecord() %}
|
{% set record = item.getRecord(app) %}
|
||||||
{% set thumbnail = record.get_thumbnail() %}
|
{% set thumbnail = record.get_thumbnail() %}
|
||||||
{% set docType = record.get_type() %}
|
{% set docType = record.get_type() %}
|
||||||
{% set duration = "" %}
|
{% set duration = "" %}
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
<form name="download_form" class="download_form" style="display:none;">
|
<form name="download_form" class="download_form" style="display:none;">
|
||||||
<input type="hidden" name="basrec" value="{{element.getRecord(app).get_serialize_key()}}"/>
|
<input type="hidden" name="basrec" value="{{element.getRecord(app).get_serialize_key()}}"/>
|
||||||
</form>
|
</form>
|
||||||
<div tooltipsrc="{{ path('prod_tooltip_preview', { 'sbas_id' : element.getRecord().get_sbas_id(), 'record_id' : element.getRecord().get_record_id() }) }}" class="previewTips"></div>
|
<div tooltipsrc="{{ path('prod_tooltip_preview', { 'sbas_id' : element.getRecord(app).get_sbas_id(), 'record_id' : element.getRecord(app).get_record_id() }) }}" class="previewTips"></div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
<form name="download_form" class="download_form" style="display:none;">
|
<form name="download_form" class="download_form" style="display:none;">
|
||||||
<input type="hidden" name="basrec" value="{{element.getRecord(app).get_serialize_key()}}"/>
|
<input type="hidden" name="basrec" value="{{element.getRecord(app).get_serialize_key()}}"/>
|
||||||
</form>
|
</form>
|
||||||
<div tooltipsrc="{{ path('prod_tooltip_preview', { 'sbas_id' : element.getRecord().get_sbas_id(), 'record_id' : element.getRecord().get_record_id() }) }}" class="previewTips"></div>
|
<div tooltipsrc="{{ path('prod_tooltip_preview', { 'sbas_id' : element.getRecord(app).get_sbas_id(), 'record_id' : element.getRecord(app).get_record_id() }) }}" class="previewTips"></div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -18,7 +18,7 @@
|
|||||||
<div class="PNB10 record_list" style="overflow:auto;">
|
<div class="PNB10 record_list" style="overflow:auto;">
|
||||||
{% for content in entry.getItems() %}
|
{% for content in entry.getItems() %}
|
||||||
<div class="sortable" style="position:relative;float:left;">
|
<div class="sortable" style="position:relative;float:left;">
|
||||||
{{ _self.format_diapo(content.getRecord()) }}
|
{{ _self.format_diapo(content.getRecord(app)) }}
|
||||||
<form>
|
<form>
|
||||||
<input type="hidden" name="item_id" value="{{content.getId()}}" />
|
<input type="hidden" name="item_id" value="{{content.getId()}}" />
|
||||||
</form>
|
</form>
|
||||||
|
@@ -7,7 +7,11 @@
|
|||||||
<td>
|
<td>
|
||||||
<h1 class="title">
|
<h1 class="title">
|
||||||
{% if feed.isAggregated() %}
|
{% if feed.isAggregated() %}
|
||||||
<img style="height:16px;" src="{{ entry.getFeed().getIconUrl() }}" />
|
<img style="height:16px;" src="{% if entry.getFeed().getIconUrl() == false %}
|
||||||
|
/skins/icons/rss32.gif
|
||||||
|
{% else %}
|
||||||
|
/custom/feed_{{ entry.getFeed().getId() }}.jpg
|
||||||
|
{% endif %}"/>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{{ entry.getTitle() }}
|
{{ entry.getTitle() }}
|
||||||
{% set author = entry.getAuthorName() %}
|
{% set author = entry.getAuthorName() %}
|
||||||
@@ -47,14 +51,18 @@
|
|||||||
{% trans %}
|
{% trans %}
|
||||||
dans {{feed_name}}
|
dans {{feed_name}}
|
||||||
{% endtrans %}
|
{% endtrans %}
|
||||||
<img style="height:16px;" src="{{ entry.getFeed().getIconUrl() }}" />
|
<img style="height:16px;" src="{% if entry.getFeed().getIconUrl() == false %}
|
||||||
|
/skins/icons/rss32.gif
|
||||||
|
{% else %}
|
||||||
|
/custom/feed_{{ entry.getFeed().getId() }}.jpg
|
||||||
|
{% endif %}"/>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<p>{{ entry.getSubtitle()|nl2br|raw }}</p>
|
<p>{{ entry.getSubtitle()|nl2br|raw }}</p>
|
||||||
<div class="contents selectable">
|
<div class="contents selectable">
|
||||||
{% for item in entry.getItems() %}
|
{% for item in entry.getItems() %}
|
||||||
{% set record = item.getRecord() %}
|
{% set record = item.getRecord(app) %}
|
||||||
{% set prefix = 'PUBLI_' ~ item.getId() %}
|
{% set prefix = 'PUBLI_' ~ item.getId() %}
|
||||||
{{record_format.block(record, false, null, prefix, entry.getId())}}
|
{{record_format.block(record, false, null, prefix, entry.getId())}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@@ -6,7 +6,11 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td style="width:600px;">
|
<td style="width:600px;">
|
||||||
<h1>
|
<h1>
|
||||||
<img src="{{feed.getIconUrl()}}" style="height:32px;"/>
|
<img src="{% if feed.getIconUrl() == false %}
|
||||||
|
/skins/icons/rss32.gif
|
||||||
|
{% else %}
|
||||||
|
/custom/feed_{{ feed.getId() }}.jpg
|
||||||
|
{% endif %}" style="height:32px;"/>
|
||||||
{% if feed.isAggregated %}
|
{% if feed.isAggregated %}
|
||||||
{% trans 'Toutes les publications' %}
|
{% trans 'Toutes les publications' %}
|
||||||
<a class="feed_reload ajax_answers no_scroll" href="{{ path('prod_feeds') }}" >
|
<a class="feed_reload ajax_answers no_scroll" href="{{ path('prod_feeds') }}" >
|
||||||
@@ -36,7 +40,11 @@
|
|||||||
{% for aval_feed in feeds %}
|
{% for aval_feed in feeds %}
|
||||||
<li>
|
<li>
|
||||||
<a class="ajax_answers" href="{{ path('prod_feeds_feed', { 'id' : aval_feed.getId() }) }}">
|
<a class="ajax_answers" href="{{ path('prod_feeds_feed', { 'id' : aval_feed.getId() }) }}">
|
||||||
<img src="{{aval_feed.getIconUrl()}}" style="height:16px;"/> {{ aval_feed.getTitle() }}
|
<img src="{% if aval_feed.getIconUrl() == false %}
|
||||||
|
/skins/icons/rss32.gif
|
||||||
|
{% else %}
|
||||||
|
/custom/feed_{{ aval_feed.getId() }}.jpg
|
||||||
|
{% endif %}" style="height:16px;"/> {{ aval_feed.getTitle() }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
<div id="PREVIEWCURRENTCONT" class="PNB10">
|
<div id="PREVIEWCURRENTCONT" class="PNB10">
|
||||||
<ul>
|
<ul>
|
||||||
{% for child in record.get_container().get_content() %}
|
{% for child in record.get_container() %}
|
||||||
|
|
||||||
{% set thumbnail = child.get_record().get_thumbnail() %}
|
{% set thumbnail = child.getRecord(app).get_thumbnail() %}
|
||||||
{% if thumbnail.is_paysage() %}
|
{% if thumbnail.is_paysage() %}
|
||||||
{% set style = 'width:65px;top:' %}
|
{% set style = 'width:65px;top:' %}
|
||||||
{% set top = ((66 - (65 / (thumbnail.get_width() / thumbnail.get_height()))) / 2)|round %}
|
{% set top = ((66 - (65 / (thumbnail.get_width() / thumbnail.get_height()))) / 2)|round %}
|
||||||
@@ -14,16 +14,16 @@
|
|||||||
|
|
||||||
{% set tooltip = '' %}
|
{% set tooltip = '' %}
|
||||||
{% if app['phraseanet.registry'].get('GV_rollover_reg_preview') %}
|
{% if app['phraseanet.registry'].get('GV_rollover_reg_preview') %}
|
||||||
{% set tooltip = 'tooltipsrc="' ~ path('prod_tooltip_preview', { 'sbas_id' : child.get_record().get_sbas_id(), 'record_id' : child.get_record().get_record_id() }) ~ '"' %}
|
{% set tooltip = 'tooltipsrc="' ~ path('prod_tooltip_preview', { 'sbas_id' : child.getRecord(app).get_sbas_id(), 'record_id' : child.get_record().get_record_id() }) ~ '"' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% set class = '' %}
|
{% set class = '' %}
|
||||||
{% if record.get_number() == child.get_ord() %}
|
{% if record.get_number() == child.getOrd() %}
|
||||||
{% set class = ' selected' %}
|
{% set class = ' selected' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<li class="{{class}} prevTrainCurrent">
|
<li class="{{class}} prevTrainCurrent">
|
||||||
<img {{tooltip|raw}} jsargs="FEED|{{child.get_ord()}}|{{record.get_container().get_id()}}"
|
<img {{tooltip|raw}} jsargs="FEED|{{child.get_ord()}}|{{record.get_container().getId()}}"
|
||||||
class="openPreview prevRegToolTip" return(false);" src="{{thumbnail.get_url()}}"
|
class="openPreview prevRegToolTip" return(false);" src="{{thumbnail.get_url()}}"
|
||||||
style="{{style}}margin:7px;position:relative;"/></li>
|
style="{{style}}margin:7px;position:relative;"/></li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@@ -9,19 +9,19 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
|
|||||||
{
|
{
|
||||||
public function testDatafilesRouteAuthenticated()
|
public function testDatafilesRouteAuthenticated()
|
||||||
{
|
{
|
||||||
$crawler = self::$DI['client']->request('GET', '/datafiles/' . self::$DI['record_1']->get_sbas_id() . '/' . self::$DI['record_1']->get_record_id() . '/preview/');
|
$crawler = self::$DI['client']->request('GET', '/datafiles/' . self::$DI['record_24']->get_sbas_id() . '/' . self::$DI['record_24']->get_record_id() . '/preview/');
|
||||||
$response = self::$DI['client']->getResponse();
|
$response = self::$DI['client']->getResponse();
|
||||||
|
|
||||||
$this->assertEquals(200, $response->getStatusCode());
|
$this->assertEquals(200, $response->getStatusCode());
|
||||||
$content_disposition = explode(';', $response->headers->get('content-disposition'));
|
$content_disposition = explode(';', $response->headers->get('content-disposition'));
|
||||||
$this->assertEquals('inline', $content_disposition[0]);
|
$this->assertEquals('inline', $content_disposition[0]);
|
||||||
$this->assertEquals(self::$DI['record_1']->get_preview()->get_mime(), $response->headers->get('content-type'));
|
$this->assertEquals(self::$DI['record_24']->get_preview()->get_mime(), $response->headers->get('content-type'));
|
||||||
$this->assertEquals(self::$DI['record_1']->get_preview()->get_size(), $response->headers->get('content-length'));
|
$this->assertEquals(self::$DI['record_24']->get_preview()->get_size(), $response->headers->get('content-length'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testDatafilesNonExistentSubdef()
|
public function testDatafilesNonExistentSubdef()
|
||||||
{
|
{
|
||||||
self::$DI['client']->request('GET', '/datafiles/' . self::$DI['record_1']->get_sbas_id() . '/' . self::$DI['record_1']->get_record_id() . '/asubdefthatdoesnotexists/');
|
self::$DI['client']->request('GET', '/datafiles/' . self::$DI['record_24']->get_sbas_id() . '/' . self::$DI['record_24']->get_record_id() . '/asubdefthatdoesnotexists/');
|
||||||
|
|
||||||
$this->assertNotFoundResponse(self::$DI['client']->getResponse());
|
$this->assertNotFoundResponse(self::$DI['client']->getResponse());
|
||||||
}
|
}
|
||||||
@@ -56,7 +56,7 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
|
|||||||
public function testDatafilesRouteNotAuthenticated()
|
public function testDatafilesRouteNotAuthenticated()
|
||||||
{
|
{
|
||||||
self::$DI['app']['authentication']->closeAccount();
|
self::$DI['app']['authentication']->closeAccount();
|
||||||
self::$DI['client']->request('GET', '/datafiles/' . self::$DI['record_1']->get_sbas_id() . '/' . self::$DI['record_1']->get_record_id() . '/preview/');
|
self::$DI['client']->request('GET', '/datafiles/' . self::$DI['record_24']->get_sbas_id() . '/' . self::$DI['record_24']->get_record_id() . '/preview/');
|
||||||
|
|
||||||
$this->assertForbiddenResponse(self::$DI['client']->getResponse());
|
$this->assertForbiddenResponse(self::$DI['client']->getResponse());
|
||||||
}
|
}
|
||||||
@@ -64,7 +64,7 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
|
|||||||
public function testDatafilesRouteNotAuthenticatedUnknownSubdef()
|
public function testDatafilesRouteNotAuthenticatedUnknownSubdef()
|
||||||
{
|
{
|
||||||
self::$DI['app']['authentication']->closeAccount();
|
self::$DI['app']['authentication']->closeAccount();
|
||||||
self::$DI['client']->request('GET', '/datafiles/' . self::$DI['record_1']->get_sbas_id() . '/' . self::$DI['record_1']->get_record_id() . '/notfoundreview/');
|
self::$DI['client']->request('GET', '/datafiles/' . self::$DI['record_24']->get_sbas_id() . '/' . self::$DI['record_24']->get_record_id() . '/notfoundreview/');
|
||||||
|
|
||||||
$this->assertForbiddenResponse(self::$DI['client']->getResponse());
|
$this->assertForbiddenResponse(self::$DI['client']->getResponse());
|
||||||
}
|
}
|
||||||
@@ -105,7 +105,7 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
|
|||||||
{
|
{
|
||||||
$this->assertTrue(self::$DI['app']['authentication']->isAuthenticated());
|
$this->assertTrue(self::$DI['app']['authentication']->isAuthenticated());
|
||||||
$token = "unexisting_token";
|
$token = "unexisting_token";
|
||||||
$url = '/permalink/v1/' . self::$DI['record_1']->get_sbas_id() . "/" . self::$DI['record_1']->get_record_id() . '/caption/?token='.$token;
|
$url = '/permalink/v1/' . self::$DI['record_24']->get_sbas_id() . "/" . self::$DI['record_24']->get_record_id() . '/caption/?token='.$token;
|
||||||
|
|
||||||
$crawler = self::$DI['client']->request('GET', $url);
|
$crawler = self::$DI['client']->request('GET', $url);
|
||||||
$response = self::$DI['client']->getResponse();
|
$response = self::$DI['client']->getResponse();
|
||||||
@@ -158,8 +158,8 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
|
|||||||
|
|
||||||
protected function get_a_caption(array $headers = array())
|
protected function get_a_caption(array $headers = array())
|
||||||
{
|
{
|
||||||
$token = self::$DI['record_1']->get_thumbnail()->get_permalink()->get_token();
|
$token = self::$DI['record_24']->get_thumbnail()->get_permalink()->get_token();
|
||||||
$url = '/permalink/v1/' . self::$DI['record_1']->get_sbas_id() . "/" . self::$DI['record_1']->get_record_id() . '/caption/?token='.$token;
|
$url = '/permalink/v1/' . self::$DI['record_24']->get_sbas_id() . "/" . self::$DI['record_24']->get_record_id() . '/caption/?token='.$token;
|
||||||
|
|
||||||
$crawler = self::$DI['client']->request('GET', $url);
|
$crawler = self::$DI['client']->request('GET', $url);
|
||||||
$response = self::$DI['client']->getResponse();
|
$response = self::$DI['client']->getResponse();
|
||||||
@@ -168,15 +168,15 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
|
|||||||
$this->assertEquals($value, $response->headers->get($name));
|
$this->assertEquals($value, $response->headers->get($name));
|
||||||
}
|
}
|
||||||
|
|
||||||
$caption = self::$DI['record_1']->get_caption()->serialize(\caption_record::SERIALIZE_JSON);
|
$caption = self::$DI['record_24']->get_caption()->serialize(\caption_record::SERIALIZE_JSON);
|
||||||
$this->assertEquals($caption, $response->getContent());
|
$this->assertEquals($caption, $response->getContent());
|
||||||
$this->assertEquals(200, $response->getStatusCode());
|
$this->assertEquals(200, $response->getStatusCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function get_a_permalinkBCcompatibility(array $headers = array())
|
protected function get_a_permalinkBCcompatibility(array $headers = array())
|
||||||
{
|
{
|
||||||
$token = self::$DI['record_1']->get_preview()->get_permalink()->get_token();
|
$token = self::$DI['record_24']->get_preview()->get_permalink()->get_token();
|
||||||
$url = '/permalink/v1/whateverIwannt/' . self::$DI['record_1']->get_sbas_id() . '/' . self::$DI['record_1']->get_record_id() . '/' . $token . '/preview/';
|
$url = '/permalink/v1/whateverIwannt/' . self::$DI['record_24']->get_sbas_id() . '/' . self::$DI['record_24']->get_record_id() . '/' . $token . '/preview/';
|
||||||
|
|
||||||
$crawler = self::$DI['client']->request('GET', $url);
|
$crawler = self::$DI['client']->request('GET', $url);
|
||||||
$response = self::$DI['client']->getResponse();
|
$response = self::$DI['client']->getResponse();
|
||||||
@@ -191,8 +191,8 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
|
|||||||
|
|
||||||
protected function get_a_permaviewBCcompatibility(array $headers = array())
|
protected function get_a_permaviewBCcompatibility(array $headers = array())
|
||||||
{
|
{
|
||||||
$token = self::$DI['record_1']->get_preview()->get_permalink()->get_token();
|
$token = self::$DI['record_24']->get_preview()->get_permalink()->get_token();
|
||||||
$url = '/permalink/v1/whateverIwannt/' . self::$DI['record_1']->get_sbas_id() . '/' . self::$DI['record_1']->get_record_id() . '/' . $token . '/preview/';
|
$url = '/permalink/v1/whateverIwannt/' . self::$DI['record_24']->get_sbas_id() . '/' . self::$DI['record_24']->get_record_id() . '/' . $token . '/preview/';
|
||||||
|
|
||||||
$url = $url . 'view/';
|
$url = $url . 'view/';
|
||||||
$crawler = self::$DI['client']->request('GET', $url);
|
$crawler = self::$DI['client']->request('GET', $url);
|
||||||
@@ -207,8 +207,8 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
|
|||||||
|
|
||||||
protected function get_a_permalink(array $headers = array())
|
protected function get_a_permalink(array $headers = array())
|
||||||
{
|
{
|
||||||
$token = self::$DI['record_1']->get_preview()->get_permalink()->get_token();
|
$token = self::$DI['record_24']->get_preview()->get_permalink()->get_token();
|
||||||
$url = '/permalink/v1/' . self::$DI['record_1']->get_sbas_id() . '/' . self::$DI['record_1']->get_record_id() . '/preview/whateverIwannt.jpg?token=' . $token . '';
|
$url = '/permalink/v1/' . self::$DI['record_24']->get_sbas_id() . '/' . self::$DI['record_24']->get_record_id() . '/preview/whateverIwannt.jpg?token=' . $token . '';
|
||||||
|
|
||||||
$crawler = self::$DI['client']->request('GET', $url);
|
$crawler = self::$DI['client']->request('GET', $url);
|
||||||
$response = self::$DI['client']->getResponse();
|
$response = self::$DI['client']->getResponse();
|
||||||
@@ -217,14 +217,18 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
|
|||||||
$this->assertEquals($value, $response->headers->get($name));
|
$this->assertEquals($value, $response->headers->get($name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
$this->assertEquals(rtrim(self::$DI['app']['phraseanet.configuration']['main']['servername'], '/') . "/permalink/v1/1/". self::$DI['record_1']->get_record_id()."/caption/?token=".$token, $response->headers->get("Link"));
|
$this->assertEquals(rtrim(self::$DI['app']['phraseanet.configuration']['main']['servername'], '/') . "/permalink/v1/1/". self::$DI['record_1']->get_record_id()."/caption/?token=".$token, $response->headers->get("Link"));
|
||||||
|
=======
|
||||||
|
$this->assertEquals($response->headers->get("Link"), "/permalink/v1/1/". self::$DI['record_24']->get_record_id()."/caption/?token=".$token);
|
||||||
|
>>>>>>> Rebased, fixed minor bugs
|
||||||
$this->assertEquals(200, $response->getStatusCode());
|
$this->assertEquals(200, $response->getStatusCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function get_a_permaview(array $headers = array())
|
protected function get_a_permaview(array $headers = array())
|
||||||
{
|
{
|
||||||
$token = self::$DI['record_1']->get_preview()->get_permalink()->get_token();
|
$token = self::$DI['record_24']->get_preview()->get_permalink()->get_token();
|
||||||
$url = '/permalink/v1/' . self::$DI['record_1']->get_sbas_id() . '/' . self::$DI['record_1']->get_record_id() . '/preview/?token=' . $token . '';
|
$url = '/permalink/v1/' . self::$DI['record_24']->get_sbas_id() . '/' . self::$DI['record_24']->get_record_id() . '/preview/?token=' . $token . '';
|
||||||
|
|
||||||
$crawler = self::$DI['client']->request('GET', $url);
|
$crawler = self::$DI['client']->request('GET', $url);
|
||||||
$response = self::$DI['client']->getResponse();
|
$response = self::$DI['client']->getResponse();
|
||||||
|
@@ -13,12 +13,12 @@ class FeedServiceProviderTest extends ServiceProviderTestCase
|
|||||||
array(
|
array(
|
||||||
'Alchemy\Phrasea\Core\Provider\FeedServiceProvider',
|
'Alchemy\Phrasea\Core\Provider\FeedServiceProvider',
|
||||||
'feed.user-link-generator',
|
'feed.user-link-generator',
|
||||||
'Alchemy\Phrasea\Feed\LinkGenerator'
|
'Alchemy\Phrasea\Feed\Link\FeedLinkGenerator'
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'Alchemy\Phrasea\Core\Provider\FeedServiceProvider',
|
'Alchemy\Phrasea\Core\Provider\FeedServiceProvider',
|
||||||
'feed.aggregate-link-generator',
|
'feed.aggregate-link-generator',
|
||||||
'Alchemy\Phrasea\Feed\AggregateLinkGenerator'
|
'Alchemy\Phrasea\Feed\Link\AggregateLinkGenerator'
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@@ -1,194 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace Alchemy\Tests\Phrasea\Feed;
|
|
||||||
|
|
||||||
use Alchemy\Phrasea\Feed\LinkGenerator;
|
|
||||||
use Symfony\Component\Routing\Generator\UrlGenerator;
|
|
||||||
|
|
||||||
class LinkGeneratorTest extends \PhraseanetPHPUnitAbstract
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @dataProvider provideGenerationData
|
|
||||||
*/
|
|
||||||
public function testGenerate($expected, $format, $feed, $user, $page, $renew, $alreadyCreated)
|
|
||||||
{
|
|
||||||
self::$DI['app']['EM']->persist($feed);
|
|
||||||
self::$DI['app']['EM']->flush();
|
|
||||||
|
|
||||||
$generator = $this->getMockBuilder('Symfony\Component\Routing\Generator\UrlGenerator')
|
|
||||||
->disableOriginalConstructor()
|
|
||||||
->getMock();
|
|
||||||
|
|
||||||
if ($alreadyCreated) {
|
|
||||||
$token = $this->insertOneFeedToken($feed, $user);
|
|
||||||
$tokenValue = $token->getValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
$capture = null;
|
|
||||||
$generator->expects($this->once())
|
|
||||||
->method('generate')
|
|
||||||
->with('feed_user', $this->isType('array'), UrlGenerator::ABSOLUTE_URL)
|
|
||||||
->will($this->returnCallback(function ($name, $data, $option) use (&$capture, $expected) {
|
|
||||||
$capture = $data;
|
|
||||||
|
|
||||||
return $expected;
|
|
||||||
}));
|
|
||||||
|
|
||||||
$random = self::$DI['app']['tokens'];
|
|
||||||
|
|
||||||
$linkGenerator = new LinkGenerator($generator, self::$DI['app']['EM'], $random);
|
|
||||||
|
|
||||||
$link = $linkGenerator->generate($feed, $user, $format, $page, $renew);
|
|
||||||
|
|
||||||
$this->assertSame($expected, $link->getUri());
|
|
||||||
if ($format == "atom") {
|
|
||||||
$this->assertSame("application/atom+xml", $link->getMimetype());
|
|
||||||
$this->assertSame("Title - Atom", $link->getTitle());
|
|
||||||
}
|
|
||||||
elseif ($format == "rss") {
|
|
||||||
$this->assertSame("application/rss+xml", $link->getMimetype());
|
|
||||||
$this->assertSame("Title - RSS", $link->getTitle());
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($alreadyCreated) {
|
|
||||||
if ($renew) {
|
|
||||||
$this->assertEquals($feed->getId(), $capture['id']);
|
|
||||||
$this->assertEquals($format, $capture['format']);
|
|
||||||
$this->assertNotEquals($tokenValue, $capture['token']);
|
|
||||||
if (null !== $page) {
|
|
||||||
$this->assertEquals($page, $capture['page']);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->assertCount(0, self::$DI['app']['EM']
|
|
||||||
->getRepository("Entities\FeedToken")
|
|
||||||
->findBy(array('value' => $tokenValue)));
|
|
||||||
$this->assertCount(1, self::$DI['app']['EM']
|
|
||||||
->getRepository("Entities\FeedToken")
|
|
||||||
->findBy(array('value' => $capture['token'])));
|
|
||||||
} else {
|
|
||||||
$expectedParams = array(
|
|
||||||
'token' => $tokenValue,
|
|
||||||
'id' => $feed->getId(),
|
|
||||||
'format' => $format,
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($page !== null) {
|
|
||||||
$expectedParams['page'] = $page;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->assertEquals($expectedParams, $capture);
|
|
||||||
|
|
||||||
$this->assertCount(1, self::$DI['app']['EM']
|
|
||||||
->getRepository("Entities\FeedToken")
|
|
||||||
->findBy(array('value' => $tokenValue)));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (null !== $page) {
|
|
||||||
$this->assertEquals($page, $capture['page']);
|
|
||||||
}
|
|
||||||
$this->assertEquals($feed->getId(), $capture['id']);
|
|
||||||
$this->assertEquals($format, $capture['format']);
|
|
||||||
$this->assertEquals(12, strlen($capture['token']));
|
|
||||||
|
|
||||||
$this->assertCount(1, self::$DI['app']['EM']
|
|
||||||
->getRepository("Entities\FeedToken")
|
|
||||||
->findBy(array('value' => $capture['token'])));
|
|
||||||
}
|
|
||||||
$token = self::$DI['app']['EM']
|
|
||||||
->getRepository('Entities\FeedToken')
|
|
||||||
->findByFeedAndUser($feed, $user);
|
|
||||||
self::$DI['app']['EM']->remove($token);
|
|
||||||
self::$DI['app']['EM']->flush();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider provideGenerationDataPublic
|
|
||||||
*/
|
|
||||||
public function testGeneratePublic($expected, $format, $feed, $page)
|
|
||||||
{
|
|
||||||
self::$DI['app']['EM']->persist($feed);
|
|
||||||
self::$DI['app']['EM']->flush();
|
|
||||||
|
|
||||||
$generator = $this->getMockBuilder('Symfony\Component\Routing\Generator\UrlGenerator')
|
|
||||||
->disableOriginalConstructor()
|
|
||||||
->getMock();
|
|
||||||
|
|
||||||
$capture = null;
|
|
||||||
$generator->expects($this->once())
|
|
||||||
->method('generate')
|
|
||||||
->with('feed_public', $this->isType('array'), UrlGenerator::ABSOLUTE_URL)
|
|
||||||
->will($this->returnCallback(function ($name, $data, $option) use (&$capture, $expected) {
|
|
||||||
$capture = $data;
|
|
||||||
|
|
||||||
return $expected;
|
|
||||||
}));
|
|
||||||
|
|
||||||
$random = self::$DI['app']['tokens'];
|
|
||||||
|
|
||||||
$linkGenerator = new LinkGenerator($generator, self::$DI['app']['EM'], $random);
|
|
||||||
|
|
||||||
$link = $linkGenerator->generatePublic($feed, $format, $page);
|
|
||||||
|
|
||||||
$this->assertSame($expected, $link->getUri());
|
|
||||||
if ($format == "atom") {
|
|
||||||
$this->assertSame("application/atom+xml", $link->getMimetype());
|
|
||||||
$this->assertSame("Title - Atom", $link->getTitle());
|
|
||||||
}
|
|
||||||
elseif ($format == "rss") {
|
|
||||||
$this->assertSame("application/rss+xml", $link->getMimetype());
|
|
||||||
$this->assertSame("Title - RSS", $link->getTitle());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (null !== $page) {
|
|
||||||
$this->assertEquals($page, $capture['page']);
|
|
||||||
}
|
|
||||||
$this->assertEquals($feed->getId(), $capture['id']);
|
|
||||||
$this->assertEquals($format, $capture['format']);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function provideGenerationData()
|
|
||||||
{
|
|
||||||
$user = $this->getMockBuilder('User_Adapter')
|
|
||||||
->disableOriginalConstructor()
|
|
||||||
->getMock();
|
|
||||||
|
|
||||||
$user->expects($this->any())
|
|
||||||
->method('get_id')
|
|
||||||
->will($this->returnValue(42));
|
|
||||||
|
|
||||||
$feed = new \Entities\Feed();
|
|
||||||
$feed->setTitle('Title');
|
|
||||||
|
|
||||||
return array(
|
|
||||||
array('doliprane', 'atom', $feed, $user, null, false, false),
|
|
||||||
array('doliprane', 'atom', $feed, $user, null, false, true),
|
|
||||||
array('doliprane', 'atom', $feed, $user, null, true, false),
|
|
||||||
array('doliprane', 'atom', $feed, $user, null, true, true),
|
|
||||||
array('doliprane', 'atom', $feed, $user, 1, false, false),
|
|
||||||
array('doliprane', 'atom', $feed, $user, 1, false, true),
|
|
||||||
array('doliprane', 'atom', $feed, $user, 1, true, false),
|
|
||||||
array('doliprane', 'atom', $feed, $user, 1, true, true),
|
|
||||||
array('doliprane', 'rss', $feed, $user, null, false, false),
|
|
||||||
array('doliprane', 'rss', $feed, $user, null, false, true),
|
|
||||||
array('doliprane', 'rss', $feed, $user, null, true, false),
|
|
||||||
array('doliprane', 'rss', $feed, $user, null, true, true),
|
|
||||||
array('doliprane', 'rss', $feed, $user, 1, false, false),
|
|
||||||
array('doliprane', 'rss', $feed, $user, 1, false, true),
|
|
||||||
array('doliprane', 'rss', $feed, $user, 1, true, false),
|
|
||||||
array('doliprane', 'rss', $feed, $user, 1, true, true),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function provideGenerationDataPublic()
|
|
||||||
{
|
|
||||||
$feed = new \Entities\Feed();
|
|
||||||
$feed->setTitle('Title');
|
|
||||||
|
|
||||||
return array(
|
|
||||||
array('doliprane', 'atom', $feed, null),
|
|
||||||
array('doliprane', 'atom', $feed, 1),
|
|
||||||
array('doliprane', 'rss', $feed, null),
|
|
||||||
array('doliprane', 'rss', $feed, 1)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
Reference in New Issue
Block a user