ZIP書庫がきちんと作成されているとのことで,とても安心しました.ありがとうございます.
SSL+IEの件は,やはり気になりますね.
ちなみに,lib/filelib.phpのfunction send_file()やsend_temp_file()では,
} else { // Do not cache files in proxies and browsers
if (strpos($CFG->wwwroot, 'https://') === 0) { //https sites - watch out for IE! KB812935 and KB316431
@header('Cache-Control: max-age=10');
@header('Expires: '. gmdate('D, d M Y H:i:s', 0) .' GMT');
@header('Pragma: ');
} else { //normal http - prevent caching at all cost
@header('Cache-Control: private, must-revalidate, pre-check=0, post-check=0, max-age=0');
@header('Expires: '. gmdate('D, d M Y H:i:s', 0) .' GMT');
@header('Pragma: no-cache');
}
@header('Accept-Ranges: none'); // Do not allow byteserving when caching disabled
}
このようなヘッダーの記述が利用されているような感じが見受けられます.もしかしたら,このコードを移植すればうまく動作する可能性があります.
ヘッダーの詳細がよく分かっていない上に,自分のサイトをSSL化する方法が分からないので,Tanikawaさんに人柱になって頂くことしかできないのですが...もし可能でしたら,以下のコードを試して頂けませんか? function download_single_submisions()とfunction download_all_submissions()の最後のところです.
// header("Cache-Control: none");
// ここから追加
if (strpos($CFG->wwwroot, 'https://') === 0) { //https sites - watch out for IE! KB812935 and KB316431
@header('Cache-Control: max-age=10');
@header('Expires: '. gmdate('D, d M Y H:i:s', 0) .' GMT');
@header('Pragma: ');
} else { //normal http - prevent caching at all cost
@header('Cache-Control: private, must-revalidate, pre-check=0, post-check=0, max-age=0');
@header('Expires: '. gmdate('D, d M Y H:i:s', 0) .' GMT');
@header('Pragma: no-cache');
}
@header('Accept-Ranges: none'); // Do not allow byteserving when caching disabled
// ここまで追加
header('Content-Disposition: attachment; filename="'.convert_download_filename_encoding($zipname).'"');
header("Content-Length: ".fs_filesize($zippath));
header("Content-Type: application/octet-stream");
fs_readfile($zippath);
もしこれでIEでもダウンロードできるようになるのであればヘッダーの処理の違いに問題がある,ということになります.
そして更にもう一度,お手間を掛けることになると思いますが,このZIP書庫作成後にファイル送信する処理のコードですが,もしかしたらlib/filelib.php中のfunction send_temp_file()で代用できるかも知れません.これは時間が取れたら試して見ます.send_temp_file()も上記赤いコードが使われていますので,同じ効果が得られる可能性があります.さらにIE向けのハックが含まれているようですので,より確実性が上がる可能性もあります.まずは(非SSL環境で)解析と実験をして見ます.