diff --git a/_test/tests/inc/common_saveWikiText.test.php b/_test/tests/inc/common_saveWikiText.test.php index 800e20952be1f760d6195fa62b6a0a796aedf72e..2d4e855d0412dde5f1ae251f5d8c9298ea5444b1 100644 --- a/_test/tests/inc/common_saveWikiText.test.php +++ b/_test/tests/inc/common_saveWikiText.test.php @@ -23,6 +23,7 @@ class common_saveWikiText_test extends DokuWikiTest { $revinfo = $pagelog->getRevisionInfo($revisions[0]); $this->assertEquals('first save', $revinfo['sum']); $this->assertEquals(DOKU_CHANGE_TYPE_CREATE, $revinfo['type']); + $this->assertEquals(10, $revinfo['sizechange']); sleep(1); // wait for new revision ID @@ -36,7 +37,7 @@ class common_saveWikiText_test extends DokuWikiTest { $this->assertEquals(1, count($revisions)); // update the page with new text - saveWikiText($page, 'teststring2', 'third save', false); + saveWikiText($page, 'teststring2long', 'third save', false); clearstatcache(false, $file); $newmod = filemtime($file); $this->assertNotEquals($lastmod, $newmod); @@ -48,11 +49,12 @@ class common_saveWikiText_test extends DokuWikiTest { $revinfo = $pagelog->getRevisionInfo($revisions[0]); $this->assertEquals('third save', $revinfo['sum']); $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']); + $this->assertEquals(5, $revinfo['sizechange']); sleep(1); // wait for new revision ID // add a minor edit (unauthenticated) - saveWikiText($page, 'teststring3', 'fourth save', true); + saveWikiText($page, 'teststring3long', 'fourth save', true); clearstatcache(false, $file); $newmod = filemtime($file); $this->assertNotEquals($lastmod, $newmod); @@ -64,6 +66,7 @@ class common_saveWikiText_test extends DokuWikiTest { $revinfo = $pagelog->getRevisionInfo($revisions[0]); $this->assertEquals('fourth save', $revinfo['sum']); $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']); + $this->assertEquals(0, $revinfo['sizechange']); sleep(1); // wait for new revision ID @@ -81,6 +84,7 @@ class common_saveWikiText_test extends DokuWikiTest { $revinfo = $pagelog->getRevisionInfo($revisions[0]); $this->assertEquals('fifth save', $revinfo['sum']); $this->assertEquals(DOKU_CHANGE_TYPE_MINOR_EDIT, $revinfo['type']); + $this->assertEquals(-4, $revinfo['sizechange']); sleep(1); // wait for new revision ID @@ -95,6 +99,7 @@ class common_saveWikiText_test extends DokuWikiTest { $revinfo = $pagelog->getRevisionInfo($revisions[0]); $this->assertEquals('sixth save', $revinfo['sum']); $this->assertEquals(DOKU_CHANGE_TYPE_DELETE, $revinfo['type']); + $this->assertEquals(-11, $revinfo['sizechange']); sleep(1); // wait for new revision ID @@ -114,6 +119,7 @@ class common_saveWikiText_test extends DokuWikiTest { $this->assertEquals('seventh save', $revinfo['sum']); $this->assertEquals(DOKU_CHANGE_TYPE_REVERT, $revinfo['type']); $this->assertEquals($REV, $revinfo['extra']); + $this->assertEquals(11, $revinfo['sizechange']); $REV = ''; sleep(1); // wait for new revision ID @@ -136,10 +142,12 @@ class common_saveWikiText_test extends DokuWikiTest { $revinfo = $pagelog->getRevisionInfo($revisions[0]); $this->assertEquals('eigth save', $revinfo['sum']); $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']); + $this->assertEquals(0, $revinfo['sizechange']); $revinfo = $pagelog->getRevisionInfo($revisions[1]); $this->assertEquals('external edit', $revinfo['sum']); $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']); + $this->assertEquals(0, $revinfo['sizechange']); } } diff --git a/inc/common.php b/inc/common.php index 92e475cbec2d5c0582bdd6820b4336ff18b0bad7..bbbeefc6e02e2dc30274233c60813e35d774a24c 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1214,7 +1214,13 @@ function detectExternalEdit($id) { saveOldRevision($id); // add a changelog entry if this edit came from outside dokuwiki if($old > $oldRev) { - $filesize_old = filesize(wikiFN($id, $oldRev)); + $lastfileinrevisions = wikiFN($id, $oldRev); + $revinfo = $pagelog->getRevisionInfo($oldRev); + if(empty($oldRev) || !file_exists($lastfileinrevisions) || $revinfo['changeType'] == DOKU_CHANGE_TYPE_DELETE) { + $filesize_old = 0; + } else { + $filesize_old = io_getSizeFile($lastfileinrevisions); + } $filesize_new = filesize($file); $sizechange = $filesize_new - $filesize_old; @@ -1292,7 +1298,10 @@ function saveWikiText($id, $text, $summary, $minor = false) { detectExternalEdit($id); - if($svdta['changeType'] == DOKU_CHANGE_TYPE_CREATE) { + if( + $svdta['changeType'] == DOKU_CHANGE_TYPE_CREATE || + ($svdta['changeType'] == DOKU_CHANGE_TYPE_REVERT && !file_exists($svdta['file'])) + ) { $filesize_old = 0; } else { $filesize_old = filesize($svdta['file']);