fs_moodleでの要約(?)メールの一部です.
SAMPLE -> フォーラム -> 一般フォーラム ->
メールの添付ファイルに空白文字を使えない問題のテスト
---------------------------------------------------------------------
メールの添付ファイルに空白文字を使えない問題のテスト
2008年 10月 19日(日曜日) 20:15 - 白井 達也
の投稿
---------------------------------------------------------------------
ファイル名に空白を含むとどうなるか?
添付ファイル 半角の空白を 含むファイル.txt:
http://www.suzuka-ct.ac.jp/mech/moodle/file.php/42/moddata/forum/161/1815/%E5%8D%8A%E8%A7%92%E3%81%AE%E7%A9%BA%E7%99%BD%E3%82%92%20%E5%90%AB%E3%82%80%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB.txt
---------------------------------------------------------------------
これは ウェブサイト SAMPLE に投稿された記事のコピーです。
添付ファイルのファイル名と,その次の行に実際のURLを示していますね.
なお,URLがrawurlencodeされているのは,lib/filelib.phpのfunction get_file_url()に以下のような修正を加えているためです.
if ($CFG->slasharguments) {
$parts = explode('/', $path);
// (IE_Problem024): ここからコメントアウト
// $parts = array_map('rawurlencode', $parts);
// (IE_Problem024): ここから追加
if (empty($noencodeurl)) $parts = array_map('rawurlencode', $parts);
// (IE_Problem024): ここまで追加
$path = implode('/', $parts);
$ffurl = $url.'/'.$path;
$separator = '?';
} else {
// (IE_Problem023): IEで日本語ファイル名のファイルがダウンロードできない問題(2008/04/08)
// (IE_Problem023): ここからコメントアウト
// $path = rawurlencode('/'.$path);
// (IE_Problem023): ここから追加
$parts = explode('/', $path);
// (IE_Problem024): ここから追加
if (empty($noencodeurl)) $parts = array_map('rawurlencode', $parts);
// (IE_Problem024): ここまで追加
$path = '/'.implode('/', $parts);
// (IE_Problem023): ここまで追加
$ffurl = $url.'?file='.$path;
$separator = '&';
}
要約メールは,mod/forum/lib.phpのfunction forum_make_email_text()で作成され,添付ファイルに関する情報はfunction forum_print_attachments()の以下の部分(引き数$return が'text')です.
if ($return == "html") {
$output .= "<a href=\"$ffurl\">$image</a> ";
$output .= "<a href=\"$ffurl\">$file</a><br />";
} else if ($return == "text") {
$output .= "$strattachment $file:\n$ffurl\n";
} else {
一応,ファイル名($file)とパス($ffurl)は併記されているようですので,パスはrawurlencodeされても大丈夫そうです.リンクをクリックするとブラウザが起動し,自動的にファイルのダウンロードが始まります.その際にきちんとファイル名はデコードされました(Firefox3の場合).