public function testWriter() { $writer = new Rss20(); $writer->title = 'My site'; $writer->site_url = 'http://boo/'; $writer->feed_url = 'http://boo/feed.atom'; $writer->author = array('name' => 'Me', 'url' => 'http://me', 'email' => 'me@here'); $writer->items[] = array('title' => 'My article 1', 'updated' => strtotime('-2 days'), 'url' => 'http://foo/bar', 'summary' => 'Super summary', 'content' => '<p>content</p>'); $writer->items[] = array('title' => 'My article 2', 'updated' => strtotime('-1 day'), 'url' => 'http://foo/bar2', 'summary' => 'Super summary 2', 'content' => '<p>content 2 © 2015</p>', 'author' => array('name' => 'Me too')); $writer->items[] = array('title' => 'My article 3', 'url' => 'http://foo/bar3'); $generated_output = $writer->execute(); $expected_output = '<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> <generator>PicoFeed (https://github.com/fguillot/picoFeed)</generator> <title>My site</title> <description>My site</description> <pubDate>' . date(DATE_RSS) . '</pubDate> <atom:link href="http://boo/feed.atom" rel="self" type="application/rss+xml"/> <link>http://boo/</link> <webMaster>me@here (Me)</webMaster> <item> <title>My article 1</title> <link>http://foo/bar</link> <guid isPermaLink="true">http://foo/bar</guid> <pubDate>' . date(DATE_RSS, strtotime('-2 days')) . '</pubDate> <description>Super summary</description> <content:encoded><![CDATA[<p>content</p>]]></content:encoded> </item> <item> <title>My article 2</title> <link>http://foo/bar2</link> <guid isPermaLink="true">http://foo/bar2</guid> <pubDate>' . date(DATE_RSS, strtotime('-1 day')) . '</pubDate> <description>Super summary 2</description> <content:encoded><![CDATA[<p>content 2 © 2015</p>]]></content:encoded> </item> <item> <title>My article 3</title> <link>http://foo/bar3</link> <guid isPermaLink="true">http://foo/bar3</guid> <pubDate>' . date(DATE_RSS) . '</pubDate> </item> </channel> </rss> '; $this->assertEquals($expected_output, $generated_output); }
} return array(); } function url_to_filename($url) { $parsed = parse_url($url); if (!$parsed['path']) { return false; } return basename($parsed['path']); } $feed_url = urldecode($_GET['url']); $reader = new Reader(); $resource = $reader->download($feed_url); $parser = $reader->getParser($resource->getUrl(), $resource->getContent(), $resource->getEncoding()); $feed = $parser->execute(); $image_items = array(); foreach ($feed->items as $item) { $image_urls = extract_image_urls($item->content); foreach ($image_urls as $url) { $image_items[] = array('title' => url_to_filename($url), 'updated' => $item->date->getTimestamp(), 'url' => $url, 'summary' => "<img src=\"{$url}\">"); } } $writer = new Rss20(); $writer->title = $feed->title; $writer->site_url = $feed->site_url; $writer->feed_url = "http://{$_SERVER['HTTP_HOST']}{$_SERVER['SCRIPT_NAME']}/?url=" . urlencode($feed_url); $writer->description = "{$feed->description}\nModified by Splitch (http://{$_SERVER['HTTP_HOST']})"; $writer->items = $image_items; header('content-type: application/rss+xml'); echo $writer->execute();