mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-24 10:23:17 +00:00
Implement RSSFeeds, fixed controllers implementation, fixed tests
This commit is contained in:
@@ -12,7 +12,8 @@
|
||||
namespace Alchemy\Phrasea\Controller\Admin;
|
||||
|
||||
use Alchemy\Phrasea\Application as PhraseaApplication;
|
||||
use Repositories;
|
||||
use Entities\Feed;
|
||||
use Entities\FeedPublisher;
|
||||
use Silex\Application;
|
||||
use Silex\ControllerProviderInterface;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
@@ -47,9 +48,9 @@ class Publications implements ControllerProviderInterface
|
||||
|
||||
$controllers->post('/create/', function(PhraseaApplication $app, Request $request) {
|
||||
|
||||
$publisher = new \Entities\FeedPublisher($app['authentication']->getUser(), true);
|
||||
$publisher = new FeedPublisher($app['authentication']->getUser(), true);
|
||||
|
||||
$feed = new \Entities\Feed($publisher, $request->request->get('title'), $request->request->get('subtitle'));
|
||||
$feed = new Feed($publisher, $request->request->get('title'), $request->request->get('subtitle'));
|
||||
|
||||
if ($request->request->get('public') == '1') {
|
||||
$feed->setPublic(true);
|
||||
@@ -178,7 +179,7 @@ class Publications implements ControllerProviderInterface
|
||||
$user = \User_Adapter::getInstance($request->request->get('usr_id'), $app);
|
||||
$feed = $app["EM"]->getRepository("Entities\Feed")->find($id);
|
||||
|
||||
$publisher = new \Entities\FeedPublisher($user, false);
|
||||
$publisher = new FeedPublisher($user, false);
|
||||
$publisher->setFeed($feed);
|
||||
|
||||
$feed->addPublisher($publisher);
|
||||
|
||||
@@ -539,7 +539,8 @@ class Root implements ControllerProviderInterface
|
||||
private function getPublicationStartPage(Application $app)
|
||||
{
|
||||
return $app['twig']->render('client/home_inter_pub_basket.html.twig', array(
|
||||
'feeds' => \Feed_Collection::load_all($app, $app['authentication']->getUser()),
|
||||
// 'feeds' => \Feed_Collection::load_all($app, $app['authentication']->getUser()),
|
||||
'feeds' => $app['EM']->getRepository('Entities\Feed')->getAllforUser($app['authentication']->getUser()),
|
||||
'image_size' => (int) $app['authentication']->getUser()->getPrefs('images_size')
|
||||
));
|
||||
}
|
||||
|
||||
@@ -160,13 +160,15 @@ class Lightbox implements ControllerProviderInterface
|
||||
|
||||
$controllers->get('/ajax/LOAD_FEED_ITEM/{entry_id}/{item_id}/', function(SilexApplication $app, $entry_id, $item_id) {
|
||||
|
||||
$entry = \Feed_Entry_Adapter::load_from_id($app, $entry_id);
|
||||
$item = new \Feed_Entry_Item($app['phraseanet.appbox'], $entry, $item_id);
|
||||
// $entry = \Feed_Entry_Adapter::load_from_id($app, $entry_id);
|
||||
$entry = $app['EM']->getRepository("Entities\FeedEntry")->find($entry_id);
|
||||
// $item = new \Feed_Entry_Item($app['phraseanet.appbox'], $entry, $item_id);
|
||||
$item = $entry->getItems()->getItem($item_id);
|
||||
|
||||
if ($app['browser']->isMobile()) {
|
||||
$output = $app['twig']->render('lightbox/feed_element.html.twig', array(
|
||||
'feed_element' => $item,
|
||||
'module_name' => $item->get_record()->get_title()
|
||||
'module_name' => $item->getRecord()->get_title()
|
||||
)
|
||||
);
|
||||
|
||||
@@ -313,7 +315,8 @@ class Lightbox implements ControllerProviderInterface
|
||||
return $app->redirectPath('logout');
|
||||
}
|
||||
|
||||
$feed_entry = \Feed_Entry_Adapter::load_from_id($app, $entry_id);
|
||||
// $feed_entry = \Feed_Entry_Adapter::load_from_id($app, $entry_id);
|
||||
$feed_entry = $app['EM']->getEntity("Entities\FeedEntry")->find($entry_id);
|
||||
|
||||
$template = 'lightbox/feed.html.twig';
|
||||
|
||||
@@ -321,12 +324,12 @@ class Lightbox implements ControllerProviderInterface
|
||||
$template = 'lightbox/IE6/feed.html.twig';
|
||||
}
|
||||
|
||||
$content = $feed_entry->get_content();
|
||||
$content = $feed_entry->getItems();
|
||||
|
||||
$output = $app['twig']->render($template, array(
|
||||
'feed_entry' => $feed_entry,
|
||||
'first_item' => array_shift($content),
|
||||
'local_title' => $feed_entry->get_title(),
|
||||
'local_title' => $feed_entry->getTitle(),
|
||||
'module' => 'lightbox',
|
||||
'module_name' => _('admin::monitor: module validation')
|
||||
)
|
||||
|
||||
@@ -15,6 +15,8 @@ use Alchemy\Phrasea\Feed\Aggregate;
|
||||
use Alchemy\Phrasea\Feed\AggregateLinkGenerator;
|
||||
use Alchemy\Phrasea\Controller\RecordsRequest;
|
||||
use Alchemy\Phrasea\Feed\LinkGenerator;
|
||||
use Entities\FeedEntry;
|
||||
use Entities\FeedItem;
|
||||
use Silex\Application;
|
||||
use Silex\ControllerProviderInterface;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
@@ -60,7 +62,7 @@ class Feed implements ControllerProviderInterface
|
||||
$author_name = $request->request->get('author_name');
|
||||
$author_email = $request->request->get('author_email');
|
||||
|
||||
$entry = new \Entities\FeedEntry();
|
||||
$entry = new FeedEntry();
|
||||
$entry->setFeed($feed);
|
||||
$entry->setPublisher($publisher);
|
||||
$entry->setTitle($title);
|
||||
@@ -72,7 +74,7 @@ class Feed implements ControllerProviderInterface
|
||||
|
||||
$publishing = RecordsRequest::fromRequest($app, $request, true, array(), array('bas_chupub'));
|
||||
foreach ($publishing as $record) {
|
||||
$item = new \Entities\FeedItem();
|
||||
$item = new FeedItem();
|
||||
$item->setEntry($entry);
|
||||
$item->setRecordId($record->get_record_id());
|
||||
$item->setSbasId($record->get_sbas_id());
|
||||
@@ -166,7 +168,7 @@ class Feed implements ControllerProviderInterface
|
||||
continue;
|
||||
}
|
||||
|
||||
$item = new \entities\FeedItem($entry, $item_sort_datas[0]);
|
||||
$item = new FeedItem($entry, $item_sort_datas[0]);
|
||||
$item->setEntry($entry);
|
||||
$entry->addItem($item);
|
||||
$item->setOrd($item_sort_datas[1]);
|
||||
@@ -262,11 +264,9 @@ class Feed implements ControllerProviderInterface
|
||||
|
||||
$feeds = $app["EM"]->getRepository("Entities\Feed")->findAll();
|
||||
|
||||
$aggregateGenerator = new AggregateLinkGenerator($app['url_generator'], $app['EM'], $app['tokens']);
|
||||
|
||||
$aggregate = new Aggregate($app, $feeds);
|
||||
|
||||
$link = $aggregateGenerator->generate($aggregate, $app['authentication']->getUser(), AggregateLinkGenerator::FORMAT_RSS, null, $renew);
|
||||
$link = $app['feed.aggregate-link-generator']->generate($aggregate, $app['authentication']->getUser(), AggregateLinkGenerator::FORMAT_RSS, null, $renew);
|
||||
|
||||
$output = array(
|
||||
'texte' => '<p>' . _('publication::Voici votre fil RSS personnel. Il vous permettra d\'etre tenu au courrant des publications.')
|
||||
@@ -283,9 +283,7 @@ class Feed implements ControllerProviderInterface
|
||||
|
||||
$feed = $app["EM"]->getRepository("Entities\Feed")->loadWithUser($app, $app['authentication']->getUser(), $id);
|
||||
|
||||
$linkGenerator = new LinkGenerator($app['url_generator'], $app['EM'], $app['tokens']);
|
||||
|
||||
$link = $linkGenerator->generate($feed, $app['authentication']->getUser(), LinkGenerator::FORMAT_RSS, null, $renew);
|
||||
$link = $app['feed.user-link-generator']->generate($feed, $app['authentication']->getUser(), LinkGenerator::FORMAT_RSS, null, $renew);
|
||||
|
||||
$output = array(
|
||||
'texte' => '<p>' . _('publication::Voici votre fil RSS personnel. Il vous permettra d\'etre tenu au courrant des publications.')
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
namespace Alchemy\Phrasea\Controller\Prod;
|
||||
|
||||
use \Alchemy\Phrasea\Feed\Aggregate;
|
||||
use Alchemy\Phrasea\Feed\Aggregate;
|
||||
use Alchemy\Phrasea\Application;
|
||||
use Alchemy\Phrasea\Exception\SessionNotFound;
|
||||
use Silex\Application as SilexApplication;
|
||||
@@ -75,8 +75,8 @@ class Root implements ControllerProviderInterface
|
||||
|
||||
// $user_feeds = \Feed_Collection::load_all($app, $app['authentication']->getUser());
|
||||
// $feeds = array_merge(array($user_feeds->get_aggregate()), $user_feeds->get_feeds());
|
||||
$user_feeds = $app["EM"]->getRepository("Entities\Feed")->getAllForUser($app['authentication']->getUser());
|
||||
$aggregate = new Aggregate($app, $user_feeds);
|
||||
$feeds = $app["EM"]->getRepository("Entities\Feed")->getAllForUser($app['authentication']->getUser());
|
||||
// $aggregate = new Aggregate($app, $user_feeds);
|
||||
|
||||
$thjslist = "";
|
||||
|
||||
@@ -118,7 +118,7 @@ class Root implements ControllerProviderInterface
|
||||
'GV_thesaurus' => $app['phraseanet.registry']->get('GV_thesaurus'),
|
||||
'cgus_agreement' => \databox_cgu::askAgreement($app),
|
||||
'css' => $css,
|
||||
'aggregate' => $aggregate,
|
||||
'feeds' => $feeds,
|
||||
'GV_google_api' => $app['phraseanet.registry']->get('GV_google_api'),
|
||||
'queries_topics' => $queries_topics,
|
||||
'search_status' => \databox_status::getSearchStatus($app),
|
||||
|
||||
@@ -725,10 +725,7 @@ class Login implements ControllerProviderInterface
|
||||
$app->addFlash('error', _('login::erreur: No available connection - Please contact sys-admin'));
|
||||
}
|
||||
|
||||
$public_feeds = \Feed_Collection::load_public_feeds($app);
|
||||
|
||||
$feeds = $public_feeds->get_feeds();
|
||||
array_unshift($feeds, $public_feeds->get_aggregate());
|
||||
$feeds = $app['EM']->getRepository('Entities\Feed')->findAllPublic();
|
||||
|
||||
$form = $app->form(new PhraseaAuthenticationForm());
|
||||
$form->setData(array(
|
||||
|
||||
@@ -32,15 +32,15 @@ class RSSFeeds implements ControllerProviderInterface
|
||||
$perPage = 5;
|
||||
$entries = $feed->getEntries((($page - 1) * $perPage), $perPage);
|
||||
|
||||
if ($format == \Entities\Feed::FORMAT_RSS) {
|
||||
if ($format == 'rss') {
|
||||
$content = new \Feed_XML_RSS();
|
||||
}
|
||||
|
||||
if ($format == \Entities\Feed::FORMAT_ATOM) {
|
||||
if ($format == 'atom') {
|
||||
$content = new \Feed_XML_Atom();
|
||||
}
|
||||
|
||||
if ($format == \Entities\Feed::FORMAT_COOLIRIS) {
|
||||
if ($format == 'cooliris') {
|
||||
$content = new \Feed_XML_Cooliris();
|
||||
}
|
||||
|
||||
@@ -77,7 +77,6 @@ class RSSFeeds implements ControllerProviderInterface
|
||||
};
|
||||
|
||||
$controllers->get('/feed/{id}/{format}/', function(Application $app, $id, $format) use ($display_feed) {
|
||||
// $feed = new \Feed_Adapter($app, $id);
|
||||
$feed = $app["EM"]->getRepository("Entities\Feed")->find($id);
|
||||
|
||||
if (!$feed->isPublic()) {
|
||||
@@ -112,7 +111,6 @@ class RSSFeeds implements ControllerProviderInterface
|
||||
|
||||
$controllers->get('/userfeed/aggregated/{token}/{format}/', function(Application $app, $token, $format) use ($display_feed) {
|
||||
$token = $app["EM"]->getRepository("Entities\AggregateToken")->findBy(array("id" => $id));
|
||||
//$feed = $token->getFeed();
|
||||
|
||||
$request = $app['request'];
|
||||
|
||||
@@ -125,8 +123,6 @@ class RSSFeeds implements ControllerProviderInterface
|
||||
->assert('format', '(rss|atom)');
|
||||
|
||||
$controllers->get('/aggregated/{format}/', function(Application $app, $format) use ($display_feed) {
|
||||
//$feeds = \Feed_Collection::load_public_feeds($app);
|
||||
//$feed = $feeds->get_aggregate();
|
||||
$feeds = $app["EM"]->getRepository("Entities\Feed")->findAllPublic();
|
||||
$feed = new Aggregate($app, $feeds);
|
||||
|
||||
@@ -140,8 +136,6 @@ class RSSFeeds implements ControllerProviderInterface
|
||||
->assert('format', '(rss|atom)');
|
||||
|
||||
$controllers->get('/cooliris/', function(Application $app) use ($display_feed) {
|
||||
// $feeds = \Feed_Collection::load_public_feeds($app);
|
||||
// $feed = $feeds->get_aggregate();
|
||||
$feeds = $app["EM"]->getRepository("Entities\Feed")->findAllPublic();
|
||||
$feed = new Aggregate($app, $feeds);
|
||||
|
||||
@@ -149,7 +143,7 @@ class RSSFeeds implements ControllerProviderInterface
|
||||
$page = (int) $request->query->get('page');
|
||||
$page = $page < 1 ? 1 : $page;
|
||||
|
||||
return $display_feed($app, $feed, \Feed_Adapter::FORMAT_COOLIRIS, $page);
|
||||
return $display_feed($app, $feed, 'cooliris', $page);
|
||||
})
|
||||
->bind('feed_public_cooliris');
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ class FeedServiceProvider implements ServiceProviderInterface
|
||||
$app['feed.user-link-generator'] = $app->share(function($app) {
|
||||
return new LinkGenerator($app['url_generator'], $app['EM'], $app['tokens']);
|
||||
});
|
||||
$app['feed.aggreagate-link-generator'] = $app->share(function($app) {
|
||||
$app['feed.aggregate-link-generator'] = $app->share(function($app) {
|
||||
return new AggregateLinkGenerator($app['url_generator'], $app['EM'], $app['tokens']);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -28,21 +28,55 @@ class AggregateLinkGenerator
|
||||
{
|
||||
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', array(
|
||||
'token' => $this->getAggregateToken($user, $renew)->getValue(),
|
||||
'format' => 'atom',
|
||||
), UrlGenerator::ABSOLUTE_URL),
|
||||
$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', array(
|
||||
'token' => $this->getAggregateToken($user, $renew)->getValue(),
|
||||
'format' => 'rss',
|
||||
), UrlGenerator::ABSOLUTE_URL),
|
||||
$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'
|
||||
);
|
||||
|
||||
@@ -28,23 +28,59 @@ class LinkGenerator
|
||||
{
|
||||
switch ($format) {
|
||||
case self::FORMAT_ATOM:
|
||||
return new FeedLink(
|
||||
$this->generator->generate('feed_user', array(
|
||||
'token' => $this->getFeedToken($feed, $user, $renew)->getValue(),
|
||||
$params = array('token' => $this->getFeedToken($feed, $user, $renew)->getValue(),
|
||||
'id' => $feed->getId(),
|
||||
'format' => 'atom',
|
||||
), UrlGenerator::ABSOLUTE_URL),
|
||||
'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:
|
||||
return new FeedLink(
|
||||
$this->generator->generate('feed_user', array(
|
||||
'token' => $this->getFeedToken($feed, $user, $renew)->getValue(),
|
||||
$params = array('token' => $this->getFeedToken($feed, $user, $renew)->getValue(),
|
||||
'id' => $feed->getId(),
|
||||
'format' => 'rss',
|
||||
), UrlGenerator::ABSOLUTE_URL),
|
||||
'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'
|
||||
);
|
||||
|
||||
@@ -424,4 +424,27 @@ class Feed implements FeedInterface
|
||||
{
|
||||
return $this->tokens;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add entries
|
||||
*
|
||||
* @param \Entities\FeedEntry $entries
|
||||
* @return Feed
|
||||
*/
|
||||
public function addEntrie(\Entities\FeedEntry $entries)
|
||||
{
|
||||
$this->entries[] = $entries;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove entries
|
||||
*
|
||||
* @param \Entities\FeedEntry $entries
|
||||
*/
|
||||
public function removeEntrie(\Entities\FeedEntry $entries)
|
||||
{
|
||||
$this->entries->removeElement($entries);
|
||||
}
|
||||
}
|
||||
@@ -303,4 +303,15 @@ class FeedEntry
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getItem($id)
|
||||
{
|
||||
foreach ($this->items as $item) {
|
||||
if ($item->getId() == $id) {
|
||||
return ($item);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -118,7 +118,7 @@ class FeedItem
|
||||
return $this->entry;
|
||||
}
|
||||
/**
|
||||
* @var int
|
||||
* @var integer
|
||||
*/
|
||||
private $ord;
|
||||
|
||||
@@ -126,10 +126,10 @@ class FeedItem
|
||||
/**
|
||||
* Set ord
|
||||
*
|
||||
* @param \int $ord
|
||||
* @param integer $ord
|
||||
* @return FeedItem
|
||||
*/
|
||||
public function setOrd(\int $ord)
|
||||
public function setOrd($ord)
|
||||
{
|
||||
$this->ord = $ord;
|
||||
|
||||
@@ -139,7 +139,7 @@ class FeedItem
|
||||
/**
|
||||
* Get ord
|
||||
*
|
||||
* @return \int
|
||||
* @return integer
|
||||
*/
|
||||
public function getOrd()
|
||||
{
|
||||
@@ -191,4 +191,9 @@ class FeedItem
|
||||
{
|
||||
return $this->updated_on;
|
||||
}
|
||||
|
||||
public function setLastInFeedItem()
|
||||
{
|
||||
$this->setOrd($this->getEntry()->getItems()->count() + 1);
|
||||
}
|
||||
}
|
||||
@@ -45,7 +45,7 @@ class eventsmanager_notify_feed extends eventsmanager_notifyAbstract
|
||||
public function fire($event, $params, &$entry)
|
||||
{
|
||||
$params = array(
|
||||
'entry_id' => $entry->get_id()
|
||||
'entry_id' => $entry->getId()
|
||||
);
|
||||
|
||||
$dom_xml = new DOMDocument('1.0', 'UTF-8');
|
||||
@@ -72,13 +72,18 @@ class eventsmanager_notify_feed extends eventsmanager_notifyAbstract
|
||||
->include_templates(false)
|
||||
->email_not_null(true);
|
||||
|
||||
if ($entry->get_feed()->get_collection()) {
|
||||
$Query->on_base_ids(array($entry->get_feed()->get_collection()->get_base_id()));
|
||||
if ($entry->getFeed()->getCollection($this->app)) {
|
||||
$Query->on_base_ids(array($entry->getFeed()->getCollection($this->app)->get_base_id()));
|
||||
}
|
||||
|
||||
$start = 0;
|
||||
$perLoop = 100;
|
||||
|
||||
$from = array(
|
||||
'email' => $entry->getAuthorEmail(),
|
||||
'name' => $entry->getAuthorName()
|
||||
);
|
||||
|
||||
do {
|
||||
$results = $Query->limit($start, $perLoop)->execute()->get_results();
|
||||
|
||||
@@ -93,7 +98,7 @@ class eventsmanager_notify_feed extends eventsmanager_notifyAbstract
|
||||
\random::TYPE_FEED_ENTRY
|
||||
, $user_to_notif->get_id()
|
||||
, null
|
||||
, $entry->get_id()
|
||||
, $entry->getId()
|
||||
);
|
||||
|
||||
$url = $this->app->url('lightbox', array('LOG' => $token));
|
||||
@@ -107,8 +112,8 @@ class eventsmanager_notify_feed extends eventsmanager_notifyAbstract
|
||||
if ($readyToSend) {
|
||||
$mail = MailInfoNewPublication::create($this->app, $receiver);
|
||||
$mail->setButtonUrl($url);
|
||||
$mail->setAuthor($entry->get_author_name());
|
||||
$mail->setTitle($entry->get_title());
|
||||
$mail->setAuthor($entry->getAuthorName());
|
||||
$mail->setTitle($entry->getTitle());
|
||||
|
||||
$this->app['notification.deliverer']->deliver($mail);
|
||||
$mailed = true;
|
||||
@@ -116,6 +121,7 @@ class eventsmanager_notify_feed extends eventsmanager_notifyAbstract
|
||||
}
|
||||
|
||||
$this->broker->notify($user_to_notif->get_id(), __CLASS__, $datas, $mailed);
|
||||
|
||||
}
|
||||
$start += $perLoop;
|
||||
} while (count($results) > 0);
|
||||
@@ -134,16 +140,20 @@ class eventsmanager_notify_feed extends eventsmanager_notifyAbstract
|
||||
$sx = simplexml_load_string($datas);
|
||||
|
||||
try {
|
||||
$entry = \Feed_Entry_Adapter::load_from_id($this->app, (int) $sx->entry_id);
|
||||
$entry = $this->app['EM']->getRepository("Entities\FeedEntry")->find((int) $sx->entry_id);
|
||||
} catch (\Exception $e) {
|
||||
return array();
|
||||
}
|
||||
|
||||
if (null === $entry) {
|
||||
return array();
|
||||
}
|
||||
|
||||
$ret = array(
|
||||
'text' => sprintf(
|
||||
_('%1$s has published %2$s')
|
||||
, $entry->get_author_name()
|
||||
, '<a href="/lightbox/feeds/entry/' . $entry->get_id() . '/" target="_blank">' . $entry->get_title() . '</a>'
|
||||
, $entry->getAuthorName()
|
||||
, '<a href="/lightbox/feeds/entry/' . $entry->getId() . '/" target="_blank">' . $entry->getTitle() . '</a>'
|
||||
)
|
||||
, 'class' => ($unread == 1 ? 'reload_baskets' : '')
|
||||
);
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
<div class="display_id">{% if first_item %}{{first_item.get_ord()}}{% endif %}</div>
|
||||
</td>
|
||||
<td style="text-align:left;width:auto;">
|
||||
<div class="title title15" title="{% if first_item %}{{first_item.get_record().get_title|e}}{% endif %}">
|
||||
{% if first_item %}{{first_item.get_record().get_title|raw}}{% endif %}
|
||||
<div class="title title15" title="{% if first_item %}{{first_item.getRecord().getTitle|e}}{% endif %}">
|
||||
{% if first_item %}{{first_item.get_record().getTitle|raw}}{% endif %}
|
||||
</div>
|
||||
</td>
|
||||
<td style="text-align:right;width:230px;">
|
||||
@@ -43,9 +43,9 @@
|
||||
<div class="lightbox_container PNB record_display_box">
|
||||
{% if first_item %}
|
||||
{% if app['authentication'].getUser().ACL().has_access_to_subdef(first_item.get_record(), 'preview') %}
|
||||
{% set bask_prev = first_item.get_record().get_preview() %}
|
||||
{% set bask_prev = first_item.getRecord().get_preview() %}
|
||||
{% else %}
|
||||
{% set bask_prev = first_item.get_record().get_thumbnail() %}
|
||||
{% set bask_prev = first_item.getRecord().get_thumbnail() %}
|
||||
{% endif %}
|
||||
{{thumbnail.format(bask_prev,bask_prev.get_width(),bask_prev.get_height(),'', false, false)}}
|
||||
{% endif %}
|
||||
@@ -60,8 +60,8 @@
|
||||
<div class="display_id"></div>
|
||||
</td>
|
||||
<td style="text-align:left;width:auto;">
|
||||
<div class="title title15" title="{% if first_item %}{{first_item.get_record().get_title|e}}{% endif %}">
|
||||
{% if first_item %}{{first_item.get_record().get_title}}{% endif %}
|
||||
<div class="title title15" title="{% if first_item %}{{first_item.getRecord().get_title|e}}{% endif %}">
|
||||
{% if first_item %}{{first_item.getRecord().get_title}}{% endif %}
|
||||
</div>
|
||||
</td>
|
||||
<td style="text-align:right;width:230px;">
|
||||
@@ -83,7 +83,7 @@
|
||||
<div class="lightbox_container PNB">
|
||||
{% set business = app['authentication'].getUser().ACL().has_right_on_base(first_item.get_record().get_base_id(), 'canmodifrecord') %}
|
||||
{% if first_item %}
|
||||
{{caption.format_caption(first_item.get_record(), '', null, business)}}
|
||||
{{caption.format_caption(first_item.getRecord(), '', null, business)}}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
<div id="sc_container">
|
||||
{% for element in feed_entry.get_content() %}
|
||||
<div class="basket_element_wrapper">
|
||||
<a href="{{ path('lightbox_ajax_load_feeditem', { 'entry_id' : feed_entry.get_id(), 'item_id' : element.get_id()}) }}">
|
||||
<div id="scid_{{element.get_id()}}" class="basket_element ui-corner-all {% if first_item and first_item.get_id() == element.get_id() %}selected{% endif %}">
|
||||
<div class="display_id">{{element.get_ord()}}</div>
|
||||
{{thumbnail.format(element.get_record().get_thumbnail() ,114,85, '', true, false)}}
|
||||
<a href="{{ path('lightbox_ajax_load_feeditem', { 'entry_id' : feed_entry.getId(), 'item_id' : element.getId()}) }}">
|
||||
<div id="scid_{{element.getId()}}" class="basket_element ui-corner-all {% if first_item and first_item.getId() == element.getId() %}selected{% endif %}">
|
||||
<div class="display_id">{{element.getOrd()}}</div>
|
||||
{{thumbnail.format(element.getRecord().get_thumbnail() ,114,85, '', true, false)}}
|
||||
<form name="download_form" class="download_form" style="display:none;">
|
||||
<input type="hidden" name="basrec" value="{{element.get_record().get_serialize_key()}}"/>
|
||||
<input type="hidden" name="basrec" value="{{element.getRecord().get_serialize_key()}}"/>
|
||||
</form>
|
||||
<div tooltipsrc="{{ path('prod_tooltip_preview', { 'sbas_id' : element.get_record().get_sbas_id(), 'record_id' : element.get_record().get_record_id() }) }}" class="previewTips"></div>
|
||||
<div tooltipsrc="{{ path('prod_tooltip_preview', { 'sbas_id' : element.getRecord().get_sbas_id(), 'record_id' : element.getRecord().get_record_id() }) }}" class="previewTips"></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<i class="icon-download icon-white"></i>
|
||||
</button>
|
||||
<form name="download_form" style="display:none;">
|
||||
<input type="hidden" name="basrec" value="{{feed_element.get_record().get_serialize_key()}}"/>
|
||||
<input type="hidden" name="basrec" value="{{feed_element.getRecord().get_serialize_key()}}"/>
|
||||
</form>
|
||||
|
|
||||
{% endif %}
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
|
||||
{% block header_rss %}
|
||||
{% for feed in feeds %}
|
||||
{% set link = feed.get_homepage_link(app['phraseanet.registry'], 'rss') %}
|
||||
{% set link = app['feed.user-link-generator'].generatePublic(feed, 'rss') %}
|
||||
<link rel="alternate" type="{{ link.get_mimetype() }}" title="{{ link.get_title() }}" href="{{ link.get_href() }}" />
|
||||
{% set link = feed.get_homepage_link(app['phraseanet.registry'], 'atom') %}
|
||||
{% set link = app['feed.user-link-generator'].generatePublic(feed, 'atom') %}
|
||||
<link rel="alternate" type="{{ link.get_mimetype() }}" title="{{ link.get_title() }}" href="{{ link.get_href() }}" />
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
||||
@@ -16,46 +16,46 @@
|
||||
</style>
|
||||
<div class="PNB" style="height:200px;bottom:auto;">
|
||||
<div class="PNB10 record_list" style="overflow:auto;">
|
||||
{% for content in entry.get_content() %}
|
||||
{% for content in entry.getItems() %}
|
||||
<div class="sortable" style="position:relative;float:left;">
|
||||
{{ _self.format_diapo(content.get_record()) }}
|
||||
{{ _self.format_diapo(content.getRecord()) }}
|
||||
<form>
|
||||
<input type="hidden" name="item_id" value="{{content.get_id()}}" />
|
||||
<input type="hidden" name="item_id" value="{{content.getId()}}" />
|
||||
</form>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<form method="post" action="{{ path('prod_feeds_entry_update', { 'id' : entry.get_id() }) }}" class="entry_update main_form">
|
||||
<form method="post" action="{{ path('prod_feeds_entry_update', { 'id' : entry.getId() }) }}" class="entry_update main_form">
|
||||
<input type="hidden" name="sorted_lst" value="" />
|
||||
<div class="PNB" style="top:200px;bottom:50px;">
|
||||
<div class="PNB" style="width:50%;right:auto;">
|
||||
<div class="PNB10 fields">
|
||||
<div><label for="feed_add_title">{% trans 'publication : titre' %}</label></div>
|
||||
<div><input class="required_text" type="text" name="title" id="feed_add_title" value="{{ entry.get_title() }}" /></div>
|
||||
<div><input class="required_text" type="text" name="title" id="feed_add_title" value="{{ entry.getTitle() }}" /></div>
|
||||
<div><label for="feed_add_subtitle">{% trans 'publication : sous titre' %}</label></div>
|
||||
<div><textarea id="feed_add_subtitle" name="subtitle">{{ entry.get_subtitle() }}</textarea></div>
|
||||
<div><textarea id="feed_add_subtitle" name="subtitle">{{ entry.getSubtitle() }}</textarea></div>
|
||||
<div><label for="feed_add_author_name">{% trans 'publication : autheur' %}</label></div>
|
||||
<div><input class="required_text" type="text" name="author_name" id="feed_add_author_name" value="{{ entry.get_author_name() }}" /></div>
|
||||
<div><input class="required_text" type="text" name="author_name" id="feed_add_author_name" value="{{ entry.getAuthorName() }}" /></div>
|
||||
<div><label for="feed_add_author_mail">{% trans 'publication : email autheur' %}</label></div>
|
||||
<div><input class="required_text" type="text" name="author_mail" id="feed_add_author_mail" value="{{ entry.get_author_email() }}" /></div>
|
||||
<div><input class="required_text" type="text" name="author_mail" id="feed_add_author_mail" value="{{ entry.getAuthorEmail() }}" /></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="PNB" style="width:50%;left:auto;">
|
||||
<div class="PNB10 feeds">
|
||||
<h1>{% trans 'Fils disponibles' %}</h1>
|
||||
<div class="list">
|
||||
{% set feed_id = entry.get_feed().get_id() %}
|
||||
{% for feed in feeds.get_feeds() %}
|
||||
{% if feed.is_publisher(app['authentication'].getUser()) %}
|
||||
<div class="feed {% if loop.index is odd%}odd{% endif %} {% if feed_id == feed.get_id() %}selected{% endif %}">
|
||||
<span>{{ feed.get_title() }}</span>
|
||||
<input type="hidden" value="{{ feed.get_id() }}"/>
|
||||
{% set feed_id = entry.getFeed().getId() %}
|
||||
{% for feed in feeds %}
|
||||
{% if feed.isPublisher(app['authentication'].getUser()) %}
|
||||
<div class="feed {% if loop.index is odd%}odd{% endif %} {% if feed_id == feed.getId() %}selected{% endif %}">
|
||||
<span>{{ feed.getTitle() }}</span>
|
||||
<input type="hidden" value="{{ feed.getId() }}"/>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<input type="hidden" value="{{ feed_id }}" name="feed_id" />
|
||||
<input type="hidden" value="{{ entry.get_id() }}" name="entry_id" />
|
||||
<input type="hidden" value="{{ entry.getId() }}" name="entry_id" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block rss %}
|
||||
{% for feed in aggregate.getFeeds() %}
|
||||
{% for feed in feeds %}
|
||||
{% set link = app['feed.user-link-generator'].generate(feed, app['authentication'].getUser(), 'rss') %}
|
||||
<link rel="alternate" type="{{ link.getMimetype() }}" title="{{ link.getTitle() }}" href="{{ link.getURI() }}" />
|
||||
{% set link = app['feed.user-link-generator'].generate(feed, app['authentication'].getUser(), 'rss') %}
|
||||
|
||||
@@ -3,9 +3,6 @@
|
||||
namespace Alchemy\Tests\Phrasea\Controller\Prod;
|
||||
|
||||
use Alchemy\Phrasea\Application;
|
||||
use Alchemy\Phrasea\Feed\Aggregate;
|
||||
use Alchemy\Phrasea\Feed\AggregateLinkGenerator;
|
||||
use Alchemy\Phrasea\Feed\LinkGenerator;
|
||||
use Symfony\Component\CssSelector\CssSelector;
|
||||
|
||||
class ControllerFeedTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
|
||||
@@ -41,34 +38,6 @@ class ControllerFeedTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
|
||||
protected $entry_authorname = 'author name';
|
||||
protected $entry_authormail = 'author.mail@example.com';
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
// $this->publisher = new \Entities\FeedPublisher(self::$DI['user']);
|
||||
//
|
||||
// $this->feed = new \Entities\Feed($this->publisher, $this->feed_title, $this->feed_subtitle);
|
||||
//
|
||||
// $this->entry = new \Entities\FeedEntry(
|
||||
// $this->feed
|
||||
// , $this->publisher
|
||||
// , $this->entry_title
|
||||
// , $this->entry_subtitle
|
||||
// , $this->entry_authorname
|
||||
// , $this->entry_authormail
|
||||
// );
|
||||
//
|
||||
// $this->item = new \Entities\FeedItem($this->entry, self::$DI['record_1']);
|
||||
//
|
||||
// $this->publisher->setFeed($this->feed);
|
||||
//
|
||||
// self::$DI['app']["EM"]->persist($this->feed);
|
||||
// self::$DI['app']["EM"]->persist($this->publisher);
|
||||
// self::$DI['app']["EM"]->persist($this->entry);
|
||||
// self::$DI['app']["EM"]->persist($this->item);
|
||||
// self::$DI['app']["EM"]->flush();
|
||||
}
|
||||
|
||||
public static function setUpBeforeClass()
|
||||
{
|
||||
parent::setUpBeforeClass();
|
||||
@@ -80,21 +49,6 @@ class ControllerFeedTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
|
||||
self::$DI['user']->ACL()->set_masks_on_base(self::$DI['collection_no_access_by_status']->get_base_id(), '0000000000000000000000000000000000000000000000000001000000000000', '0000000000000000000000000000000000000000000000000001000000000000', '0000000000000000000000000000000000000000000000000001000000000000', '0000000000000000000000000000000000000000000000000001000000000000');
|
||||
}
|
||||
|
||||
public function tearDown()
|
||||
{
|
||||
// if ($this->feed instanceof \Entities\Feed) {
|
||||
// self::$DI['app']["EM"]->remove($this->feed);
|
||||
// } else if ($this->entry instanceof \Entities\FeedEntry) {
|
||||
// self::$DI['app']["EM"]->remove($this->entry);
|
||||
// if ($this->publisher instanceof \Entities\FeedPublisher) {
|
||||
// self::$DI['app']["EM"]->remove($this->publisher);
|
||||
// }
|
||||
// }
|
||||
// self::$DI['app']["EM"]->flush();
|
||||
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
public function testRequestAvailable()
|
||||
{
|
||||
$feed = $this->insertOneFeed(self::$DI['user']);
|
||||
@@ -178,12 +132,9 @@ class ControllerFeedTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
|
||||
{
|
||||
$entry = $this->insertOneFeedEntry(self::$DI['user_alt1']);
|
||||
|
||||
try {
|
||||
$crawler = self::$DI['client']->request('GET', '/prod/feeds/entry/' . $entry->getId() . '/edit/');
|
||||
$this->fail('Should raise an exception');
|
||||
} catch (\Exception_UnauthorizedAction $e) {
|
||||
|
||||
}
|
||||
$pageContent = self::$DI['client']->getResponse();
|
||||
$this->assertEquals(403, $pageContent->getStatusCode());
|
||||
}
|
||||
|
||||
public function testEntryUpdate()
|
||||
@@ -474,46 +425,67 @@ class ControllerFeedTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
|
||||
{
|
||||
$feed = $this->insertOneFeed(self::$DI['user']);
|
||||
|
||||
$generator = $this->getMockBuilder('Symfony\Component\Routing\Generator\UrlGenerator')
|
||||
self::$DI['app']['feed.aggregate-link-generator'] = $this->getMockBuilder('Alchemy\Phrasea\Feed\AggregateLinkGenerator')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$link = $this->getMockBuilder('Alchemy\Phrasea\Feed\FeedLink')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$link->expects($this->once())
|
||||
->method('getURI')
|
||||
->will($this->returnValue('http://aggregated-link/'));
|
||||
self::$DI['app']['feed.aggregate-link-generator']->expects($this->once())
|
||||
->method('generate')
|
||||
->with($this->isInstanceOf('Alchemy\Phrasea\Feed\Aggregate'), $this->isInstanceOf('\User_Adapter'), 'rss', null, false)
|
||||
->will($this->returnValue($link));
|
||||
|
||||
$random = self::$DI['app']['tokens'];
|
||||
self::$DI['client']->request('GET', '/prod/feeds/subscribe/aggregated/');
|
||||
|
||||
$aggregateGenerator = new AggregateLinkGenerator($generator, self::$DI['app']['EM'], $random);
|
||||
|
||||
$feeds = self::$DI['app']["EM"]->getRepository("\Entities\Feed")->getAllForUser(self::$DI['user']);
|
||||
$crawler = self::$DI['client']->request('GET', '/prod/feeds/subscribe/aggregated/');
|
||||
$this->assertTrue(self::$DI['client']->getResponse()->isOk());
|
||||
$this->assertEquals("application/json", self::$DI['client']->getResponse()->headers->get("content-type"));
|
||||
$pageContent = json_decode(self::$DI['client']->getResponse()->getContent());
|
||||
$this->assertTrue(is_object($pageContent));
|
||||
$this->assertTrue(is_string($pageContent->texte));
|
||||
$aggregate = new Aggregate(self::$DI['app'], $feeds);
|
||||
$suscribe_link = $aggregateGenerator->generate($aggregate, self::$DI['user'], AggregateLinkGenerator::FORMAT_RSS);
|
||||
$this->assertContains($suscribe_link->getURI(), $pageContent->texte);
|
||||
|
||||
$pageContent = json_decode(self::$DI['client']->getResponse()->getContent(), true);
|
||||
|
||||
$this->assertArrayHasKey('texte', $pageContent);
|
||||
$this->assertArrayHasKey('titre', $pageContent);
|
||||
|
||||
$this->assertInternalType('string', $pageContent['texte']);
|
||||
$this->assertInternalType('string', $pageContent['titre']);
|
||||
|
||||
$this->assertContains('http://aggregated-link/', $pageContent['texte']);
|
||||
}
|
||||
|
||||
public function testSuscribe()
|
||||
{
|
||||
$feed = $this->insertOneFeed(self::$DI['user']);
|
||||
|
||||
$generator = $this->getMockBuilder('Symfony\Component\Routing\Generator\UrlGenerator')
|
||||
self::$DI['app']['feed.user-link-generator'] = $this->getMockBuilder('Alchemy\Phrasea\Feed\LinkGenerator')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$random = self::$DI['app']['tokens'];
|
||||
|
||||
$linkGenerator = new LinkGenerator($generator, self::$DI['app']['EM'], $random);
|
||||
$link = $this->getMockBuilder('Alchemy\Phrasea\Feed\FeedLink')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$link->expects($this->once())
|
||||
->method('getURI')
|
||||
->will($this->returnValue('http://user-link/'));
|
||||
self::$DI['app']['feed.user-link-generator']->expects($this->once())
|
||||
->method('generate')
|
||||
->with($this->isInstanceOf('\Entities\Feed'), $this->isInstanceOf('\User_Adapter'), 'rss', null, false)
|
||||
->will($this->returnValue($link));
|
||||
|
||||
$crawler = self::$DI['client']->request('GET', '/prod/feeds/subscribe/' . $feed->getId() . '/');
|
||||
|
||||
$this->assertTrue(self::$DI['client']->getResponse()->isOk());
|
||||
$this->assertEquals("application/json", self::$DI['client']->getResponse()->headers->get("content-type"));
|
||||
$pageContent = json_decode(self::$DI['client']->getResponse()->getContent());
|
||||
$this->assertTrue(is_object($pageContent));
|
||||
$this->assertTrue(is_string($pageContent->texte));
|
||||
$suscribe_link = $linkGenerator->generate($feed, self::$DI['user'], LinkGenerator::FORMAT_RSS);
|
||||
var_dump($suscribe_link);
|
||||
$this->assertContains($suscribe_link->getURI(), $pageContent->texte);
|
||||
|
||||
$pageContent = json_decode(self::$DI['client']->getResponse()->getContent(), true);
|
||||
|
||||
$this->assertArrayHasKey('texte', $pageContent);
|
||||
$this->assertArrayHasKey('titre', $pageContent);
|
||||
|
||||
$this->assertInternalType('string', $pageContent['texte']);
|
||||
$this->assertInternalType('string', $pageContent['titre']);
|
||||
|
||||
$this->assertContains('http://user-link/', $pageContent['texte']);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,6 @@ class AggregateLinkGeneratorTest extends \PhraseanetPHPUnitAbstract
|
||||
|
||||
$link = $linkGenerator->generate($aggregate, $user, $format, $page, $renew);
|
||||
|
||||
$this->assertSame($expected, $link->getUri());
|
||||
if ($format == "atom") {
|
||||
$this->assertSame("application/atom+xml", $link->getMimetype());
|
||||
$this->assertSame("AGGREGATE - Atom", $link->getTitle());
|
||||
@@ -61,8 +60,10 @@ class AggregateLinkGeneratorTest extends \PhraseanetPHPUnitAbstract
|
||||
|
||||
if ($alreadyCreated) {
|
||||
if ($renew) {
|
||||
$this->assertCount(2, $capture);
|
||||
$this->assertEquals($format, $capture['format']);
|
||||
if (null !== $page) {
|
||||
$this->assertEquals($page, $capture['page']);
|
||||
}
|
||||
$this->assertNotEquals($tokenValue, $capture['token']);
|
||||
|
||||
$this->assertCount(0, self::$DI['app']['EM']
|
||||
@@ -72,17 +73,25 @@ class AggregateLinkGeneratorTest extends \PhraseanetPHPUnitAbstract
|
||||
->getRepository("Entities\AggregateToken")
|
||||
->findBy(array('value' => $capture['token'])));
|
||||
} else {
|
||||
$this->assertEquals(array(
|
||||
$expectedParams = array(
|
||||
'token' => $tokenValue,
|
||||
'format' => $format,
|
||||
), $capture);
|
||||
);
|
||||
|
||||
if ($page !== null) {
|
||||
$expectedParams['page'] = $page;
|
||||
}
|
||||
|
||||
$this->assertEquals($expectedParams, $capture);
|
||||
|
||||
$this->assertCount(1, self::$DI['app']['EM']
|
||||
->getRepository("Entities\AggregateToken")
|
||||
->findBy(array('value' => $tokenValue)));
|
||||
}
|
||||
} else {
|
||||
$this->assertCount(2, $capture);
|
||||
if (null !== $page) {
|
||||
$this->assertEquals($page, $capture['page']);
|
||||
}
|
||||
$this->assertEquals($format, $capture['format']);
|
||||
$this->assertEquals(12, strlen($capture['token']));
|
||||
|
||||
@@ -126,4 +135,14 @@ class AggregateLinkGeneratorTest extends \PhraseanetPHPUnitAbstract
|
||||
array('doliprane', 'rss', $user, 1, true, true),
|
||||
);
|
||||
}
|
||||
|
||||
public function provideGenerationDataPublic()
|
||||
{
|
||||
return array(
|
||||
array('doliprane', 'atom', null),
|
||||
array('doliprane', 'atom', 1),
|
||||
array('doliprane', 'rss', null),
|
||||
array('doliprane', 'rss', 1)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,10 +52,12 @@ class LinkGeneratorTest extends \PhraseanetPHPUnitAbstract
|
||||
|
||||
if ($alreadyCreated) {
|
||||
if ($renew) {
|
||||
$this->assertCount(3, $capture);
|
||||
$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")
|
||||
@@ -64,18 +66,26 @@ class LinkGeneratorTest extends \PhraseanetPHPUnitAbstract
|
||||
->getRepository("Entities\FeedToken")
|
||||
->findBy(array('value' => $capture['token'])));
|
||||
} else {
|
||||
$this->assertEquals(array(
|
||||
$expectedParams = array(
|
||||
'token' => $tokenValue,
|
||||
'id' => $feed->getId(),
|
||||
'format' => $format,
|
||||
), $capture);
|
||||
);
|
||||
|
||||
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 {
|
||||
$this->assertCount(3, $capture);
|
||||
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']));
|
||||
@@ -91,6 +101,51 @@ class LinkGeneratorTest extends \PhraseanetPHPUnitAbstract
|
||||
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')
|
||||
@@ -123,4 +178,17 @@ class LinkGeneratorTest extends \PhraseanetPHPUnitAbstract
|
||||
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