@@ -390,7 +390,7 @@ public static function set_values($defaults, $values, $default_key = "") {
390
390
* @return array [description]
391
391
*/
392
392
public static function read_csv ($ filename , $ with_header = true , $ headers = null , $ delimiter = ', ' ) {
393
- $ data = array () ;
393
+ $ data = [] ;
394
394
$ index = 0 ;
395
395
$ header_count = $ headers ? count ($ headers ) : 0 ;
396
396
@@ -864,6 +864,70 @@ public static function to_object($array, $recursive = false) {
864
864
], $ array );
865
865
else return $ array ;
866
866
}
867
+
868
+ public static function unzip ($ zip_file , $ extract_path = null ) {
869
+ $ zip = new \ZipArchive ;
870
+ if ($ zip ->open ($ zip_file )) {
871
+ if (!$ extract_path ) {
872
+ $ path_info = pathinfo ($ zip_file );
873
+ $ extract_path = $ path_info ['dirname ' ].DS ;
874
+ }
875
+
876
+ $ zip ->extractTo ($ extract_path );
877
+ $ zip ->close ();
878
+ return true ;
879
+
880
+ } return false ;
881
+ }
882
+
883
+ /**
884
+ * Create a compressed zip file
885
+ * @param array $files files (filename => file_location)
886
+ * @param string $destination destination of the zip file
887
+ * @param boolean $overwrite overwrite if zip file exists
888
+ * @return [type] true if success, otherwise false
889
+ */
890
+ public static function zip ($ files = [], $ destination = '' , $ overwrite = false ) {
891
+ // if the zip file already exists and overwrite is false, return false
892
+ if (file_exists ($ destination ) && !$ overwrite ) {
893
+ return false ;
894
+ }
895
+
896
+ $ valid_files = [];
897
+ $ files = is_array ($ files ) ? $ files : [$ files ];
898
+ // if files were passed in...
899
+ if ($ files ) {
900
+ // cycle through each file
901
+ foreach ($ files as $ filename => $ file ) {
902
+ // make sure the file exists
903
+ if (file_exists ($ file )) {
904
+ if (is_int ($ filename )) $ filename = basename ($ file );
905
+ $ valid_files [$ filename ] = $ file ;
906
+ }
907
+ }
908
+ }
909
+
910
+ // if we have good files...
911
+ if (count ($ valid_files )) {
912
+ // create the archive
913
+ $ zip = new \ZipArchive ();
914
+ if ($ zip ->open ($ destination , \ZipArchive::OVERWRITE | \ZipArchive::CREATE ) !== true ) {
915
+ return false ;
916
+ }
917
+ // add the files
918
+ foreach ($ valid_files as $ filename => $ file ) {
919
+ $ zip ->addFile ($ file , $ filename );
920
+ }
921
+
922
+ // close the zip -- done!
923
+ $ zip ->close ();
924
+
925
+ // check to make sure the file exists
926
+ return file_exists ($ destination );
927
+ } else {
928
+ return false ;
929
+ }
930
+ }
867
931
}
868
932
869
933
?>
0 commit comments