Tweaking RSS; add dates, etc.
authorBrion Vibber <brion@users.mediawiki.org>
Fri, 5 Mar 2004 11:21:43 +0000 (11:21 +0000)
committerBrion Vibber <brion@users.mediawiki.org>
Fri, 5 Mar 2004 11:21:43 +0000 (11:21 +0000)
includes/Feed.php
includes/QueryPage.php

index e5c7c18..248ba62 100644 (file)
@@ -9,11 +9,13 @@ class FeedItem {
        var $Title = "Wiki";
        var $Description = "";
        var $Url = "";
+       var $Date = "";
        
-       function FeedItem( $Title, $Description, $Url ) {
+       function FeedItem( $Title, $Description, $Url, $Date = "" ) {
                $this->Title = $Title;
                $this->Description = $Description;
                $this->Url = $Url;
+               $this->Date = $Date;
        }
        
        /* Static... */
@@ -38,6 +40,9 @@ class FeedItem {
                global $wgLanguageCode;
                return $wgLanguageCode;
        }
+       function getDate() {
+               return $this->Date;
+       }
 }
 
 class ChannelFeed extends FeedItem {
@@ -54,15 +59,22 @@ class ChannelFeed extends FeedItem {
 }
 
 class RSSFeed extends ChannelFeed {
+       function formatTime( $ts ) {
+               return gmdate( "D, d M Y H:i:s T", wfTimestamp2Unix( $ts ) );
+       }
+       
        function outHeader() {
+               global $wgVersion;
+               
                print '<' . '?xml version="1.0" encoding="utf-8"?' . ">\n";
-               ?><!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
+               ?><rss version="2.0">
        <channel>
                <title><?php print $this->getTitle() ?></title>
                <link><?php print $this->getUrl() ?></link>
                <description><?php print $this->getDescription() ?></description>
                <language><?php print $this->getLanguage() ?></language>
+               <generator>MediaWiki <?php print $wgVersion ?></generator>
+               <lastBuildDate><?php print $this->formatTime( wfTimestampNow() ) ?></lastBuildDate>
 <?php
        }
        
@@ -72,6 +84,8 @@ class RSSFeed extends ChannelFeed {
                        <title><?php print $item->getTitle() ?></title>
                        <link><?php print $item->getUrl() ?></link>
                        <description><?php print $item->getDescription() ?></description>
+                       <?php if( $item->getDate() ) { ?><pubDate><?php print $this->formatTime( $item->getDate() ) ?></pubDate><?php } ?>
+
                </item>
 <?php
        }
index d19390f..ca99df6 100644 (file)
@@ -118,21 +118,30 @@ class QueryPage {
        }
 
        # Override for custom handling. If the titles/links are ok, just do feedItemDesc()
-       function feedResult( $result ) {
-               if( isset( $result->cur_title ) ) {
-                       $title = Title::MakeTitle( $result->cur_namespace, $result->cur_title );
-               } elseif( isset( $result->old_title ) ) {
-                       $title = Title::MakeTitle( $result->old_namespace, $result->old_title );
-               } elseif( isset( $result->rc_title ) ) {
-                       $title = Title::MakeTitle( $result->rc_namespace, $result->rc_title );
+       function feedResult( $row ) {
+               if( isset( $row->cur_title ) ) {
+                       $title = Title::MakeTitle( $row->cur_namespace, $row->cur_title );
+               } elseif( isset( $row->old_title ) ) {
+                       $title = Title::MakeTitle( $row->old_namespace, $row->old_title );
+               } elseif( isset( $row->rc_title ) ) {
+                       $title = Title::MakeTitle( $row->rc_namespace, $row->rc_title );
                } else {
                        return NULL;
                }
                if( $title ) {
+                       $date = "";
+                       if( isset( $row->cur_timestamp ) ) {
+                               $date = $row->cur_timestamp;
+                       } elseif( isset( $row->old_timestamp ) ) {
+                               $date = $row->old_timestamp;
+                       } elseif( isset( $row->rc_cur_timestamp ) ) {
+                               $date = $row->rc_cur_timestamp;
+                       }
                        return new FeedItem(
                                $title->getText(),
-                               $this->feedItemDesc( $result ),
-                               wfFullUrl( $title->getUrl() ) );
+                               $this->feedItemDesc( $row ),
+                               wfFullUrl( $title->getUrl() ) ,
+                               $date);
                } else {
                        return NULL;
                }