From: Reini U. <ru...@us...> - 2007-07-01 09:17:45
|
Update of /cvsroot/phpwiki/phpwiki/lib/plugin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21190/plugin Modified Files: RecentChanges.php Log Message: add ATOM support, a very questionable format Index: RecentChanges.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/plugin/RecentChanges.php,v retrieving revision 1.118 retrieving revision 1.119 diff -u -2 -b -p -d -r1.118 -r1.119 --- RecentChanges.php 2 Jun 2007 18:24:59 -0000 1.118 +++ RecentChanges.php 1 Jul 2007 09:17:45 -0000 1.119 @@ -836,4 +836,67 @@ extends _RecentChanges_RssFormatter { } +/** Explicit application/atom+xml Content-Type + * A weird, questionable format + */ +class _RecentChanges_AtomFormatter +extends _RecentChanges_RssFormatter { + + function format ($changes) { + global $request; + include_once('lib/RssWriter.php'); + $rss = new AtomFeed; + + // "channel" is called "feed" in atom + $rc_url = WikiURL($request->getArg('pagename'), false, 'absurl'); + $feed_props = array('title' => WIKI_NAME, + 'link' => array('rel'=>"alternate", + 'type'=>"text/html", + 'href' => $rc_url), + 'id' => md5($rc_url), + 'modified' => Iso8601DateTime(time()), + 'generator' => 'PhpWiki-'.PHPWIKI_VERSION, + 'tagline' => ''); + $rss->feed($feed_props); + $first = true; + while ($rev = $changes->next()) { + // enforce view permission + if (mayAccessPage('view', $rev->_pagename)) { + $props = $this->item_properties($rev); + $rss->addItem($props, + false, + $this->pageURI($rev)); + if ($first) + $this->setValidators($rev); + $first = false; + } + } + + $request->discardOutput(); + $rss->finish(); + printf("\n<!-- Generated by PhpWiki-%s:\n%s-->\n", PHPWIKI_VERSION, $GLOBALS['RCS_IDS']); + // Flush errors in comment, otherwise it's invalid XML. + global $ErrorManager; + if (($errors = $ErrorManager->getPostponedErrorsAsHTML())) + printf("\n<!-- PHP Warnings:\n%s-->\n", AsXML($errors)); + + $request->finish(); // NORETURN!!!! + } + + function item_properties ($rev) { + $page = $rev->getPage(); + $pagename = $page->getName(); + return array( 'title' => $pagename, + 'link' => array('rel' => 'alternate', + 'type' => 'text/html', + 'href' => $this->pageURL($rev)), + 'summary' => $this->summary($rev), + 'modified' => $this->time($rev)."Z", + 'issued' => $this->time($rev), + 'created' => $this->time($rev)."Z", + 'author' => new XmlElement('author', new XmlElement('name', $rev->get('author'))) + ); + } +} + /** * Filter by non-empty @@ -1062,4 +1125,6 @@ extends WikiPlugin elseif ($format == 'rss2') $fmt_class = '_RecentChanges_Rss2Formatter'; + elseif ($format == 'atom') + $fmt_class = '_RecentChanges_AtomFormatter'; elseif ($format == 'rss091') { include_once "lib/RSSWriter091.php"; @@ -1161,4 +1226,7 @@ class DayButtonBar extends HtmlElement { // $Log$ +// Revision 1.119 2007/07/01 09:17:45 rurban +// add ATOM support, a very questionable format +// // Revision 1.118 2007/06/02 18:24:59 rurban // global WikiTheme |