| 1 | <?php |
|---|
| 2 | // $Id: zipdownloader.php,v 1.4 2005/08/03 12:39:11 onokazu Exp $ |
|---|
| 3 | // ------------------------------------------------------------------------ // |
|---|
| 4 | // XOOPS - PHP Content Management System // |
|---|
| 5 | // Copyright (c) 2000 XOOPS.org // |
|---|
| 6 | // <http://www.xoops.org/> // |
|---|
| 7 | // ------------------------------------------------------------------------ // |
|---|
| 8 | // This program is free software; you can redistribute it and/or modify // |
|---|
| 9 | // it under the terms of the GNU General Public License as published by // |
|---|
| 10 | // the Free Software Foundation; either version 2 of the License, or // |
|---|
| 11 | // (at your option) any later version. // |
|---|
| 12 | // // |
|---|
| 13 | // You may not change or alter any portion of this comment or credits // |
|---|
| 14 | // of supporting developers from this source code or any supporting // |
|---|
| 15 | // source code which is considered copyrighted (c) material of the // |
|---|
| 16 | // original comment or credit authors. // |
|---|
| 17 | // // |
|---|
| 18 | // This program is distributed in the hope that it will be useful, // |
|---|
| 19 | // but WITHOUT ANY WARRANTY; without even the implied warranty of // |
|---|
| 20 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // |
|---|
| 21 | // GNU General Public License for more details. // |
|---|
| 22 | // // |
|---|
| 23 | // You should have received a copy of the GNU General Public License // |
|---|
| 24 | // along with this program; if not, write to the Free Software // |
|---|
| 25 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // |
|---|
| 26 | // ------------------------------------------------------------------------ // |
|---|
| 27 | // Author: Kazumi Ono (AKA onokazu) // |
|---|
| 28 | // URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ // |
|---|
| 29 | // Project: The XOOPS Project // |
|---|
| 30 | // ------------------------------------------------------------------------- // |
|---|
| 31 | if (!defined('XOOPS_ROOT_PATH')) { |
|---|
| 32 | exit(); |
|---|
| 33 | } |
|---|
| 34 | include_once XOOPS_ROOT_PATH.'/class/downloader.php'; |
|---|
| 35 | include_once XOOPS_ROOT_PATH.'/class/class.zipfile.php'; |
|---|
| 36 | |
|---|
| 37 | class XoopsZipDownloader extends XoopsDownloader |
|---|
| 38 | { |
|---|
| 39 | function XoopsZipDownloader($ext = '.zip', $mimyType = 'application/x-zip') |
|---|
| 40 | { |
|---|
| 41 | $this->archiver = new zipfile(); |
|---|
| 42 | $this->ext = trim($ext); |
|---|
| 43 | $this->mimeType = trim($mimyType); |
|---|
| 44 | } |
|---|
| 45 | |
|---|
| 46 | function addFile($filepath, $newfilename=null) |
|---|
| 47 | { |
|---|
| 48 | // Read in the file's contents |
|---|
| 49 | $fp = fopen($filepath, "r"); |
|---|
| 50 | $data = fread($fp, filesize($filepath)); |
|---|
| 51 | fclose($fp); |
|---|
| 52 | $filename = (isset($newfilename) && trim($newfilename) != '') ? trim($newfilename) : $filepath; |
|---|
| 53 | $filepath = is_file($filename) ? $filename : $filepath; |
|---|
| 54 | $this->archiver->addFile($data, $filename, filemtime($filepath)); |
|---|
| 55 | } |
|---|
| 56 | |
|---|
| 57 | function addBinaryFile($filepath, $newfilename=null) |
|---|
| 58 | { |
|---|
| 59 | // Read in the file's contents |
|---|
| 60 | $fp = fopen($filepath, "rb"); |
|---|
| 61 | $data = fread($fp, filesize($filepath)); |
|---|
| 62 | fclose($fp); |
|---|
| 63 | $filename = (isset($newfilename) && trim($newfilename) != '') ? trim($newfilename) : $filepath; |
|---|
| 64 | $filepath = is_file($filename) ? $filename : $filepath; |
|---|
| 65 | $this->archiver->addFile($data, $filename, filemtime($filepath)); |
|---|
| 66 | } |
|---|
| 67 | |
|---|
| 68 | function addFileData(&$data, $filename, $time=0) |
|---|
| 69 | { |
|---|
| 70 | $this->archiver->addFile($data, $filename, $time); |
|---|
| 71 | } |
|---|
| 72 | |
|---|
| 73 | function addBinaryFileData(&$data, $filename, $time=0) |
|---|
| 74 | { |
|---|
| 75 | $this->addFileData($data, $filename, $time); |
|---|
| 76 | } |
|---|
| 77 | |
|---|
| 78 | function download($name, $gzip = true) |
|---|
| 79 | { |
|---|
| 80 | $this->_header($name.$this->ext); |
|---|
| 81 | echo $this->archiver->file(); |
|---|
| 82 | } |
|---|
| 83 | } |
|---|
| 84 | ?> |
|---|