From 0f13c836f0ee71a3188a775b9ea64025e10d38f5 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag <klapinklapin@gmail.com> Date: Thu, 21 Nov 2013 18:02:12 +0100 Subject: [PATCH] Improved isCurrentRevision(), tests included --- .../changelog_getrelativerevision.test.php | 35 +++++++++++++++++++ inc/changelog.php | 7 ++-- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/_test/tests/inc/changelog_getrelativerevision.test.php b/_test/tests/inc/changelog_getrelativerevision.test.php index 7cd081eab..588c424b1 100644 --- a/_test/tests/inc/changelog_getrelativerevision.test.php +++ b/_test/tests/inc/changelog_getrelativerevision.test.php @@ -270,4 +270,39 @@ class changelog_getrelativerevision_test extends DokuWikiTest { $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false); $this->assertEquals($revexpected, $revfound); } + + function test_iscurrentpagerevision() { + $rev = 1385051947; + $currentexpected = true; + + //set a known timestamp + touch(wikiFN($this->pageid), $rev); + + $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192); + + $current = $pagelog->isCurrentRevision($rev, $media = false); + $this->assertEquals($currentexpected, $current); + } + + function test_isnotcurrentpagerevision() { + $rev = 1385051947; + $not_current_rev = $rev - 1; + $currentexpected = false; + + //set a known timestamp + touch(wikiFN($this->pageid), $rev); + + $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192); + $current = $pagelog->isCurrentRevision($not_current_rev, $media = false); + $this->assertEquals($currentexpected, $current); + } + + function test_notexistingcurrentpage() { + $rev = 1385051947; + $currentexpected = false; + + $pagelog = new PageRevisionLog('nonexistingpage', $chunk_size = 8192); + $current = $pagelog->isCurrentRevision($rev, $media = false); + $this->assertEquals($currentexpected, $current); + } } \ No newline at end of file diff --git a/inc/changelog.php b/inc/changelog.php index de26fdf6a..722365853 100644 --- a/inc/changelog.php +++ b/inc/changelog.php @@ -760,11 +760,12 @@ class PageRevisionLog { /** * Check whether given revision is the current page * - * @param int $rev timestamp of current page + * @param int $rev timestamp of current page + * @param bool $media look for media? * @return bool true if $rev is current revision, otherwise false */ - public function isCurrentRevision($rev){ - return isset($INFO['meta']['last_change']) && $rev == $INFO['meta']['last_change']['date']; + public function isCurrentRevision($rev, $media = false) { + return $rev == @filemtime($media ? mediaFN($this->id) : wikiFN($this->id)); } } -- GitLab