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() %}
{{ entry.getSubtitle()|nl2br|raw }}