Ejemplo n.º 1
0
 /**
  * @return \Illuminate\Http\Response|mixed
  */
 public function render()
 {
     try {
         $feed = $this->feed->export($this->format);
         return \Response::make($feed, 200, $this->header[$this->format]);
     } catch (\Zend\Feed\Writer\Exception\InvalidArgumentException $w) {
         return \Response::make([], 404);
     }
 }
Ejemplo n.º 2
0
 /**
  * @param $data array
  * @param format string, either rss or atom
  */
 protected function createFeed(View $view, Request $request)
 {
     $feed = new Feed();
     $data = $view->getData();
     $item = current($data);
     $annotationData = $this->reader->read($item);
     if ($item && ($feedData = $annotationData->getFeed())) {
         $class = get_class($item);
         $feed->setTitle($feedData->getName());
         $feed->setDescription($feedData->getDescription());
         $feed->setLink($this->urlGen->generateCollectionUrl($class));
         $feed->setFeedLink($this->urlGen->generateCollectionUrl($class, $request->getRequestFormat()), $request->getRequestFormat());
     } else {
         $feed->setTitle('Camdram feed');
         $feed->setDescription('Camdram feed');
     }
     $lastModified = null;
     $accessor = PropertyAccess::createPropertyAccessor();
     // Add one or more entries. Note that entries must be manually added once created.
     foreach ($data as $document) {
         $entry = $feed->createEntry();
         $entry->setTitle($accessor->getValue($document, $feedData->getTitleField()));
         $entry->setLink($this->urlGen->generateUrl($document));
         $entry->setDescription($this->twig->render($feedData->getTemplate(), array('entity' => $document)));
         if ($accessor->isReadable($document, $feedData->getUpdatedAtField())) {
             $entry->setDateModified($accessor->getValue($document, $feedData->getUpdatedAtField()));
         }
         $feed->addEntry($entry);
         if (!$lastModified || $entry->getDateModified() > $lastModified) {
             $lastModified = $entry->getDateModified();
         }
     }
     $feed->setDateModified($lastModified);
     return $feed->export($request->getRequestFormat());
 }
 public function generateXmlFeed()
 {
     $feed = new Feed();
     $feed->setTitle('xtreamwayz');
     $feed->setLink($this->generateUrl('home', [], true));
     $feed->setFeedLink($this->generateUrl('feed', [], true), 'atom');
     $feed->addAuthor(['name' => 'Geert Eltink', 'uri' => 'https://xtreamwayz.com']);
     $feed->setDateModified(time());
     $feed->setCopyright(sprintf('Copyright (c) 2005-%s Geert Eltink. All Rights Reserved.', date('Y')));
     $feed->setDescription('A web developer\'s playground, notes and thoughts.');
     $feed->setId($this->generateUrl('home', [], true));
     $posts = array_slice(array_reverse($this->postRepository->findAll()), 0, 5);
     /** @var \App\Domain\Post\Post $post */
     foreach ($posts as $post) {
         $entry = $feed->createEntry();
         $entry->setTitle($post->getTitle());
         $entry->setLink($this->generateUrl('blog.post', ['id' => $post->getId()], true));
         $entry->setId($this->generateUrl('blog.post', ['id' => $post->getId()], true));
         $entry->setDateCreated($post->getPublished());
         if ($post->getModified()) {
             $entry->setDateModified($post->getModified());
         } else {
             $entry->setDateModified($post->getPublished());
         }
         $entry->setDescription($post->getSummary());
         $entry->setContent($post->getContent());
         $entry->addAuthor(['name' => 'Geert Eltink', 'uri' => 'https://xtreamwayz.com']);
         $feed->addEntry($entry);
     }
     return $feed->export('atom');
 }
