<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in PageFile.php</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2025</copyright>
    <generator>Java</generator><item>
        <title>01e8d739c8b53aeb1d0a653331d65eb1f8394002 - refactor(changelog): persist external-edit detection on first read</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/File/PageFile.php#01e8d739c8b53aeb1d0a653331d65eb1f8394002</link>
        <description>refactor(changelog): persist external-edit detection on first readThis addresses the flaky test that makes tests randomly fail (mostly onwindows runners).The flake in common_saveWikiText_test::test_savesequence5 came fromthis line in ChangeLog::getCurrentRevisionInfo():    &apos;date&apos; =&gt; max($lastRev + 1, time() - 1)The synthesized &quot;external delete&quot; entry was kept in memory only andonly persisted later, when saveWikiText next called detectExternalEdit.That meant the formula was evaluated twice on different ChangeLoginstances &#8212; once during the test&apos;s inspection, and again during thefollowing saveWikiText &#8212; and the two evaluations could pick differentseconds depending on how long the surrounding I/O took. The testcached the first result in $expectExternal and asserted it against theon-disk entry written during the second call. On the slower Windowsrunner the second call sometimes crossed a second boundary, producingthe off-by-one date mismatch.The questions I had was, why are we persisting external file deletions(or edits) only when a page is saved when we are obviously alreadydetecting it earlier during the changelog read already?Instead of recording the external delete at the time a new page iswritten, it makes sense to record it as soon as we detect it (when thechangelog is requested by a user or a bot). This will make the recodedtimestamp closer to the actual deletion.This patch refactors the changelog accordingly, but still tries to beminimal invasive (I think the changelog handling would need much morerefactoring, but that&apos;s beyond the scope of this change).To enable proper locking (when logging an external edit and copyingthe attic file), locking had to be moved to the Changelog class,duplicating some code of io_saveFile.PageFile::detectExternalEdit() and the deprecated procedural wrapperdetectExternalEdit() in inc/common.php are removed. A codesearch.dokuwiki.orgcheck confirmed no plugin calls the method directly; the only externalcaller of the procedural function is the farmsync plugin, which needsa parallel update.

            List of files:
            /dokuwiki/inc/File/PageFile.php</description>
        <pubDate>Sat, 25 Apr 2026 15:30:23 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>90fb952c4c30c09c8446076ba05991c89a3f0b01 - code style: operator spacing</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/File/PageFile.php#90fb952c4c30c09c8446076ba05991c89a3f0b01</link>
        <description>code style: operator spacing

            List of files:
            /dokuwiki/inc/File/PageFile.php</description>
        <pubDate>Thu, 31 Aug 2023 20:38:07 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>7d34963b3e75ea04c63ec066a6b7a692e123cb53 - coding style: control flow line breaks</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/File/PageFile.php#7d34963b3e75ea04c63ec066a6b7a692e123cb53</link>
        <description>coding style: control flow line breaks

            List of files:
            /dokuwiki/inc/File/PageFile.php</description>
        <pubDate>Thu, 31 Aug 2023 13:04:10 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>8c7c53b0321a3cd3116b8d3b2ad27863a38dece7 - codestyle adjustments: class declaration braces</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/File/PageFile.php#8c7c53b0321a3cd3116b8d3b2ad27863a38dece7</link>
        <description>codestyle adjustments: class declaration braces

            List of files:
            /dokuwiki/inc/File/PageFile.php</description>
        <pubDate>Wed, 30 Aug 2023 15:05:28 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>445164b22323486c135f5d94a4a5f1cf160655e7 - Apply rector fixes to inc/File</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/File/PageFile.php#445164b22323486c135f5d94a4a5f1cf160655e7</link>
        <description>Apply rector fixes to inc/File

            List of files:
            /dokuwiki/inc/File/PageFile.php</description>
        <pubDate>Tue, 29 Aug 2023 12:30:21 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>79a2d7845d5e5e48fe3be8f192717de9294aaba5 - import classes, replace dbglog, simplify, remove unused statements, and other warnings from IntelliJ</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/File/PageFile.php#79a2d7845d5e5e48fe3be8f192717de9294aaba5</link>
        <description>import classes, replace dbglog, simplify, remove unused statements, and other warnings from IntelliJupdate phpdocs,rename dokuwiki/Ui/Draft to PageDraft

            List of files:
            /dokuwiki/inc/File/PageFile.php</description>
        <pubDate>Wed, 05 Jan 2022 23:59:00 +0000</pubDate>
        <dc:creator>Gerrit Uitslag &lt;klapinklapin@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>97b27cd4846ab1337c838726c93f8495efd33bb3 - fix undefined variable</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/File/PageFile.php#97b27cd4846ab1337c838726c93f8495efd33bb3</link>
        <description>fix undefined variable

            List of files:
            /dokuwiki/inc/File/PageFile.php</description>
        <pubDate>Mon, 29 Nov 2021 01:28:54 +0000</pubDate>
        <dc:creator>Satoshi Sahara &lt;sahara.satoshi@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>7fba736b01498c2e738ca032b1b76fcd50dd2009 - update metadata of changed page in PageFile  class</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/File/PageFile.php#7fba736b01498c2e738ca032b1b76fcd50dd2009</link>
        <description>update metadata of changed page in PageFile  class

            List of files:
            /dokuwiki/inc/File/PageFile.php</description>
        <pubDate>Sun, 28 Nov 2021 03:08:08 +0000</pubDate>
        <dc:creator>Satoshi Sahara &lt;sahara.satoshi@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>36454bb57afad7e61b2bbe3c09f0647549fa65bc - remove page key from event data prior to return</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/File/PageFile.php#36454bb57afad7e61b2bbe3c09f0647549fa65bc</link>
        <description>remove page key from event data prior to return$data[&apos;page&apos;] is object $this, it is not possible to access the object after destructed.

            List of files:
            /dokuwiki/inc/File/PageFile.php</description>
        <pubDate>Sat, 27 Nov 2021 04:52:37 +0000</pubDate>
        <dc:creator>Satoshi Sahara &lt;sahara.satoshi@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>666bc21d99e4980d910005abf0a399fad1b33024 - fix Undefined variable $id</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/File/PageFile.php#666bc21d99e4980d910005abf0a399fad1b33024</link>
        <description>fix Undefined variable $id

            List of files:
            /dokuwiki/inc/File/PageFile.php</description>
        <pubDate>Sat, 27 Nov 2021 03:42:05 +0000</pubDate>
        <dc:creator>Satoshi Sahara &lt;sahara.satoshi@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>b24e9c4a65ed9725af53e2f198c6475acd74eebc - implement PageFile class</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/File/PageFile.php#b24e9c4a65ed9725af53e2f198c6475acd74eebc</link>
        <description>implement PageFile classPageFile class handles wiki text file and its change management for specific page, main part comes from `function saveWikiText()`.  This ensures and enables to use one **PageChangeLog** instance during a page save process among class methods and relevant plugins.

            List of files:
            /dokuwiki/inc/File/PageFile.php</description>
        <pubDate>Sat, 27 Nov 2021 03:25:26 +0000</pubDate>
        <dc:creator>Satoshi Sahara &lt;sahara.satoshi@gmail.com&gt;</dc:creator>
    </item>
</channel>
</rss>
