Ejemplo n.º 1
0
 /**
  * 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;
     }
 }