Ejemplo n.º 4
0
 public function feedAction()
 {
     /* @var \UthandoNews\Options\NewsOptions $options */
     $options = $this->getService('UthandoNewsOptions');
     /* @var \UthandoNews\Options\FeedOptions $feedOptions */
     $feedOptions = $this->getService('UthandoNewsFeedOptions');
     $newService = $this->getService();
     $newsItems = $newService->search(['sort' => $options->getSortOrder()]);
     $uri = $this->getRequest()->getUri();
     $base = sprintf('%s://%s', $uri->getScheme(), $uri->getHost());
     $feed = new Feed();
     $feed->setTitle($feedOptions->getTitle());
     $feed->setFeedLink($base . $this->url()->fromRoute('home'), 'atom');
     $feed->setDescription($feedOptions->getDescription());
     $feed->setLink($base . $this->url()->fromRoute('home'));
     $feed->setDateModified(time());
     /* @var \UthandoNews\Model\News $item */
     foreach ($newsItems as $item) {
         $entry = $feed->createEntry();
         $entry->addAuthor(['name' => $item->getArticle()->getUser()->getFullName()]);
         $entry->setTitle($item->getArticle()->getTitle());
         $entry->setLink($base . $this->url()->fromRoute('news', ['news-item' => $item->getArticle()->getSlug()]));
         $entry->setDescription($item->getArticle()->getDescription());
         $entry->setDateModified($item->getDateModified()->getTimestamp());
         $entry->setDateCreated($item->getArticle()->getDateCreated()->getTimestamp());
         $feed->addEntry($entry);
     }
     $feed->export('rss');
     $feedModel = new FeedModel();
     $feedModel->setFeed($feed);
     return $feedModel;
 }
 /**
  * @return FeedModel
  */
 public function rssAction()
 {
     $feed = new Feed();
     $feed->setTitle('Sample Blog');
     $feed->setFeedLink($this->getUrl() . '/news/rss', 'atom');
     $feed->addAuthor(array('name' => 'Sample Blog Inc.', 'email' => 'contact@' . $this->getRequest()->getUri()->getHost(), 'uri' => $this->getUrl()));
     $feed->setDescription('Description of this feed');
     $feed->setLink($this->getUrl());
     $feed->setDateModified(time());
     $news = $this->getNewsTable()->top();
     foreach ($news as $row) {
         $entry = $feed->createEntry();
         $entry->setTitle($row->title);
         $entry->setLink($this->getUrl() . '/news/read/' . $row->news_id);
         $entry->setContent($row->text);
         $entry->setDescription($row->highlight);
         $entry->setDateModified(strtotime($row->updated_at));
         $entry->setDateCreated(strtotime($row->created_at));
         $feed->addEntry($entry);
     }
     $feed->export('rss');
     $feed_model = new FeedModel();
     $feed_model->setFeed($feed);
     return $feed_model;
 }
Ejemplo n.º 6
0
 public function feedAction()
 {
     /**
      * @var NewsDao $newsDao
      */
     $newsDao = $this->getServiceLocator()->get('dao_news_news');
     $newsList = $newsDao->getNewsListForFeed();
     $feed = new Feed();
     $feed->setTitle('Ginosi\'s News');
     $feed->setLink('//www.ginosi.com');
     $feed->setFeedLink('//www.ginosi.com/news/feed', 'rss');
     $feed->setDateModified(time());
     $feed->addHub('//pubsubhubbub.appspot.com/');
     $feed->setDescription('Ginosi\'s News');
     foreach ($newsList as $row) {
         preg_match('/<p>(.*)<\\/p>/', $row->getEn(), $matches);
         if (isset($matches[1]) && !is_null($matches[1])) {
             $desc = $matches[1];
         } else {
             $contents = preg_split('/\\n/', $row->getEn());
             $desc = $contents[0];
         }
         $entry = $feed->createEntry();
         $entry->setTitle($row->getEn_title());
         $entry->setLink("//" . DomainConstants::WS_DOMAIN_NAME . "/news/" . Helper::urlForSite($row->getEn_title()));
         $entry->setDateModified(strtotime($row->getDate()));
         $entry->setDateCreated(strtotime($row->getDate()));
         $entry->setDescription($desc);
         $entry->setContent($row->getEn());
         $feed->addEntry($entry);
     }
     /**
      * Render the resulting feed to Atom 1.0 and assign to $out.
      * You can substitute "atom" with "rss" to generate an RSS 2.0 feed.
      */
     $this->getServiceLocator()->get('Application')->getEventManager()->attach(\Zend\Mvc\MvcEvent::EVENT_RENDER, function ($event) {
         $event->getResponse()->getHeaders()->addHeaderLine('Content-Type', 'text/xml; charset=UTF-8');
     }, -10000);
     $feed->export('rss');
     return (new FeedModel())->setFeed($feed);
 }
