diff -urN moniwiki-1.1.0-20050409/plugin/Attachment.php moniwiki/plugin/Attachment.php
--- moniwiki-1.1.0-20050409/plugin/Attachment.php 2005-07-30 00:52:38.000000000 +0900
+++ moniwiki/plugin/Attachment.php 2005-07-30 01:02:17.000000000 +0900
@@ -7,6 +7,25 @@
//
// $Id: Attachment.php,v 1.15 2005/04/08 04:26:17 wkpark Exp $
+function getSecondAttachPos ($value){
+ $startQuote = strpos ($value, '"') ;
+ if ($startQuote === false)
+ return strpos ($value, ' ') ;
+ $endQuote = strpos ($value, '"', $startQuote +1) ;
+ if ($endQuote === false)
+ return false ;
+ return strpos ($value, ' ', $endQuote + 1) ;
+}
+
+function getOriginalFileName ($value){
+ $len = strlen ($value) ;
+ if ($len==0)
+ return $value ;
+ if ($value[0] === '"' && $value[$len-1] === '"')
+ return substr ($value, 1, $len - 2) ;
+ return $value ;
+}
+
function macro_Attachment($formatter,$value,$option='') {
global $DBInfo;
@@ -16,14 +35,14 @@
else $mydownload='download';
$text='';
- if (($p=strpos($value,' ')) !== false) {
+ if (($p=getSecondAttachPos ($value)) !== false) {
// [attachment:my.ext hello]
// [attachment:my.ext attachment:my.png]
// [attachment:my.ext http://url/../my.png]
$text=$ntext=substr($value,$p+1);
$value=substr($value,0,$p);
if (substr($text,0,11)=='attachment:') {
- $fname=substr($text,11);
+ $fname=getOriginalFileName (substr($text,11));
$ntext=macro_Attachment($formatter,$fname,1);
}
if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$ntext)) {
@@ -59,7 +78,7 @@
if (($p=strpos($value,':')) !== false or ($p=strpos($value,'/')) !== false) {
$subpage=substr($value,0,$p);
- $file=substr($value,$p+1);
+ $file=getOriginalFileName (substr($value,$p+1));
$value=$subpage.'/'.$file; # normalize page arg
if ($subpage and $DBInfo->hasPage($subpage)) {
$pagename=$subpage;
@@ -73,7 +92,7 @@
$pagename=$formatter->page->name;
$key=$DBInfo->pageToKeyname($formatter->page->name);
$dir=$DBInfo->upload_dir.'/'.$key;
- $file=$value;
+ $file=$value = getOriginalFileName ($value) ;
}
// check file name XXX
if (!$file) return 'attachment:/';
@@ -85,12 +104,12 @@
if (file_exists($upload_file)) {
if (!$img_link && preg_match("/\.(png|gif|jpeg|jpg)$/i",$upload_file)) {
if ($key != $pagename || $force_download)
- $url=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&value=$value");
+ $url=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&value=".urlencode($value));
else
$url=$DBInfo->url_prefix."/"._urlencode($upload_file);
return "
";
} else {
- $link=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&value=$value",$text);
+ $link=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&value=".urlencode($value),$text);
if ($img_link)
return "$img_link";
@@ -98,7 +117,7 @@
}
}
if ($pagename == $formatter->page->name)
- return ''.$formatter->link_to("?action=UploadFile&rename=$file",sprintf(_("Upload new Attachment \"%s\""),$file)).'';
+ return ''.$formatter->link_to("?action=UploadFile&rename=".urlencode($file),sprintf(_("Upload new Attachment \"%s\""),$file)).'';
if (!$pagename) $pagename='UploadFile';
return ''.$formatter->link_tag($pagename,"?action=UploadFile&rename=$file",sprintf(_("Upload new Attachment \"%s\" on the \"%s\""),$file, $pagename)).'';
diff -urN moniwiki-1.1.0-20050409/plugin/download.php moniwiki/plugin/download.php
--- moniwiki-1.1.0-20050409/plugin/download.php 2005-07-30 00:52:34.000000000 +0900
+++ moniwiki/plugin/download.php 2005-07-30 01:01:09.000000000 +0900
@@ -57,8 +57,11 @@
$mimetype=strtolower($mime[$match[1]]);
if (!$mimetype) $mimetype="application/x-unknown";
+ $hfname = $file ;
+ if (strcmp ($DBInfo->charset, 'utf-8')==0)
+ $hfname = iconv ($DBInfo->charset, "euc-kr", $file) ;
header("Content-Type: $mimetype\r\n");
- header("Content-Disposition: inline; filename=\"$file\"" );
+ header("Content-Disposition: inline; filename=\"$hfname\"" );
#header("Content-Disposition: attachment; filename=\"$file\"" );
header("Content-Description: MoniWiki PHP Downloader" );
Header("Pragma: no-cache");