From 1512eb894e36e3bccfe8e99736bb9d33ebe75beb Mon Sep 17 00:00:00 2001
From: Michael Hamann <michael@content-space.de>
Date: Fri, 11 Jan 2013 01:15:09 +0100
Subject: [PATCH] Fix content of pages with incorrect metadata in list feeds

Before this change the last modification time was taken from metadata
and then the revision that was specified there was loaded from the
attic. Now revisions from attic are only loaded when the page has been
modified more recently and the date is normally the last modification
time of the page source. This was a problem when the most recent change
was an external edit, then an older revision was shown in the feed.
---
 feed.php | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/feed.php b/feed.php
index 9e5c5c6b5..7803982b8 100644
--- a/feed.php
+++ b/feed.php
@@ -209,12 +209,14 @@ function rss_buildItems(&$rss, &$data, $opt) {
             // add date
             if($ditem['date']) {
                 $date = $ditem['date'];
+            } elseif ($ditem['media']) {
+                $date = @filemtime(mediaFN($id));
+            } elseif (@file_exists(wikiFN($id))) {
+                $date = @filemtime(wikiFN($id));
             } elseif($meta['date']['modified']) {
                 $date = $meta['date']['modified'];
-            } else if ($ditem['media']) {
-                $date = @filemtime(mediaFN($id));
             } else {
-                $date = @filemtime(wikiFN($id));
+                $date = 0;
             }
             if($date) $item->date = date('r', $date);
 
@@ -350,7 +352,11 @@ function rss_buildItems(&$rss, &$data, $opt) {
                             $content = '';
                         }
                     } else {
-                        $content = p_wiki_xhtml($id, $date, false);
+                        if (@filemtime(wikiFN($id)) === $date) {
+                            $content = p_wiki_xhtml($id, '', false);
+                        } else {
+                            $content = p_wiki_xhtml($id, $date, false);
+                        }
                         // no TOC in feeds
                         $content = preg_replace('/(<!-- TOC START -->).*(<!-- TOC END -->)/s', '', $content);
 
-- 
GitLab