Ejemplo n.º 7
0
 public function indexAction()
 {
     $moduleConfig = $this->getServiceLocator()->get('config');
     $feedClassMap = $moduleConfig['feed_class_map'];
     $appServiceLoader = $this->recoverAppServiceLoader();
     $configurations = $appServiceLoader->recoverService('configurations');
     $input = array_merge($configurations, $appServiceLoader->getProperties());
     $resourceClassName = isset($feedClassMap[$this->params()->fromRoute('resource')]) ? $feedClassMap[$this->params()->fromRoute('resource')] : null;
     if (empty($resourceClassName) or !class_exists($resourceClassName)) {
         return $this->redirect()->toRoute('home', array('lang' => 'it'));
     }
     /**
      * @var \Feed\Model\FeedBuilderAbstract $resourceClassInstance
      */
     $resourceClassInstance = new $resourceClassName();
     $resourceClassInstance->setInput($input);
     $feed = new Feed();
     $feed->setTitle($resourceClassInstance->getTitle());
     $feed->setFeedLink($resourceClassInstance->getFeedLink(), $resourceClassInstance->getFeedType());
     // $feed->addAuthor($resourceClassInstance->getAuthor());
     $feed->setDescription($resourceClassInstance->getDescription());
     $feed->setLink($resourceClassInstance->getLink());
     $feed->setDateModified(time());
     $data = $resourceClassInstance->formatRecords($resourceClassInstance->recoverRecords());
     foreach ($data as $row) {
         $entry = $feed->createEntry();
         $entry->setTitle($row['title']);
         $entry->setLink($row['link']);
         $entry->setDescription($row['content']);
         $entry->setDateModified(strtotime($row['date_created']));
         $entry->setDateCreated(strtotime($row['date_modified']));
         $feed->addEntry($entry);
     }
     $feed->export('rss');
     $feedmodel = new FeedModel();
     $feedmodel->setFeed($feed);
     return $feedmodel;
 }
Ejemplo n.º 8
0
 /**
  * @covers Zend\Feed\Writer\Feed::export
  */
 public function testExportWrongTypeException()
 {
     $writer = new Writer\Feed();
     try {
         $writer->export('foo');
         $this->fail();
     } catch (Writer\Exception\InvalidArgumentException $e) {
     }
 }
Ejemplo n.º 9
0
        return Response::make('Not Found', 404);
    }
    $feed = new Feed();
    $feed->setTitle($model->getAttribute('title'))->setDescription($model->getAttribute('description'))->setBaseUrl(Url::to('/'))->setGenerator('OctoberCMS/Adrenth.RssFetcher')->setId('Adrenth.RssFecther.' . $model->getAttribute('id'))->setLink(Url::to('/feeds/' . $path))->setFeedLink(Url::to('/feeds/' . $path), $model->getAttribute('type'))->setDateModified()->addAuthor(['name' => 'OctoberCMS']);
    /** @type Collection $sources */
    $sources = $model->sources;
    $ids = Arr::pluck($sources->toArray(), 'id');
    $items = [];
    Source::with(['items' => function ($builder) use(&$items, $model) {
        $items = $builder->where('is_published', '=', 1)->whereDate('pub_date', '=', date('Y-m-d'))->orderBy('pub_date', 'desc')->limit($model->getAttribute('max_items'))->get();
    }])->whereIn('id', $ids)->where('is_enabled', '=', 1)->get();
    /** @type Item $item */
    foreach ($items as $item) {
        try {
            $entry = new Entry();
            $entry->setId((string) $item->getAttribute('id'))->setTitle($item->getAttribute('title'))->setDescription($item->getAttribute('description'))->setLink($item->getAttribute('link'))->setDateModified($item->getAttribute('pub_date'));
            $comments = $item->getAttribute('comments');
            if (!empty($comments)) {
                $entry->setCommentLink($comments);
            }
            $category = $item->getAttribute('category');
            if (!empty($category)) {
                $entry->addCategory(['term' => $category]);
            }
            $feed->addEntry($entry);
        } catch (InvalidArgumentException $e) {
            continue;
        }
    }
    return Response::make($feed->export($model->getAttribute('type')), 200, ['Content-Type' => sprintf('application/%s+xml', $model->getAttribute('type'))]);
});
Ejemplo n.º 10
0
 /**
  * Creates a HTTP Response and exports feed
  *
  * @param \Zend\Feed\Writer\Feed $feed
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 protected function buildResponse(Request $req, Feed $feed)
 {
     $content = $feed->export($req->getRequestFormat());
     $response = new Response($content, 200);
     $response->setSharedMaxAge(3600);
     return $response;
 }
Ejemplo n.º 11
0
 /**
  * RSS feed
  *
  * @param Request $request
  *
  * @return Response
  *
  * @Route("/blog/rss", name="blog_rss")
  */
 public function rssAction(Request $request)
 {
     $feed = new Feed();
     $config = $this->container->getParameter('stfalcon_blog.config');
     $feed->setTitle($config['rss']['title']);
     $feed->setDescription($config['rss']['description']);
     $feed->setLink($this->generateUrl('blog_rss', array(), true));
     $posts = $this->get('doctrine')->getManager()->getRepository("StfalconBlogBundle:Post")->getAllPublishedPosts($request->getLocale());
     /** @var Post $post */
     foreach ($posts as $post) {
         $entry = new Entry();
         $entry->setTitle($post->getTitle());
         $entry->setLink($this->generateUrl('blog_post_view', array('slug' => $post->getSlug()), true));
         $feed->addEntry($entry);
     }
     $response = new Response($feed->export('rss'));
     $response->headers->add(array('Content-Type' => 'application/xml'));
     return $response;
 }
