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; }