SF.net SVN: phpwiki:[10954] trunk/lib/WikiDB/backend

vargenau--- via phpwiki-checkins <[email protected]> Thu, 27 Jan 2022 15:12:17 +0000
Newsgroups gmane.comp.web.wiki.phpwiki.checkins
Message-ID <[email protected]>
Revision: 10954
          http://sourceforge.net/p/phpwiki/code/10954
Author:   vargenau
Date:     2022-01-27 15:12:17 +0000 (Thu, 27 Jan 2022)
Log Message:
-----------
Make renaming a page work with "file"

Modified Paths:
--------------
    trunk/lib/WikiDB/backend/file.php
    trunk/lib/WikiDB/backend/flatfile.php

Modified: trunk/lib/WikiDB/backend/file.php
===================================================================
--- trunk/lib/WikiDB/backend/file.php	2022-01-27 15:05:43 UTC (rev 10953)
+++ trunk/lib/WikiDB/backend/file.php	2022-01-27 15:12:17 UTC (rev 10954)
@@ -50,7 +50,6 @@
 {
     public $data_dir;
     public $_dir_names;
-
     public $_page_data; // temporarily stores the pagedata (via _loadPageData)
     public $_page_version_data; // temporarily stores the versiondata (via _loadVersionData)
     public $_latest_versions; // temporarily stores the latest version-numbers (for every pagename)
@@ -86,7 +85,7 @@
 
     // *********************************************************************
     // common file load / save functions:
-    protected function _pagename2filename($type, $pagename, $version)
+    protected function _pagename2filename($type, $pagename, $version = 0)
     {
         if ($version == 0) {
             return $this->_dir_names[$type] . '/' . urlencode($pagename);
@@ -418,14 +417,22 @@
     function rename_page($pagename, $to)
     {
         $version = $this->_getLatestVersion($pagename);
-        foreach ($this->_dir_names as $type => $path) {
-            if (is_dir($path)) {
-                $filename = $this->_pagename2filename($type, $pagename, $version);
-                $new = $this->_pagename2filename($type, $to, $version);
-                @rename($filename, $new);
-            }
+        // rename page_data
+        $filename = $this->_pagename2filename('page_data', $pagename);
+        $new = $this->_pagename2filename('page_data', $to);
+        rename($filename, $new);
+        // rename links
+        $filename = $this->_pagename2filename('links', $pagename);
+        $new = $this->_pagename2filename('links', $to);
+        rename($filename, $new);
+        // rename ver_data
+        for ($i = 1; $i <= $version; $i++) {
+            $filename = $this->_pagename2filename('ver_data', $pagename, $i);
+            $new = $this->_pagename2filename('ver_data', $to, $i);
+            rename($filename, $new);
         }
-        $this->update_pagedata($pagename, array('pagename' => $to));
+        $this->_setLatestVersion($pagename, 0);
+        $this->_setLatestVersion($to, $version);
         return true;
     }
 
@@ -517,7 +524,6 @@
     {
         $data = $this->get_versiondata($pagename, $version, true);
         if (!$data) {
-            assert($data);
             return;
         }
         foreach ($newdata as $key => $val) {
@@ -570,7 +576,7 @@
             $links = $this->_loadPageLinks($key);
             foreach ($links as $key2 => $val2) {
                 if (is_array($val2) and isset($val2['linkto']) and ($val2['linkto'] == $pagename)) {
-                    array_push($out, $key);
+                    $out[] = $key;
                 }
             }
         }

Modified: trunk/lib/WikiDB/backend/flatfile.php
===================================================================
--- trunk/lib/WikiDB/backend/flatfile.php	2022-01-27 15:05:43 UTC (rev 10953)
+++ trunk/lib/WikiDB/backend/flatfile.php	2022-01-27 15:12:17 UTC (rev 10954)
@@ -42,7 +42,7 @@
     // *********************************************************************
     // common file load / save functions:
     // FilenameForPage is from loadsave.php
-    protected function _pagename2filename($type, $pagename, $version)
+    protected function _pagename2filename($type, $pagename, $version = 0)
     {
         $fpagename = FilenameForPage($pagename);
         if (strstr($fpagename, "/")) {
@@ -60,7 +60,7 @@
             }
         }
 
-        $filename = $this->_pagename2filename('page_data', $pagename, 0);
+        $filename = $this->_pagename2filename('page_data', $pagename);
         if (!file_exists($filename)) return NULL;
         if (!filesize($filename)) return array();
         if ($fd = @fopen($filename, "rb")) {

This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.