All pastes #65134 Raw Edit

headzoo

public text v1 · immutable
#65134 ·published 2006-06-13 14:53 UTC
rendered paste body
<?php
include_once(dirname(__FILE__) . '/pclzip.lib.php');
class ZipFly {

	var $tempDirectory;
	var $themeDirectory;
	var $errorMessage = null;
	var $tempFile;
	var $themeName;
	
	function ZipFly($tempDirectory, $themeDirectory, $themeName) {
		$this->themeName = $themeName;
		if (!$this->setThemeDirectory($themeDirectory)) {
			$this->setErrorMessage('Theme directory does not exists');
		}
		if (!$this->setTempDirectory($tempDirectory)) {
			$this->setErrorMessage('Temp directory is not writable or does not exists');
		}
		if (!$this->createZip()) {
			$this->setErrorMessage('The ZIP file could not be created');
			@unlink($this->tempFile);
		}
	}
	
	function createZip() {
		$this->tempFile = $this->tempDirectory . '/' . md5(rand()) . '.zip';
		$archive = new PclZip($this->tempFile);
		
		//preg_match('~^(.*)/.*$~', $this->themeDirectory, $matches);
		//$removeDirectory = $matches[1] . '/';
		
		$v_list = $archive->create($this->themeDirectory, PCLZIP_OPT_REMOVE_PATH, $this->themeDirectory, PCLZIP_OPT_ADD_PATH, $this->themeName);
		if ($v_list == 0) {
			return false;
		}
		return true;
	}
	
	function sendZip() {
	
		$contents = file_get_contents($this->tempFile);
		unlink($this->tempFile);
		header("Content-type: application/zip");
		header('Content-Disposition: attachment; filename="' . $this->themeName . '.zip"');
		echo $contents;
		die();
	}
	
	function setErrorMessage($message) {
		$this->errorMessage = $message;
	}
	
	function getLastError() {
		return $this->errorMessage;
	}
	
	function setThemeDirectory($directory) {
		if (is_readable($directory)) {
			$this->themeDirectory = $directory;
			return true;
		} else {
			return false;
		}
	}

	function setTempDirectory($directory) {
		if (is_writable($directory)) {
			$this->tempDirectory = $directory;
			return true;
		} else {
			return false;
		}
	}
}

?>