/lib/includes/js/mootools-filemanager/Assets/Connector/Assets/demos/demo.zip.php

https://github.com/KenBoyer/CompactCMS · PHP · 79 lines · 61 code · 5 blank · 13 comment · 15 complexity · 119a706613bab914f1c193fff3085645 MD5 · raw file

  1. <?php
  2. /////////////////////////////////////////////////////////////////
  3. /// getID3() by James Heinrich <info@getid3.org> //
  4. // available at http://getid3.sourceforge.net //
  5. // or http://www.getid3.org //
  6. /////////////////////////////////////////////////////////////////
  7. // //
  8. // /demo/demo.zip.php - part of getID3() //
  9. // Sample script how to use getID3() to decompress zip files //
  10. // See readme.txt for more details //
  11. // ///
  12. /////////////////////////////////////////////////////////////////
  13. function UnzipFileContents($filename, &$errors) {
  14. $errors = array();
  15. $DecompressedFileContents = array();
  16. if (include_once('getid3.module.archive.zip.php')) {
  17. ob_start();
  18. if ($fp_ziptemp = fopen($filename, 'rb')) {
  19. ob_end_clean();
  20. $ThisFileInfo['filesize'] = filesize($filename);
  21. $getid3_zip = new getid3_zip($fp_ziptemp, $ThisFileInfo);
  22. if (($ThisFileInfo['fileformat'] == 'zip') && !empty($ThisFileInfo['zip']['files'])) {
  23. if (!empty($ThisFileInfo['zip']['central_directory'])) {
  24. $ZipDirectoryToWalk = $ThisFileInfo['zip']['central_directory'];
  25. } elseif (!empty($ThisFileInfo['zip']['entries'])) {
  26. $ZipDirectoryToWalk = $ThisFileInfo['zip']['entries'];
  27. } else {
  28. $errors[] = 'failed to parse ZIP attachment "'.$piece_filename.'" (no central directory)<br>';
  29. fclose($fp_ziptemp);
  30. return false;
  31. }
  32. foreach ($ZipDirectoryToWalk as $key => $valuearray) {
  33. fseek($fp_ziptemp, $valuearray['entry_offset'], SEEK_SET);
  34. $LocalFileHeader = $getid3_zip->ZIPparseLocalFileHeader($fp_ziptemp);
  35. if ($LocalFileHeader['flags']['encrypted']) {
  36. // password-protected
  37. $DecompressedFileContents[$valuearray['filename']] = '';
  38. } else {
  39. fseek($fp_ziptemp, $LocalFileHeader['data_offset'], SEEK_SET);
  40. $compressedFileData = '';
  41. while ((strlen($compressedFileData) < $LocalFileHeader['compressed_size']) && !feof($fp_ziptemp)) {
  42. $compressedFileData .= fread($fp_ziptemp, 4096);
  43. }
  44. switch ($LocalFileHeader['raw']['compression_method']) {
  45. case 0:
  46. // store - great, do nothing at all
  47. $uncompressedFileData = $compressedFileData;
  48. break;
  49. case 8:
  50. $uncompressedFileData = gzinflate($compressedFileData);
  51. break;
  52. default:
  53. $DecompressedFileContents[$valuearray['filename']] = '';
  54. $errors[] = 'unknown ZIP compression method ('.$LocalFileHeader['raw']['compression_method'].')';
  55. continue 2;
  56. }
  57. $DecompressedFileContents[$valuearray['filename']] = $uncompressedFileData;
  58. unset($compressedFileData);
  59. }
  60. }
  61. } else {
  62. $errors[] = $filename.' does not appear to be a zip file';
  63. }
  64. } else {
  65. $error_message = ob_get_contents();
  66. ob_end_clean();
  67. $errors[] = 'failed to fopen('.$filename.', rb): '.$error_message;
  68. }
  69. } else {
  70. $errors[] = 'failed to include_once(getid3.module.archive.zip.php)';
  71. }
  72. return $DecompressedFileContents;
  73. }
  74. ?>