From 6a1cfff27eb68325d426ae63005f71746bf134ae Mon Sep 17 00:00:00 2001 From: skodak Date: Thu, 19 Oct 2006 22:13:03 +0000 Subject: [PATCH] Internal zipping broken on win32 MDL-7105 ; we are now using the new method to specify file names in zip archive because the old PCLZIP_OPT_REMOVE_PATH option is broken on win32 platforms --- lib/moodlelib.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/moodlelib.php b/lib/moodlelib.php index 528e91fb0a..2227280f1e 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -6114,8 +6114,18 @@ function zip_files ($originalfiles, $destination) { if (empty($CFG->zip)) { // Use built-in php-based zip function include_once("$CFG->libdir/pclzip/pclzip.lib.php"); + //rewrite filenames because the old method with PCLZIP_OPT_REMOVE_PATH does not work under win32 + $zipfiles = array(); + $start = strlen($origpath)+1; + foreach($files as $file) { + $tf = array(); + $tf[PCLZIP_ATT_FILE_NAME] = $file; + $tf[PCLZIP_ATT_FILE_NEW_FULL_NAME] = substr($file, $start); + $zipfiles[] = $tf; + } + //create the archive $archive = new PclZip(cleardoubleslashes("$destpath/$destfilename")); - if (($list = $archive->create($files, PCLZIP_OPT_REMOVE_PATH,$origpath) == 0)) { + if (($list = $archive->create($zipfiles) == 0)) { notice($archive->errorInfo(true)); return false; } -- 2.39.5