Ejemplo n.º 1
0
 /**
  * @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;
 }
Ejemplo n.º 4
0
 public function testAddAuthorThrowsExceptionIfNameOmittedFromArray()
 {
     $writer = new Writer\Feed();
     try {
         $writer->addAuthor(array('uri' => 'notauri'));
         $this->fail();
     } catch (Writer\Exception\InvalidArgumentException $e) {
     }
 }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 6
0
 /**
  * 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;
 }
Ejemplo n.º 7
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.º 8
0
 /**
  * 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;
 }
Ejemplo n.º 9
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();
     }
 }