diff --git a/lib/Alchemy/Phrasea/Controller/Client/Root.php b/lib/Alchemy/Phrasea/Controller/Client/Root.php index 6e90f40b93..99235cbd1b 100644 --- a/lib/Alchemy/Phrasea/Controller/Client/Root.php +++ b/lib/Alchemy/Phrasea/Controller/Client/Root.php @@ -11,6 +11,7 @@ namespace Alchemy\Phrasea\Controller\Client; +use Alchemy\Phrasea\Feed\Aggregate; use Alchemy\Phrasea\SearchEngine\SearchEngineOptions; use Alchemy\Phrasea\Exception\SessionNotFound; use Entities\UserQuery; @@ -538,8 +539,10 @@ class Root implements ControllerProviderInterface */ 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( - 'feeds' => $app['EM']->getRepository('Entities\Feed')->getAllforUser($app['authentication']->getUser()), + 'feeds' => $aggregate, 'image_size' => (int) $app['authentication']->getUser()->getPrefs('images_size') )); } diff --git a/lib/Alchemy/Phrasea/Controller/Prod/Feed.php b/lib/Alchemy/Phrasea/Controller/Prod/Feed.php index 4f905eacdf..c521e4e398 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/Feed.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/Feed.php @@ -187,7 +187,7 @@ class Feed implements ControllerProviderInterface $controllers->post('/entry/{id}/delete/', function(Application $app, Request $request, $id) { $datas = array('error' => true, 'message' => ''); - + $entry = $app['EM']->getRepository('Entities\FeedEntry')->find($id); if (null === $entry) { diff --git a/lib/Alchemy/Phrasea/Feed/Aggregate.php b/lib/Alchemy/Phrasea/Feed/Aggregate.php index 75ca82667d..a149a60d6c 100644 --- a/lib/Alchemy/Phrasea/Feed/Aggregate.php +++ b/lib/Alchemy/Phrasea/Feed/Aggregate.php @@ -80,24 +80,7 @@ class Aggregate implements FeedInterface public function getEntries($offset_start = 0, $how_many = null) { - $count = 0; - $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; + return $this->em->getRepository('Entities\FeedEntry')->findByFeeds($this->feeds, $offset_start, $how_many); } public function getSubtitle() @@ -112,9 +95,7 @@ class Aggregate implements FeedInterface public function getIconUrl() { - $url = '/skins/icons/rss32.gif'; - - return $url; + return false; } public function getCreatedOn() diff --git a/lib/Alchemy/Phrasea/Feed/AggregateLinkGenerator.php b/lib/Alchemy/Phrasea/Feed/AggregateLinkGenerator.php deleted file mode 100644 index 9579fc2090..0000000000 --- a/lib/Alchemy/Phrasea/Feed/AggregateLinkGenerator.php +++ /dev/null @@ -1,108 +0,0 @@ -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; - } -} diff --git a/lib/Alchemy/Phrasea/Feed/Link.php b/lib/Alchemy/Phrasea/Feed/Link.php deleted file mode 100644 index a6d475ad3e..0000000000 --- a/lib/Alchemy/Phrasea/Feed/Link.php +++ /dev/null @@ -1,68 +0,0 @@ -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; - } -} diff --git a/lib/Alchemy/Phrasea/Feed/LinkGenerator.php b/lib/Alchemy/Phrasea/Feed/LinkGenerator.php deleted file mode 100644 index b63347697d..0000000000 --- a/lib/Alchemy/Phrasea/Feed/LinkGenerator.php +++ /dev/null @@ -1,116 +0,0 @@ -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; - } -} diff --git a/lib/Alchemy/Phrasea/Feed/LinkInterface.php b/lib/Alchemy/Phrasea/Feed/LinkInterface.php deleted file mode 100644 index 4d45c2d4d8..0000000000 --- a/lib/Alchemy/Phrasea/Feed/LinkInterface.php +++ /dev/null @@ -1,30 +0,0 @@ -_em->createQuery($dql); $feeds = $query->getResult(); @@ -44,7 +44,7 @@ class SessionRepository extends EntityRepository { $dql = 'SELECT f FROM Entities\Feed f WHERE f.public = true - ORDER BY f.created_on DESC'; + ORDER BY f.updated_on DESC'; $query = $this->_em->createQuery($dql); $feeds = $query->getResult(); diff --git a/lib/Doctrine/Repositories/UserSettingRepository.php b/lib/Doctrine/Repositories/UserSettingRepository.php index 3537ecd8b5..bc7a7a15da 100644 --- a/lib/Doctrine/Repositories/UserSettingRepository.php +++ b/lib/Doctrine/Repositories/UserSettingRepository.php @@ -38,7 +38,7 @@ class UserSettingRepository extends EntityRepository public function findByFeeds($feeds, $offset_start = null, $how_many = null) { $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->setParameter('feeds', $feeds); diff --git a/lib/classes/record/preview.php b/lib/classes/record/preview.php index 2d94004888..90a7c1adf2 100644 --- a/lib/classes/record/preview.php +++ b/lib/classes/record/preview.php @@ -185,19 +185,19 @@ class record_preview extends record_adapter foreach ($entry->getItems() as $element) { $i ++; if ($first) { - $sbas_id = $element->getRecord()->get_sbas_id(); - $record_id = $element->getRecord()->get_record_id(); - $this->original_item = $element; + $sbas_id = $element->getRecord($this->app)->get_sbas_id(); + $record_id = $element->getRecord($this->app)->get_record_id(); $this->name = $entry->getTitle(); + $this->original_item = $element; $number = $element->getOrd(); } $first = false; if ($element->getOrd() == $pos) { - $sbas_id = $element->getRecord()->get_sbas_id(); - $record_id = $element->getRecord()->get_record_id(); - $this->original_item = $element; + $sbas_id = $element->getRecord($this->app)->get_sbas_id(); + $record_id = $element->getRecord($this->app)->get_record_id(); $this->name = $entry->getTitle(); + $this->original_item = $element; $number = $element->getOrd(); } } diff --git a/templates/mobile/lightbox/feed.html.twig b/templates/mobile/lightbox/feed.html.twig index 526d323729..c16994b940 100644 --- a/templates/mobile/lightbox/feed.html.twig +++ b/templates/mobile/lightbox/feed.html.twig @@ -29,7 +29,7 @@ {% for item in feed_entry.getItems() %}
  • - {{thumbnail.format(item.getRecord().get_thumbnail(), 80, 80, '', true, false)}} + {{thumbnail.format(item.getRecord(app).get_thumbnail(), 80, 80, '', true, false)}}
  • diff --git a/templates/mobile/lightbox/feed_element.html.twig b/templates/mobile/lightbox/feed_element.html.twig index 870e3c4697..cae9e11297 100644 --- a/templates/mobile/lightbox/feed_element.html.twig +++ b/templates/mobile/lightbox/feed_element.html.twig @@ -15,7 +15,7 @@
    Back -

    {{feed_element.getOrd()}} - {{record.getTitle()}}

    +

    {{feed_element.getOrd()}} - {{record.get_title()}}

    Home
    diff --git a/templates/web/client/home_inter_pub_basket.html.twig b/templates/web/client/home_inter_pub_basket.html.twig index 27e90e55d9..b2df45e908 100644 --- a/templates/web/client/home_inter_pub_basket.html.twig +++ b/templates/web/client/home_inter_pub_basket.html.twig @@ -39,7 +39,7 @@
    {% for item in entry.getItems() %} - {% set record = item.getRecord() %} + {% set record = item.getRecord(app) %} {% set thumbnail = record.get_thumbnail() %} {% set docType = record.get_type() %} {% set duration = "" %} diff --git a/templates/web/lightbox/IE6/feed_container.html.twig b/templates/web/lightbox/IE6/feed_container.html.twig index 2dd1f08a7f..4553ae4471 100644 --- a/templates/web/lightbox/IE6/feed_container.html.twig +++ b/templates/web/lightbox/IE6/feed_container.html.twig @@ -10,7 +10,7 @@ -
    +
    diff --git a/templates/web/lightbox/feed_container.html.twig b/templates/web/lightbox/feed_container.html.twig index 2dd1f08a7f..4553ae4471 100644 --- a/templates/web/lightbox/feed_container.html.twig +++ b/templates/web/lightbox/feed_container.html.twig @@ -10,7 +10,7 @@ -
    +
    diff --git a/templates/web/prod/actions/publish/publish_edit.html.twig b/templates/web/prod/actions/publish/publish_edit.html.twig index ccd22f34cf..0008ab0f25 100644 --- a/templates/web/prod/actions/publish/publish_edit.html.twig +++ b/templates/web/prod/actions/publish/publish_edit.html.twig @@ -18,7 +18,7 @@
    {% for content in entry.getItems() %}
    - {{ _self.format_diapo(content.getRecord()) }} + {{ _self.format_diapo(content.getRecord(app)) }}
    diff --git a/templates/web/prod/feeds/entry_macro.html.twig b/templates/web/prod/feeds/entry_macro.html.twig index 3954bde598..6b856d65e6 100644 --- a/templates/web/prod/feeds/entry_macro.html.twig +++ b/templates/web/prod/feeds/entry_macro.html.twig @@ -7,7 +7,11 @@

    {% if feed.isAggregated() %} - + {% endif %} {{ entry.getTitle() }} {% set author = entry.getAuthorName() %} @@ -47,14 +51,18 @@ {% trans %} dans {{feed_name}} {% endtrans %} - + {% endif %}

    {{ entry.getSubtitle()|nl2br|raw }}

    {% for item in entry.getItems() %} - {% set record = item.getRecord() %} + {% set record = item.getRecord(app) %} {% set prefix = 'PUBLI_' ~ item.getId() %} {{record_format.block(record, false, null, prefix, entry.getId())}} {% endfor %} diff --git a/templates/web/prod/feeds/feeds.html.twig b/templates/web/prod/feeds/feeds.html.twig index 182ff7b81a..f3c5fa6605 100644 --- a/templates/web/prod/feeds/feeds.html.twig +++ b/templates/web/prod/feeds/feeds.html.twig @@ -6,7 +6,11 @@

    - + {% if feed.isAggregated %} {% trans 'Toutes les publications' %} @@ -36,7 +40,11 @@ {% for aval_feed in feeds %}
  • - {{ aval_feed.getTitle() }} + {{ aval_feed.getTitle() }}
  • {% endfor %} diff --git a/templates/web/prod/preview/feed_train.html.twig b/templates/web/prod/preview/feed_train.html.twig index d9d44f0b9a..da1d1cc77c 100644 --- a/templates/web/prod/preview/feed_train.html.twig +++ b/templates/web/prod/preview/feed_train.html.twig @@ -1,8 +1,8 @@
      - {% 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() %} {% set style = 'width:65px;top:' %} {% set top = ((66 - (65 / (thumbnail.get_width() / thumbnail.get_height()))) / 2)|round %} @@ -14,16 +14,16 @@ {% set tooltip = '' %} {% 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 %} {% set class = '' %} - {% if record.get_number() == child.get_ord() %} + {% if record.get_number() == child.getOrd() %} {% set class = ' selected' %} {% endif %}
    • -
    • {% endfor %} diff --git a/tests/Alchemy/Tests/Phrasea/Application/OverviewTest.php b/tests/Alchemy/Tests/Phrasea/Application/OverviewTest.php index 501b04c31a..bfb7eef1ab 100644 --- a/tests/Alchemy/Tests/Phrasea/Application/OverviewTest.php +++ b/tests/Alchemy/Tests/Phrasea/Application/OverviewTest.php @@ -9,19 +9,19 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac { 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(); $this->assertEquals(200, $response->getStatusCode()); $content_disposition = explode(';', $response->headers->get('content-disposition')); $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_1']->get_preview()->get_size(), $response->headers->get('content-length')); + $this->assertEquals(self::$DI['record_24']->get_preview()->get_mime(), $response->headers->get('content-type')); + $this->assertEquals(self::$DI['record_24']->get_preview()->get_size(), $response->headers->get('content-length')); } 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()); } @@ -56,7 +56,7 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac public function testDatafilesRouteNotAuthenticated() { 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()); } @@ -64,7 +64,7 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac public function testDatafilesRouteNotAuthenticatedUnknownSubdef() { 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()); } @@ -105,7 +105,7 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac { $this->assertTrue(self::$DI['app']['authentication']->isAuthenticated()); $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); $response = self::$DI['client']->getResponse(); @@ -158,8 +158,8 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac protected function get_a_caption(array $headers = array()) { - $token = self::$DI['record_1']->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; + $token = self::$DI['record_24']->get_thumbnail()->get_permalink()->get_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); $response = self::$DI['client']->getResponse(); @@ -168,15 +168,15 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac $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(200, $response->getStatusCode()); } protected function get_a_permalinkBCcompatibility(array $headers = array()) { - $token = self::$DI['record_1']->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/'; + $token = self::$DI['record_24']->get_preview()->get_permalink()->get_token(); + $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); $response = self::$DI['client']->getResponse(); @@ -191,8 +191,8 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac protected function get_a_permaviewBCcompatibility(array $headers = array()) { - $token = self::$DI['record_1']->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/'; + $token = self::$DI['record_24']->get_preview()->get_permalink()->get_token(); + $url = '/permalink/v1/whateverIwannt/' . self::$DI['record_24']->get_sbas_id() . '/' . self::$DI['record_24']->get_record_id() . '/' . $token . '/preview/'; $url = $url . 'view/'; $crawler = self::$DI['client']->request('GET', $url); @@ -207,8 +207,8 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac protected function get_a_permalink(array $headers = array()) { - $token = self::$DI['record_1']->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 . ''; + $token = self::$DI['record_24']->get_preview()->get_permalink()->get_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); $response = self::$DI['client']->getResponse(); @@ -217,14 +217,18 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac $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($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()); } protected function get_a_permaview(array $headers = array()) { - $token = self::$DI['record_1']->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 . ''; + $token = self::$DI['record_24']->get_preview()->get_permalink()->get_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); $response = self::$DI['client']->getResponse(); diff --git a/tests/Alchemy/Tests/Phrasea/Core/Provider/FeedServiceProviderTest.php b/tests/Alchemy/Tests/Phrasea/Core/Provider/FeedServiceProviderTest.php index 3dfd282d4b..6d65359bb6 100644 --- a/tests/Alchemy/Tests/Phrasea/Core/Provider/FeedServiceProviderTest.php +++ b/tests/Alchemy/Tests/Phrasea/Core/Provider/FeedServiceProviderTest.php @@ -13,12 +13,12 @@ class FeedServiceProviderTest extends ServiceProviderTestCase array( 'Alchemy\Phrasea\Core\Provider\FeedServiceProvider', 'feed.user-link-generator', - 'Alchemy\Phrasea\Feed\LinkGenerator' + 'Alchemy\Phrasea\Feed\Link\FeedLinkGenerator' ), array( 'Alchemy\Phrasea\Core\Provider\FeedServiceProvider', 'feed.aggregate-link-generator', - 'Alchemy\Phrasea\Feed\AggregateLinkGenerator' + 'Alchemy\Phrasea\Feed\Link\AggregateLinkGenerator' ), ); } diff --git a/tests/Alchemy/Tests/Phrasea/Feed/LinkGeneratorTest.php b/tests/Alchemy/Tests/Phrasea/Feed/LinkGeneratorTest.php deleted file mode 100644 index 3739c297ee..0000000000 --- a/tests/Alchemy/Tests/Phrasea/Feed/LinkGeneratorTest.php +++ /dev/null @@ -1,194 +0,0 @@ -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) - ); - } -}