From: <car...@us...> - 2025-02-18 04:46:43
|
Revision: 11126 http://sourceforge.net/p/phpwiki/code/11126 Author: carstenklapp Date: 2025-02-18 04:46:41 +0000 (Tue, 18 Feb 2025) Log Message: ----------- set date of dumped files to wiki page date. Fix some metadata like lock not being applied to database when loading pages with acl specified Modified Paths: -------------- trunk/lib/loadsave.php trunk/pgsrc/ReleaseNotes Modified: trunk/lib/loadsave.php =================================================================== --- trunk/lib/loadsave.php 2025-02-18 03:56:57 UTC (rev 11125) +++ trunk/lib/loadsave.php 2025-02-18 04:46:41 UTC (rev 11126) @@ -152,8 +152,7 @@ // normal dumps use date modified $head .= "Date: " . Rfc2822DateTime($current->get('mtime')) . $LE; } else { - $use_page_creationdate_instead = 0; - if ($use_page_creationdate_instead) { + if (isPhpWikiTeam($current->get('author'))) { $head .= "Date: " . Rfc2822DateTime($page->get('date')) . $LE; // for special pagedumps where you don't want to change the date // in dumped pgsrc, use creation date @@ -438,11 +437,32 @@ flush(); assert($num == strlen($data)); fclose($fd); + + $current = $page->getCurrentRevision(false); + $author=$current->get('author'); + if (isPhpWikiTeam($author)) { //default_pgsrc_hasnotbeenmodified + $creationdate = $page->get('date'); + echo (" (unmodified default page)"); + // echo " DEBUG: setting as Creation Date: " . Rfc2822DateTime($creationdate) . " " . $creationdate . "\n"; + touch($directory . "/" . $filename, $creationdate); + } else { + $moddate = $current->get('mtime'); + // echo " DEBUG: setting as Modification Date: " . Rfc2822DateTime($moddate) . " " . $moddate . "\n"; + touch($directory . "/" . $filename, $moddate); + } } EndLoadDump($request); } +function isPhpWikiTeam($author) { + $translated_teamnames = array( //do not mark these with _() + "The PhpWiki Team", //en + "Das PhpWiki Team" //de + ); + return in_array($author, $translated_teamnames, true); +} + /** * @param WikiRequest $request */ @@ -561,6 +581,21 @@ flush(); assert($num == strlen($data)); fclose($fd); + + $current = $page->getCurrentRevision(false); + $author=$current->get('author'); + if (isPhpWikiTeam($author)) { //default_pgsrc_hasnotbeenmodified + $creationdate = $page->get('date'); + echo (" (unmodified default page)"); + // echo " DEBUG: setting as Creation Date: " . Rfc2822DateTime($creationdate) . " " . $creationdate . "\n"; + touch($directory . "/" . $filename, $creationdate); + } else { + $moddate = $current->get('mtime'); + // echo " DEBUG: setting as Modification Date: " . Rfc2822DateTime($moddate) . " " . $moddate . "\n"; + touch($directory . "/" . $filename, $moddate); + } + + } EndLoadDump($request); @@ -1237,39 +1272,12 @@ //$mesg->pushContent(" (also setting metadata)"); //$mesg->pushContent(" DEBUG: (\$isnewpage=$isnewpage)"); - // set hits - if ($isnewpage) { //don't load hits from pgsrc if page exists in database, only if new - if (isset($pagedata['hits'])) - { - //sanitize hits. - $pagedata['hits'] = intval($pagedata['hits']); - $mesg->pushContent(", Loading hits=".$pagedata['hits']); - $page->set('hits', $pagedata['hits']); - } - if (isset($pagedata['perm'])) - { - //todo: sanitize acl? - $mesg->pushContent(", Loading acl=".$pagedata['perm']); - $page->set('perm', $pagedata['perm']); - } - } else { - if (isset($pagedata['hits'])) - { - $mesg->pushContent(", Not overwriting hits"); - //unset($pagedata['hits']);//keep hits from loading over existing page - } - if (isset($pagedata['perm'])) - { - $mesg->pushContent(", Not overwriting acl"); - //unset($pagedata['perm']);//keep acl from loading over existing page - } - } - // set page locked // how to get current page lock status?? to customise messages more if (!empty($pagedata['locked'])) { $mesg->pushContent(", LOCKING"); - $page->set('locked', $pagedata['locked']); + // $mesg->pushContent(", lock=".$pagedata['locked']); + $page->set('locked', true); } else { if (!defined('ALLOW_PGSRC_TO_UNLOCK_PAGES')) { define ('ALLOW_PGSRC_TO_UNLOCK_PAGES' ,0);//debugging and security @@ -1286,7 +1294,6 @@ //unset($pagedata['locked']);//keep locked from loading over existing page } } - // set page creation date if (!empty($pagedata['date'])) { $page->set('date', $pagedata['date']); @@ -1298,12 +1305,40 @@ } //unset($pagedata['owner']); + //set perm last or it may interfere with setting other attributes like lock + // set hits and acl perm last but only if new page + if ($isnewpage) { //don't load hits from pgsrc if page exists in database, only if new + if (isset($pagedata['hits'])) + { + //sanitize hits. + $pagedata['hits'] = intval($pagedata['hits']); + $mesg->pushContent(", Loading hits=".$pagedata['hits']); + $page->set('hits', $pagedata['hits']); + } + if (isset($pagedata['perm'])) + { + //todo: sanitize acl? + $mesg->pushContent(", Loading acl=".$pagedata['perm']); + $page->set('perm', $pagedata['perm']); + } + } else { + if (isset($pagedata['hits'])) + { + $mesg->pushContent(", Not overwriting hits"); + //unset($pagedata['hits']);//keep hits from loading over existing page + } + if (isset($pagedata['perm'])) + { + $mesg->pushContent(", Not overwriting acl"); + //unset($pagedata['perm']);//keep acl from loading over existing page + } + } // if we want to load other fields in the future from // MIME file, here is where we do it: // // comment out the below to discard remaining data from loaded file for security. // loading remaining data: - // if ($s=sizeof($pagedata)) { + // if ($s=sizeof($pagedata)) { //flawed // echo "<pre>$s extra pagedata entries found in loaded file:\n"; // print_r($pagedata);//this formatting is fine, normal users will never get here // echo "</pre>"; @@ -1311,7 +1346,6 @@ // $mesg->pushContent(", setting '$key'='$value'"); // $page->set($key, $value); // } - // } $mesg->pushContent(HTML::br()); Modified: trunk/pgsrc/ReleaseNotes =================================================================== --- trunk/pgsrc/ReleaseNotes 2025-02-18 03:56:57 UTC (rev 11125) +++ trunk/pgsrc/ReleaseNotes 2025-02-18 04:46:41 UTC (rev 11126) @@ -1,4 +1,4 @@ -Date: Mon, 17 Feb 2025 01:10:53 +0000 +Date: Tue, 18 Feb 2025 04:39:48 +0000 Mime-Version: 1.0 (Produced by PhpWiki 1.6.5) Content-Type: application/x-phpwiki; pagename=ReleaseNotes; @@ -11,6 +11,8 @@ == 1.6.5 2025-XX-XX Marc-Etienne Vargenau, Carsten Klapp == +CarstenKlapp strikes back! + * Upgrade PEAR to release 1.10.16, PEAR DB to release 1.12.2 * Readme for basic Windows 11 install instructions. * Complete rewrite of ~SpaceWiki theme using modern css. @@ -51,14 +53,16 @@ - Improved filtering of unknown page metadata being loaded into database. - Dumped pages now use unix line endings instead of windows. Import of files with windows line endings should still work. + - **Fixed broken Merge edit** functionality when loading dumps, also added + diff preview. This means themes using custom editpage.tmpl need to be + updated with new ##$EDITING_OLD_REVISION_MESSAGE## variable. + - Date of files dumped now set to match page date in wiki. + - Fix some metadata not being applied to database when loading pages. * configurator.php is now in a less-broken state. Useable but needs more work. * New: Show a nice diff preview when editing a page if there is an edit conflict. * New: Prevent diff markers from being rendered as markup when editing a conflict or merging a dumpload. -* Fixed broken Merge edit functionality when loading dumps, also added diff - preview. This means themes using custom editpage.tmpl need to be updated - with new ##$EDITING_OLD_REVISION_MESSAGE## variable. * **Important bugfix:** Fixed users unexpectedly being logged out. Affected flatfile database and probably other db types also. Improved by sanity checking of database global timestamp. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |