function main($request, $payload, $kwargs = array()) { $ext = 'tpl'; if ($request->isMobile() && $request->clientWantsMobile) { $ext = 'mbl'; } $str = sprintf('%s/%s.%s', $request->controller, $request->action, $ext); // the main controller can return a page, if requested // see \gryphon\controller\main::page() if (isset($payload['page'])) { $str = sprintf('%s/%s.%s', $request->controller, $payload['page'], $ext); } // check for breaking news $payload['breaking'] = false; $breaking = M::init('article')->cache(false)->where('self:status = 1')->order('self:created desc')->limit(1)->findByTags(M::init('tag')->findByName('breaking'))->pop(); if ($breaking && $breaking->uid) { $payload['breaking'] = $breaking; } $payload['suppressLeaderBoard'] = true; $tpl = new Template($str); if ($tpl->didFindTemplate()) { $res = new Response(); $res->content = $tpl->render($payload); } else { $res = new \foundry\response\redirect(URL::linkTo('/'), true); } return $res; }
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 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; }