MODx PHP

PearのFile/Archive.phpをMODxで

[`evernote` not found]
LINEで送る
Pocket

ちょっと料理名っぽいですが。

MODxをちょい前から使っているのですが、このMODxは動的にサイトを見せることも可能だし、静的HTMLのエクスポートも可能。

で、今回は、MODxはサイトのジェネレータとして使う事を考え、エクスポートしたファイルをダウンロードできる仕組みを作成。

簡単に言えば、

1. managerから、『サイトのエクスポート』
2. zipダウンロードするmoduleを作成し、指定階層以下のフォルダをzipにしてダウンロード

という流れです。

で、2のところですが、pearのFile/Archive.phpを使いました。

使い方としては、

前提としては、$tardir:zipファイルを作成するフォルダ

File_Archive::extract(
File_Archive::read( $tardir.’export/’ ),
File_Archive::toArchive(‘Files.zip’, File_Archive::toOutput() )
);

でいけるはずなのですが、zipを展開できなかった。(Binaryで見てみると、圧縮しているというよりは、ファイルの頭がHTML宣言だったので、きっと圧縮に失敗している)
なので、一度サーバでファイルを作成し、ダウンロードしてからzipファイルを削除 という流れに変更。
変更後がこれ。

File_Archive::extract(
File_Archive::read( $tardir.’export/’ ),
File_Archive::toArchive($tardir.’Files.zip’, File_Archive::toFiles() )
);

$params = array(
‘file’ => $tardir.’Files.zip’,
‘contenttype’ => ‘application/zip’,
‘contentdisposition’ => array(HTTP_DOWNLOAD_ATTACHMENT, ‘Files.zip’),
);

$ret = HTTP_Download::staticSend($params);

unlink($tardir.’Files.zip’);

これで無事zipファイルをダウンロードできました。

2008年2月13日21:28

Leave a Reply

Your email address will not be published.

CAPTCHA