Viewing file: Archive.php (3.52 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
/** * HTTP::Download::Archive * * PHP versions 4 and 5 * * @category HTTP * @package HTTP_Download * @author Michael Wallner <mike@php.net> * @copyright 2003-2005 Michael Wallner * @license BSD, revisewd * @version CVS: $Id: Archive.php 304423 2010-10-15 13:36:46Z clockwerx $ * @link http://pear.php.net/package/HTTP_Download */
/** * Requires HTTP_Download */ require_once 'HTTP/Download.php';
/** * Requires System */ require_once 'System.php';
/** * HTTP_Download_Archive * * Helper class for sending Archives. * * @access public * @version $Revision: 304423 $ */ class HTTP_Download_Archive { /** * Send a bunch of files or directories as an archive * * Example: * <code> * require_once 'HTTP/Download/Archive.php'; * HTTP_Download_Archive::send( * 'myArchive.tgz', * '/var/ftp/pub/mike', * HTTP_DOWNLOAD_BZ2, * '', * '/var/ftp/pub' * ); * </code> * * @see Archive_Tar::createModify() * @static * @access public * @return mixed Returns true on success or PEAR_Error on failure. * @param string $name name the sent archive should have * @param mixed $files files/directories * @param string $type archive type * @param string $add_path path that should be prepended to the files * @param string $strip_path path that should be stripped from the files */ function send($name, $files, $type = HTTP_DOWNLOAD_TGZ, $add_path = '', $strip_path = '') { $tmp = System::mktemp(); switch ($type = strToUpper($type)) { case HTTP_DOWNLOAD_TAR: include_once 'Archive/Tar.php'; $arc = &new Archive_Tar($tmp); $content_type = 'x-tar'; break;
case HTTP_DOWNLOAD_TGZ: include_once 'Archive/Tar.php'; $arc = &new Archive_Tar($tmp, 'gz'); $content_type = 'x-gzip'; break;
case HTTP_DOWNLOAD_BZ2: include_once 'Archive/Tar.php'; $arc = &new Archive_Tar($tmp, 'bz2'); $content_type = 'x-bzip2'; break;
case HTTP_DOWNLOAD_ZIP: include_once 'Archive/Zip.php'; $arc = &new Archive_Zip($tmp); $content_type = 'x-zip'; break; default: return PEAR::raiseError( 'Archive type not supported: ' . $type, HTTP_DOWNLOAD_E_INVALID_ARCHIVE_TYPE ); } if ($type == HTTP_DOWNLOAD_ZIP) { $options = array( 'add_path' => $add_path, 'remove_path' => $strip_path); if (!$arc->create($files, $options)) { return PEAR::raiseError('Archive creation failed.'); } } else { if (!$e = $arc->createModify($files, $add_path, $strip_path)) { return PEAR::raiseError('Archive creation failed.'); } if (PEAR::isError($e)) { return $e; } } unset($arc); $dl = &new HTTP_Download(array('file' => $tmp)); $dl->setContentType('application/' . $content_type); $dl->setContentDisposition(HTTP_DOWNLOAD_ATTACHMENT, $name); return $dl->send(); } } ?>
|