function xml($request, $payload, $kwargs = array()) { $res = new Response(); $articles = ''; $comments = ''; $lastUpdate = false; if ($payload['articles']) { $articles = $payload['articles']->serialize('atom'); $lastUpdate = $payload['articles']->peekFront()->created; } if ($payload['comments']) { $comments = $payload['comments']->serialize('atom'); } if ($payload['comments'] && $payload['comments']->peekFront()->created > $lastUpdate) { $lastUpdate = $payload['comments']->peekFront()->created; } $lastUpdate = date('c', $lastUpdate); if ($payload['articles'] && !$payload['comments']) { $url = URL::linkTo('gryphon:recent/article', true); } elseif ($payload['comments'] && !$payload['articles']) { $url = URL::linkTo('gryphon:recent/comment', true); } else { $url = URL::linkTo('gryphon:recent', true); } $res->content = <<<ATOM <?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> \t<title>State News Recent Items</title> \t<link href="{$url}.xml" rel="self" /> \t<id>{$url}.xml</id> \t<updated>{$lastUpdate}</updated> \t{$articles} \t{$comments} </feed> ATOM; $res->setHeader('Content-Type', 'application/atom+xml'); return $res; }
function xml($request, $payload, $kwargs = array()) { $res = new Response(); $entries = $payload['articles']->serialize('atom'); $lastUpdate = date('c', $payload['articles']->peekFront()->created); $res->content = <<<ATOM <?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> \t<title>State News {$payload['section']->name}</title> \t<link href="{$payload['section']->url}.xml" rel="self" /> \t<id>{$payload['section']->url}.xml</id> \t<updated>{$lastUpdate}</updated> \t{$entries} </feed> ATOM; $res->setHeader('Content-Type', 'application/atom+xml'); return $res; }
function xml($request, $payload, $kwargs = array()) { $res = new Response(); if ($payload['blogs']) { return main($request, $payload, $kwargs); } if ($payload['blog'] && $payload['posts']) { $entries = $payload['posts']->serialize('atom'); $lastUpdate = date('c', $payload['blog']->modified); $res->content = <<<ATOM <?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> \t<title>{$payload['blog']->name}</title> \t<link href="{$payload['blog']->url}.xml" rel="self" /> \t<id>{$payload['blog']->url}.xml</id> \t<updated>{$lastUpdate}</updated> \t{$entries} </feed> ATOM; } else { // gather up the comments... yo $comments = \foundry\model::init('gryphon:comment')->where('self:item_type = :ty and self:item_id = :iid')->where('self:status = 1')->bind(array(':ty' => 'blogPost', ':iid' => $payload['post']->uid))->order('self:created asc')->find(); $entries = $comments->serialize('atom'); $lastUpdate = date('c', $comments->peekBack()->created); $res->content = <<<ATOM <?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> \t<title>Comment feed for {$payload['post']->headline}</title> \t<link href="{$payload['post']->url}.xml" rel="self" /> \t<id>{$payload['post']->url}.xml</id> \t<updated>{$lastUpdate}</updated> \t{$entries} </feed> ATOM; } $res->setHeader('Content-Type', 'application/atom+xml'); return $res; }
function main($request, $payload, $kwargs = array()) { $response = new Response(); $feed = $payload['feed']; $items = $payload['items']; if ($feed->type == 'atom') { $entries = $items->serialize('atom'); $lastUpdate = date('c', $items->peekBack()->created); $link = URL::linkTo('/', true); $response->content = <<<ATOM <?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> \t<title>{$feed->title}</title> \t<link href="{$link}" rel="self" /> \t<id>{$feed->url}</id> \t<updated>{$lastUpdate}</updated> \t{$entries} </feed> ATOM; $response->setHeader('Content-Type', 'application/atom+xml'); } elseif ($feed->type == 'rss') { $entries = $items->serialize('rss'); $lastUpdate = date('r', $items->peekBack()->created); $buildDate = date('r', time()); $link = URL::linkTo('/', true); $v = sprintf('Gryphon %s', \foundry\config::get('gryphon:version')); $c = date('Y') . ' ' . Conf::get('publication:name'); $response->content = <<<RSS <?xml version="1.0" encoding="UTF-8"?> <rss version="2.0"> \t<channel> \t\t<title>{$feed->title}</title> \t\t<link>{$link}</link> \t\t<pubDate>{$buildDate}</pubDate> \t\t<lastBuildDate>{$lastUpdate}</lastBuildDate> \t\t<generator>{$v}</generator> \t\t<copyright>{$c}</copyright> \t\t<description>{$feed->description}</description> \t\t{$entries} \t</channel> </rss> RSS; $response->setHeader('Content-Type', 'application/rss+xml'); } elseif ($feed->type == 'podcast') { $entries = $items->serialize('podcast'); $lastUpdate = date('r', $items->peekBack()->created); $buildDate = date('r', time()); $link = URL::linkTo('/', true); $v = sprintf('Gryphon %s', \foundry\config::get('gryphon:version')); $c = date('Y') . ' ' . Conf::get('publication:name'); $i = ''; if ($feed->media->length) { $image = $feed->media->pop(); $i = sprintf('<itunes:image href="%s" />', $image->url); } $response->content = <<<RSS <?xml version="1.0" encoding="UTF-8"?> <rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"> \t<channel> \t\t<title>{$feed->title}</title> \t\t<link>{$link}</link> \t\t<pubDate>{$buildDate}</pubDate> \t\t<lastBuildDate>{$lastUpdate}</lastBuildDate> \t\t<generator>{$v}</generator> \t\t<description>{$feed->description}</description> \t\t<copyright>{$c}</copyright> \t\t<itunes:summary>{$feed->description}</itunes:summary> \t\t{$i} \t\t{$entries} \t</channel> </rss> RSS; $response->setHeader('Content-Type', 'application/rss+xml'); } return $response; }