noalyss  Version-6.7.2
 All Data Structures Namespaces Files Functions Variables Enumerations
class_zip_extended.php
Go to the documentation of this file.
00001 <?php
00002 /*
00003  *   This file is part of NOALYSS.
00004  *
00005  *   NOALYSS is free software; you can redistribute it and/or modify
00006  *   it under the terms of the GNU General Public License as published by
00007  *   the Free Software Foundation; either version 2 of the License, or
00008  *   (at your option) any later version.
00009  *
00010  *   NOALYSS is distributed in the hope that it will be useful,
00011  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  *   GNU General Public License for more details.
00014  *
00015  *   You should have received a copy of the GNU General Public License
00016  *   along with NOALYSS; if not, write to the Free Software
00017  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00018 */
00019 
00020 // Copyright Author Dany De Bontridder danydb@aevalys.eu
00021 
00022 /*!\file
00023  * \brief extends the Zip object
00024  */
00025 
00026 class Zip_Extended extends ZipArchive
00027 {
00028   /**
00029    * Function to recursively add a directory,
00030    * sub-directories and files to a zip archive
00031    *@note 
00032    * ODS format expect unix / instead of DIRECTORY_SEPARATOR
00033    * otherwise, new file can not be read by OpenOffice
00034    * see PHP Bug #48763         ZipArchive produces corrupt OpenOffice.org files
00035   */
00036   function add_recurse_folder($dir,$zipdir='')
00037   {
00038     if (is_dir($dir)) 
00039       {
00040         if ($dh = opendir($dir)) 
00041           {
00042             // Loop through all the files
00043             $filenct = 0;
00044             while (($file = readdir($dh)) !== false) 
00045               {
00046                 //If it's a folder, run the function again!
00047                 if(!is_file($dir . $file))
00048                   {
00049                     // Skip parent and root directories
00050                     if( ($file !== ".") && ($file !== ".."))
00051                       {
00052                         $this->add_recurse_folder($dir . $file . '/',  $zipdir . $file . '/');
00053                       }
00054                   }
00055                 else
00056                   {
00057                     // Add the files
00058                     $this->addFile($dir . $file, $zipdir . $file);
00059                     $filenct +=1;
00060                   }
00061               }
00062             //Add the directory when folder was empty
00063             if( (!empty($zipdir)) && ($filenct==0)) 
00064               {
00065                 // remove directory separator before addEmptyDir      
00066                 // otherwhisen create double folder in zip
00067                 $this->addEmptyDir(substr($zipdir, 0, -1));
00068               } 
00069           }
00070       }
00071   }
00072 
00073 }
 All Data Structures Namespaces Files Functions Variables Enumerations