/** * Créer un fichier zip * * @require class zip.class.php * * @param string $filename -> Le nom du fichier zip * @param array $files_struct -> La structure de l'archive zip * $files_struct = array( * 'file.txt', * 'folder' => array('file_in_folder.txt') * ) */ public static function createZip($filename, $files_struct, $sendHeaders = true) { // Si la class est instanciée if (class_exists('zipfile')) { // Si la structure des fichiers est bien un array if (is_array($files_struct)) { // Initialisation $zipfile = new ZipFile(); // Création de la structure des fichiers/dossiers foreach ($files_struct as $folder => $file) { if (is_string($folder)) { $zipfile->createDir($folder); foreach ($file as $file_array) { $handle = fopen($file_array, 'rb'); $buffer = fread($handle, filesize($file_array)); fclose($handle); $zipfile->createFile($buffer, $folder . '/' . basename($file_array)); } } else { $handle = fopen($file, 'rb'); $buffer = fread($handle, filesize($file)); fclose($handle); $zipfile->createFile($buffer, basename($file)); } } // Création de l'archive $archive = $zipfile->zippedFile(); $open = fopen($filename, 'wb'); fwrite($open, $archive); fclose($open); // Si on envoi les headers pour le téléchargement direct if ($sendHeaders) { self::sendDownloadHeaders($filename); echo $archive; } else { return $archive; } } else { return false; } } else { return false; } }