/** * @param string $format * @return mixed|void */ public function setHeaders($format = 'atom') { $this->feed->setTitle(\Config::get('recipe.title')); $this->feed->setLink(url()); $this->feed->setFeedLink(route('feed.index', ['format' => $format]), $format); $this->feed->setDescription(\Config::get('recipe.title')); $this->feed->setDateModified(time()); $this->feed->addAuthor(['name' => 'Yuuki Takezawa', 'email' => '*****@*****.**']); $this->feed->addHub('http://pubsubhubbub.appspot.com/'); $this->format = $format; }
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'); }
/** * @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 testAddAuthorThrowsExceptionIfNameOmittedFromArray() { $writer = new Writer\Feed(); try { $writer->addAuthor(array('uri' => 'notauri')); $this->fail(); } catch (Writer\Exception\InvalidArgumentException $e) { } }
public function testFluentInterface() { $writer = new Writer\Feed(); $return = $writer->addAuthor(array('name' => 'foo'))->addAuthors(array(array('name' => 'foo')))->setCopyright('copyright')->addCategories(array(array('term' => 'foo')))->addCategory(array('term' => 'foo'))->addHub('foo')->addHubs(array('foo'))->setBaseUrl('http://www.example.com')->setDateCreated(null)->setDateModified(null)->setDescription('description')->setEncoding('utf-8')->setId('1')->setImage(array('uri' => 'http://www.example.com'))->setLanguage('fr')->setLastBuildDate(null)->setLink('foo')->setTitle('foo')->setType('foo'); $this->assertSame($return, $writer); }
/** * Atom/rssを出力 * string $page ページ名(ページ名が入っている場合はキャッシュは無効) * string $type rssかatomか。 * boolean $force キャッシュ生成しない * return void */ public static function getFeed($page = '', $type = 'rss', $force = false) { global $vars, $site_name, $site_logo, $modifier, $modifierlink, $_string, $cache; static $feed; // rss, atom以外はエラー if (!($type === 'rss' || $type === 'atom')) { throw new Exception('Recent::getFeed(): Unknown feed type.'); } $content_type = $type === 'rss' ? 'application/rss+xml' : 'application/atom+xml'; $body = ''; if (empty($page)) { // recentキャッシュの更新チェック if ($cache['wiki']->getMetadata(self::RECENT_CACHE_NAME)['mtime'] > $cache['wiki']->getMetadata(self::FEED_CACHE_NAME)['mtime']) { $force = true; } if ($force) { // キャッシュ再生成 unset($feed); $cache['wiki']->removeItem(self::FEED_CACHE_NAME); } else { if (!empty($feed)) { // メモリにキャッシュがある場合 } else { if ($cache['wiki']->hasItem(self::FEED_CACHE_NAME)) { // キャッシュから最終更新を読み込む $feed = $cache['wiki']->getItem(self::FEED_CACHE_NAME); } } } } if (empty($feed)) { // Feedを作る $feed = new Feed(); // Wiki名 $feed->setTitle($site_name); // Wikiのアドレス $feed->setLink(Router::get_script_absuri()); // サイトのロゴ //$feed->setImage(array( // 'title'=>$site_name, // 'uri'=>$site_logo, // 'link'=>Router::get_script_absuri() //)); // Feedの解説 $feed->setDescription(sprintf($_string['feed_description'], $site_name)); // Feedの発行者など $feed->addAuthor(array('name' => $modifier, 'uri' => $modifierlink)); // feedの更新日時(生成された時間なので、この実装で問題ない) $feed->setDateModified(time()); $feed->setDateCreated(time()); // Feedの生成 $feed->setGenerator(S_APPNAME, S_VERSION, 'http://pukiwiki.logue.be/'); if (empty($page)) { // feedのアドレス // ※Zend\Feedの仕様上、&が自動的に&に変更されてしまう $feed->setFeedLink(Router::get_cmd_uri('feed') . '&type=atom', 'atom'); $feed->setFeedLink(Router::get_cmd_uri('feed'), 'rss'); // PubSubHubbubの送信 foreach (Ping::$pubsubhubbub_server as $uri) { $feed->addHub($uri); } } else { $r_page = rawurlencode($page); $feed->setFeedLink(Router::get_cmd_uri('feed') . '&type=atom&refer=' . $r_page, 'atom'); $feed->setFeedLink(Router::get_cmd_uri('feed') . '&refer=' . $r_page, 'rss'); } $i = 0; // エントリを取得 foreach (self::get() as $_page => $time) { // ページ名が指定されていた場合、そのページより下位の更新履歴のみ出力 if (!empty($page) && strpos($_page, $page . '/') === false) { continue; } $wiki = Factory::Wiki($_page); if ($wiki->isHidden()) { continue; } $entry = $feed->createEntry(); // ページのタイトル $entry->setTitle($wiki->title()); // ページのアドレス $entry->setLink($wiki->uri()); // ページの更新日時 $entry->setDateModified($wiki->time()); // ページの要約 $entry->setDescription($wiki->description(self::FEED_ENTRY_DESCRIPTION_LENGTH)); // 項目を追加 $feed->addEntry($entry); $i++; if ($i >= self::RECENT_MAX_SHOW_PAGES) { break; } } if (empty($page)) { // キャッシュに保存 $cache['wiki']->setItem(self::FEED_CACHE_NAME, $feed); } } flush(); $headers = Header::getHeaders($content_type); Header::writeResponse($headers, 200, $feed->export($type)); //header('Content-Type: ' . $content_type); //echo $body; exit; }
/** * 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; }
/** * Handle rss page */ public function rssAction() { // set page and max blog per page $page = 1; $maxPage = 10; // get blog entries $blogList = $this->getBlogService()->fetchList($page, $maxPage); // create feed $feed = new Feed(); $feed->setTitle('Luigis Pizza-Blog'); $feed->setFeedLink('http://luigis-pizza.local/blog/rss', 'atom'); $feed->addAuthor(array('name' => 'Luigi Bartoli', 'email' => '*****@*****.**', 'uri' => 'http://luigis-pizza.local')); $feed->setDescription('Luigis Pizza-Blog Beiträge'); $feed->setLink('http://luigis-pizza.local'); $feed->setDateModified(time()); // add blog entries foreach ($blogList as $blog) { $entry = $feed->createEntry(); $entry->setTitle($blog->getTitle()); $entry->setLink('http://luigis-pizza.local/blog/' . $blog->getUrl()); $entry->setDescription($blog->getContent()); $entry->setDateCreated(strtotime($blog->getCdate())); $feed->addEntry($entry); } // create feed model $feedmodel = new FeedModel(); $feedmodel->setFeed($feed); return $feedmodel; }
/** * 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(); } }