Ejemplo n.º 12
0
 /**
  * Gets RSS feed of published posts
  *
  * @param void
  * @return Zend\Feed\Writer\Feed
  **/
 public function getRssFeed()
 {
     $qb = $this->em->createQueryBuilder();
     $qb->select('p')->from(self::ENTITY_POST, 'p')->where('p.isPublished = :published')->orderBy('p.dateAdded', 'DESC')->setMaxResults(10)->setParameters(array('published' => 1));
     $query = $qb->getQuery();
     $result = $query->getResult();
     $feed = new Feed();
     $feed->setTitle("Rob's Blog");
     $feed->setFeedLink('http://' . $_SERVER['SERVER_NAME'] . '/blog/rss', 'atom');
     $feed->addAuthor(array('name' => 'Rob', 'email' => '*****@*****.**', 'uri' => 'http://' . $_SERVER['SERVER_NAME']));
     $feed->setDescription("A PHP developer's blog");
     $feed->setLink('http://' . $_SERVER['SERVER_NAME']);
     $feed->setDateModified($result[0]->getDateAdded());
     foreach ($result as $post) {
         $entry = $feed->createEntry();
         $entry->setTitle($post->getTitle());
         $entry->setLink(sprintf('http://' . $_SERVER['SERVER_NAME'] . '/blog/view?title=%s', strtolower(urlencode($post->getTitle()))));
         $entry->setDescription(substr(strip_tags($post->getContent()), 0, 150) . '...');
         $entry->setDateModified($post->getDateAdded());
         $entry->setDateCreated($post->getDateAdded());
         $feed->addEntry($entry);
     }
     $feed->export('rss');
     return $feed;
 }
Ejemplo n.º 13
0
 private function generateFeed(string $type, string $fileBase, string $baseUri, string $title, string $landingRoute, string $feedRoute, array $routeOptions, Traversable $posts)
 {
     $routeOptions['type'] = $type;
     $landingUri = $baseUri . $this->generateUri($landingRoute, $routeOptions);
     $feedUri = $baseUri . $this->generateUri($feedRoute, $routeOptions);
     $feed = new FeedWriter();
     $feed->setTitle($title);
     $feed->setLink($landingUri);
     $feed->setFeedLink($feedUri, $type);
     if ($type === 'rss') {
         $feed->setDescription($title);
     }
     $parser = new Parser(null, new CommonMarkParser());
     $latest = false;
     $posts->setCurrentPageNumber(1);
     foreach ($posts as $details) {
         $document = $parser->parse(file_get_contents($details['path']));
         $post = $document->getYAML();
         $html = $document->getContent();
         $author = $this->getAuthor($post['author']);
         if (!$latest) {
             $latest = $post;
         }
         $entry = $feed->createEntry();
         $entry->setTitle($post['title']);
         // $entry->setLink($baseUri . $this->generateUri('blog.post', ['id' => $post['id']]));
         $entry->setLink($baseUri . sprintf('/blog/%s.html', $post['id']));
         $entry->addAuthor($author);
         $entry->setDateModified(new DateTime($post['updated']));
         $entry->setDateCreated(new DateTime($post['created']));
         $entry->setContent($this->createContent($html, $post));
         $feed->addEntry($entry);
     }
     // Set feed date
     $feed->setDateModified(new DateTime($latest['updated']));
     // Write feed to file
     $file = sprintf('%s%s.xml', $fileBase, $type);
     $file = str_replace(' ', '+', $file);
     file_put_contents($file, $feed->export($type));
 }
