Пример #1
0
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;
}
Пример #2
0
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;
}
Пример #3
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;
}
Пример #4
0
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;
}