From: <var...@us...> - 2022-01-27 15:12:18
|
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. |