Ejemplo n.º 14
0
 /**
  * RSS feed for all news
  *
  * Get all news from two months back in time
  *
  * @return array|FeedModel
  */
 public function rssNewsAction()
 {
     $sm = $this->getServiceLocator();
     $groupService = $sm->get('Stjornvisi\\Service\\Group');
     //ITEM FOUND
     //  item is in storage
     if (($group = $groupService->get($this->params()->fromRoute('name', 0))) != null) {
         $sm = $this->getServiceLocator();
         $newsService = $sm->get('Stjornvisi\\Service\\News');
         $from = new DateTime();
         $from->sub(new DateInterval('P2M'));
         $to = new DateTime();
         $to->add(new DateInterval('P2M'));
         $feed = new Feed();
         $feed->setTitle('Feed Example');
         $feed->setFeedLink('http://ourdomain.com/rss', 'atom');
         $feed->addAuthor(['name' => 'Stjórnvísi', 'email' => '*****@*****.**', 'uri' => 'http://stjornvisi.is']);
         $feed->setDescription('Fréttir');
         $feed->setLink('http://ourdomain.com');
         $feed->setDateModified(new DateTime());
         $data = [];
         foreach ($newsService->getRangeByGroup($group->id, $from, $to) as $row) {
             //create entry...
             $entry = $feed->createEntry();
             $entry->setTitle($row->title);
             $entry->setLink('http://stjornvisi.is/');
             $entry->setDescription($row->body . '.');
             $entry->setDateModified($row->created_date);
             $entry->setDateCreated($row->created_date);
             $feed->addEntry($entry);
         }
         $feed->export('rss');
         $feedmodel = new FeedModel();
         $feedmodel->setFeed($feed);
         return $feedmodel;
         //ITEM NOT FOUND
         //
     } else {
         return $this->notFoundAction();
     }
 }
 /**
  * Converts a feed data object to a string.
  *
  * @param \Zend\Feed\Writer\Feed $feed
  * @return string
  */
 protected function getFeedString(Feed $feed)
 {
     return $feed->export('atom', true);
 }
Ejemplo n.º 16
0
 public function rssAction()
 {
     $feed = new Feed();
     $type = $this->params('type');
     $age = (int) $this->params('age');
     $maxAge = new DateTime($age . ' days ago');
     $entities = $this->getEntityManager()->findEntitiesByTypeName($type);
     $chain = new FilterChain();
     $chain->attach(new EntityAgeCollectionFilter($maxAge));
     $chain->attach(new NotTrashedCollectionFilter());
     $entities = $chain->filter($entities);
     $data = $this->normalize($entities);
     foreach ($data as $item) {
         try {
             $entry = $feed->createEntry();
             $entry->setTitle($item['title']);
             $entry->setDescription($item['description']);
             $entry->setId($item['guid']);
             $entry->setLink($item['link']);
             foreach ($item['categories'] as $keyword) {
                 $entry->addCategory(['term' => $keyword]);
             }
             $entry->setDateModified($item['lastModified']);
             $feed->addEntry($entry);
         } catch (\Exception $e) {
             // Invalid Item, do not add
         }
     }
     $feed->setTitle($this->brand()->getHeadTitle());
     $feed->setDescription($this->brand()->getDescription());
     $feed->setDateModified(time());
     $feed->setLink($this->url()->fromRoute('home', [], ['force_canonical' => true]));
     $feed->setFeedLink($this->url()->fromRoute('entity/api/rss', ['type' => $type, 'age' => $age], ['force_canonical' => true]), 'atom');
     $feed->export('atom');
     $feedModel = new FeedModel();
     $feedModel->setFeed($feed);
     return $feedModel;
 }