From be6ca06d57e731e652091e793fce7fe4d904ab67 Mon Sep 17 00:00:00 2001 From: rurban Date: Fri, 22 Dec 2006 17:44:15 +0000 Subject: [PATCH] support importing foreign charsets. e.g latin1 => utf8 git-svn-id: svn://svn.code.sf.net/p/phpwiki/code/trunk@5233 96ab9672-09ca-45d6-a79d-3d69d39ca109 --- lib/loadsave.php | 31 ++++++++++++++++++++++++++++--- lib/ziplib.php | 13 ++++++++++++- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/lib/loadsave.php b/lib/loadsave.php index 0d835dac2..be518f47a 100644 --- a/lib/loadsave.php +++ b/lib/loadsave.php @@ -1,5 +1,5 @@ setArg('pagename', $pagename); // Template::_basepage fix $filename = FilenameForPage($pagename) . $WikiTheme->HTML_DUMP_SUFFIX; $revision = $page->getCurrentRevision(); @@ -748,6 +748,7 @@ function MakeWikiZipHtml (&$request) function SavePage (&$request, &$pageinfo, $source, $filename) { static $overwite_all = false; + global $charset; $pagedata = $pageinfo['pagedata']; // Page level meta-data. $versiondata = $pageinfo['versiondata']; // Revision level meta-data. @@ -788,7 +789,8 @@ function SavePage (&$request, &$pageinfo, $source, $filename) $current = $page->getCurrentRevision(); if ( $current and (! $current->hasDefaultContents()) && ($current->getPackedContent() != $content) - && ($merging == true) ) { + && ($merging == true) ) + { include_once('lib/editpage.php'); $request->setArg('pagename', $pagename); $r = $current->getVersion(); @@ -1077,6 +1079,14 @@ function ParseSerializedPage($text, $default_pagename, $user) break; } } + if (empty($pagehash['charset'])) + $pagehash['charset'] = 'iso-8859-1'; + // compare to target charset + if (strtolower($pagehash['charset']) != strtolower($GLOBALS['charset'])) { + loadPhpExtension("iconv"); + $pageinfo['content'] = iconv($params['charset'], $GLOBALS['charset'], $pageinfo['content']); + $pageinfo['pagename'] = iconv($params['charset'], $GLOBALS['charset'], $pageinfo['pagename']); + } return $pageinfo; } @@ -1113,6 +1123,9 @@ function LoadFile (&$request, $filename, $text = false, $mtime = false) if (!$mtime) $mtime = time(); // Last resort. + // DONE: check source - target charset for content and pagename + // but only for pgsrc'ed content, not from the browser. + $default_pagename = rawurldecode($basename); if ( ($parts = ParseMimeifiedPages($text)) ) { if (count($parts) > 1) @@ -1137,8 +1150,17 @@ function LoadFile (&$request, $filename, $text = false, $mtime = false) $filename), $basename); } else { + // plain old file $user = $request->getUser(); + $file_charset = 'iso-8859-1'; + // compare to target charset + if ($file_charset != strtolower($GLOBALS['charset'])) { + loadPhpExtension("iconv"); + $text = iconv($file_charset, $GLOBALS['charset'], $text); + $default_pagename = iconv($file_charset, $GLOBALS['charset'], $default_pagename); + } + // Assume plain text file. $pageinfo = array('pagename' => $default_pagename, 'pagedata' => array(), @@ -1403,6 +1425,9 @@ function LoadPostFile (&$request) /** $Log: not supported by cvs2svn $ + Revision 1.146 2006/12/17 18:35:23 rurban + Create the right subdirectory name, urlencoded. + Revision 1.145 2006/09/06 06:01:18 rurban support loadfile multipart archives automatically diff --git a/lib/ziplib.php b/lib/ziplib.php index f9c7c0fd8..d7f0f8c41 100644 --- a/lib/ziplib.php +++ b/lib/ziplib.php @@ -1,4 +1,4 @@ -