diff --git a/_test/tests/inc/changelog_getlastrevisionat.test.php b/_test/tests/inc/changelog_getlastrevisionat.test.php index 84b185ce85658329375dd33599d6d888368530e9..d60c0f2fdc7b23f70043e5d6be4f6632a2d2abec 100644 --- a/_test/tests/inc/changelog_getlastrevisionat.test.php +++ b/_test/tests/inc/changelog_getlastrevisionat.test.php @@ -124,4 +124,41 @@ class changelog_getlastrevisionat_test extends DokuWikiTest { $current = $pagelog->getLastRevisionAt($rev); $this->assertEquals($currentexpected, $current); } -} \ No newline at end of file + + /** + * test get correct revision on deleted media + * + */ + function test_deletedimage() { + global $conf; + global $AUTH_ACL; + + //we need to have a user with AUTH_DELETE rights + //save settings + $oldSuperUser = $conf['superuser']; + $oldUseacl = $conf['useacl']; + $oldRemoteUser = $_SERVER['REMOTE_USER']; + + $conf['superuser'] = 'admin'; + $conf['useacl'] = 1; + $_SERVER['REMOTE_USER'] = 'admin'; + + $image = 'wiki:imageat.png'; + + $ret = copy(mediaFn('wiki:kind_zu_katze.png'),mediaFn($image)); + + $revexpected = @filemtime(mediaFn($image)); + $rev = $revexpected + 10; + + $ret = media_delete($image, 0); + + $medialog = new MediaChangelog($image); + $current = $medialog->getLastRevisionAt($rev); + $this->assertEquals($revexpected, $current); + + //restore settings + $_SERVER['REMOTE_USER'] = $oldRemoteUser; + $conf['superuser'] = $oldSuperUser; + $conf['useacl'] = $oldUseacl; + } +} diff --git a/inc/changelog.php b/inc/changelog.php index 65451b3edff624098a352ca8d7a5876c2150dbbe..d77b0180a8fd96b26d19e7d4e2372b3983634b04 100644 --- a/inc/changelog.php +++ b/inc/changelog.php @@ -881,7 +881,7 @@ abstract class ChangeLog { */ function getLastRevisionAt($date_at){ //requested date_at(timestamp) younger or equal then modified_time($this->id) => load current - if($date_at >= @filemtime($this->getFilename())) { + if(file_exists($this->getFilename()) && $date_at >= @filemtime($this->getFilename())) { return ''; } else if ($rev = $this->getRelativeRevision($date_at+1, -1)) { //+1 to get also the requested date revision return $rev;