Hi there.
I just wrote a little function to zip a whole folder while maintaining the dir-structure. I hope it might help someone.
<?php
function folderToZip($folder, &$zipFile, $subfolder = null) {
if ($zipFile == null) {
return false;
}
$folder .= end(str_split($folder)) == "/" ? "" : "/";
$subfolder .= end(str_split($subfolder)) == "/" ? "" : "/";
$handle = opendir($folder);
while ($f = readdir($handle)) {
if ($f != "." && $f != "..") {
if (is_file($folder . $f)) {
if ($subfolder != null)
$zipFile->addFile($folder . $f, $subfolder . $f);
else
$zipFile->addFile($folder . $f);
} elseif (is_dir($folder . $f)) {
$zipFile->addEmptyDir($f);
folderToZip($folder . $f, $zipFile, $f);
}
}
}
}
?>
Use it like this:
<?php
$z = new ZipArchive();
$z->open("test.zip", ZIPARCHIVE::CREATE);
folderToZip("storeThisFolder", $z);
$z->close();
?>
Have a good day!