source: extensions/GrumPluginClasses/classes/GPCCompress.class.inc.php @ 24903

Last change on this file since 24903 was 17735, checked in by grum, 12 years ago

version 3.5.4 - fix minor bug & add new functions to framework

  • Property svn:executable set to *
File size: 7.1 KB
Line 
1<?php
2/* -----------------------------------------------------------------------------
3  class name     : GPCCompress
4  class version  : 1.0.0
5  plugin version : 3.5.4
6  date           : 2012-09-03
7  ------------------------------------------------------------------------------
8  author: grum at piwigo.org
9  << May the Little SpaceFrog be with you >>
10  ------------------------------------------------------------------------------
11
12  :: HISTORY
13
14| release | date       |
15| 1.0.0   | 2012/09/03 | * New class
16|         |            |
17|         |            |
18|         |            |
19|         |            |
20
21  ------------------------------------------------------------------------------
22    no constructor, only static function are provided
23    - static function availableMethods
24    - static function gzip
25    - static function gunzip
26    - static function bzip2
27    - static function bunzip2
28   ---------------------------------------------------------------------- */
29
30include_once('GPCCore.class.inc.php');
31@include_once(GPCCore::getPiwigoSystemPath().'/admin/include/pclzip.lib.php');
32
33class GPCCompress {
34
35  /**
36   * return an array of available methods for compression
37   * current values are:
38   *    'zip'  for zip files
39   *    'gz'   for gzip files
40   *    'bz2'  for bzip2 files
41   *
42   * @return Array
43   */
44  static public function availableMethods()
45  {
46    $returned=array();
47
48    if(class_exists('PclZip')) $returned[]='zip';
49    if(function_exists('gzopen')) $returned[]='gz';
50    if(function_exists('bzopen')) $returned[]='bz2';
51
52    return($returned);
53  }
54
55  /**
56   * compress $fileName to $compressedFile in gz format
57   *
58   * @param String $fileName: source file to be compressed
59   * @param String $compressedFile: destination file compressed
60   * @param Integer $compressionLevel: level compression 0 (none) to 9 (high)
61   * @return Boolean: true if Ok, otherwise false
62   */
63  static public function gzip($fileName, $compressedFile, $compressionLevel=6)
64  {
65    if(!function_exists('gzopen')) return(false);
66    if(!file_exists($fileName)) return(false);
67    if(file_exists($compressedFile)) unlink($compressedFile);
68    if(file_exists($compressedFile)) return(false);
69
70    $fHandleSrc=fopen($fileName, 'r');
71    if($fHandleSrc)
72    {
73      $fHandleDest=gzopen($compressedFile, 'w'.$compressionLevel);
74
75      if($fHandleDest)
76      {
77        while(!feof($fHandleSrc))
78        {
79          $fContent=fread($fHandleSrc, 1048576);
80          gzwrite($fHandleDest, $fContent);
81        }
82        gzclose($fHandleDest);
83        fclose($fHandleSrc);
84        return(true);
85      }
86      fclose($fHandleSrc);
87    }
88    return(false);
89  }
90
91
92  /**
93   * uncompress $fileName in gz format to $uncompressedFile
94   *
95   * @param String $fileName: source file be uncompressed (in gzformat)
96   * @param String $uncompressedFile: destination file uncompressed
97   * @return Boolean: true if Ok, otherwise false
98   */
99  static public function gunzip($fileName, $uncompressedFile)
100  {
101    if(!function_exists('gzopen')) return(false);
102    if(!file_exists($fileName)) return(false);
103    if(file_exists($uncompressedFile)) unlink($uncompressedFile);
104    if(file_exists($uncompressedFile)) return(false);
105
106    $fHandleSrc=gzopen($fileName, 'r');
107    if($fHandleSrc)
108    {
109      $fHandleDest=fopen($uncompressedFile, 'w');
110
111      if($fHandleDest)
112      {
113        while(!feof($fHandleSrc))
114        {
115          $fContent=gzread($fHandleSrc, 8192);
116          fwrite($fHandleDest, $fContent);
117        }
118        fclose($fHandleDest);
119        gzclose($fHandleSrc);
120        return(true);
121      }
122      gzclose($fHandleSrc);
123    }
124    return(false);
125  }
126
127
128  /**
129   * compress $fileName to $compressedFile in bz2 format
130   *
131   * @param String $fileName: source file to be compressed
132   * @param String $compressedFile: destination file compressed
133   * @return Boolean: true if Ok, otherwise false
134   */
135  static public function bzip2($fileName, $compressedFile)
136  {
137    if(!function_exists('bzopen')) return(false);
138    if(!file_exists($fileName)) return(false);
139    if(file_exists($compressedFile)) unlink($compressedFile);
140    if(file_exists($compressedFile)) return(false);
141
142    $fHandleSrc=fopen($fileName, 'r');
143    if($fHandleSrc)
144    {
145      $fHandleDest=bzopen($compressedFile, 'w');
146
147      if($fHandleDest)
148      {
149        while(!feof($fHandleSrc))
150        {
151          $fContent=fread($fHandleSrc, 8192);
152          bzwrite($fHandleDest, $fContent);
153        }
154        bzclose($fHandleDest);
155        fclose($fHandleSrc);
156        return(true);
157      }
158      fclose($fHandleSrc);
159    }
160    return(false);
161  }
162
163
164  /**
165   * uncompress $fileName in bz2 format to $uncompressedFile
166   *
167   * @param String $fileName: source file be uncompressed (in bz2 format)
168   * @param String $uncompressedFile: destination file uncompressed
169   * @return Boolean: true if Ok, otherwise false
170   */
171  static public function bunzip2($fileName, $uncompressedFile)
172  {
173    if(!function_exists('bzopen')) return(false);
174    if(!file_exists($fileName)) return(false);
175    if(file_exists($uncompressedFile)) unlink($uncompressedFile);
176    if(file_exists($uncompressedFile)) return(false);
177
178    $fHandleSrc=bzopen($fileName, 'r');
179    if($fHandleSrc)
180    {
181      $fHandleDest=fopen($uncompressedFile, 'w');
182
183      if($fHandleDest)
184      {
185        while(!feof($fHandleSrc))
186        {
187          $fContent=bzread($fHandleSrc, 8192);
188          fwrite($fHandleDest, $fContent);
189        }
190        fclose($fHandleDest);
191        bzclose($fHandleSrc);
192        return(true);
193      }
194      bzclose($fHandleSrc);
195    }
196    return(false);
197  }
198
199
200  /**
201   * Encapsulate the PclZip class for a simpler useage
202   * compress $filesNames to $compressedFile in zip format
203   *
204   * @param Array $filesNames: source files to be compressed
205   * @param String $compressedFile: destination file compressed
206   * @param Integer $compressionLevel: level compression 0 (none) to 9 (high)
207   * @return Boolean: true if Ok, otherwise false
208   */
209  static public function zip($filesNames, $compressedFile, $addedPath='', $removedPath='')
210  {
211    if(is_array($filesNames) and count($filesNames)==0) return(false);
212    if(!is_array($filesNames) and !file_exists($filesNames)) return(false);
213    if(file_exists($compressedFile)) unlink($compressedFile);
214    if(file_exists($compressedFile)) return(false);
215
216    if(!is_array($filesNames))
217      $filesNames=array($filesNames);
218
219    $files=array();
220    foreach($filesNames as $file)
221    {
222      if(file_exists($file)) $files[]=$file;
223    }
224
225    if(count($filesNames)==0) return(false);
226
227    $zipFile=new PclZip($compressedFile);
228    $result=$zipFile->create($filesNames, $addedPath, $removedPath);
229    if($result==0) return(false);
230    return(true);
231  }
232
233
234  /**
235   * Encapsulate the PclZip class for a simpler useage
236   * uncompress $compressedFile in zip format to $destination
237   *
238   * @param String $fileName: source file be uncompressed (in zip format)
239   * @param String $destination: destination file uncompressed
240   * @return Boolean: true if Ok, otherwise false
241   */
242  static public function unzip($fileName, $destination)
243  {
244    if(!file_exists($fileName)) return(false);
245    $zipFile=new PclZip($fileName);
246
247    $result=$zipFile->extract($destination);
248  }
249
250}
251
252
253?>
Note: See TracBrowser for help on using the repository browser.