Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}