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 "$file"; } 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");