/** * @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); } }
/** * @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'); }
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; }
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); }
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; }
/** * @covers Zend\Feed\Writer\Feed::export */ public function testExportWrongTypeException() { $writer = new Writer\Feed(); try { $writer->export('foo'); $this->fail(); } catch (Writer\Exception\InvalidArgumentException $e) { } }
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'))]); });
/** * 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; }
/** * 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; }
/** * 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; }
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)); }
/** * 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); }
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; }