diff options
Diffstat (limited to 'app/Controllers/importExportController.php')
| -rw-r--r-- | app/Controllers/importExportController.php | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/app/Controllers/importExportController.php b/app/Controllers/importExportController.php index aa9ffaba7..d23bb3689 100644 --- a/app/Controllers/importExportController.php +++ b/app/Controllers/importExportController.php @@ -64,31 +64,24 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { // We try to list all files according to their type $list = array(); - if ($type_file === 'zip' && extension_loaded('zip')) { - $zip = zip_open($path); - if (!is_resource($zip)) { + if ('zip' === $type_file && extension_loaded('zip')) { + $zip = new ZipArchive(); + $result = $zip->open($path); + if (true !== $result) { // zip_open cannot open file: something is wrong - throw new FreshRSS_Zip_Exception($zip); + throw new FreshRSS_Zip_Exception($result); } - while (($zipfile = zip_read($zip)) !== false) { - if (!is_resource($zipfile)) { - // zip_entry() can also return an error code! - throw new FreshRSS_Zip_Exception($zipfile); - } else { - $type_zipfile = self::guessFileType(zip_entry_name($zipfile)); - if ($type_file !== 'unknown') { - $list_files[$type_zipfile][] = zip_entry_read( - $zipfile, - zip_entry_filesize($zipfile) - ); - } + for ($i = 0; $i < $zip->numFiles; $i++) { + $type_zipfile = self::guessFileType($zip->getNameIndex($i)); + if ('unknown' !== $type_zipfile) { + $list_files[$type_zipfile][] = $zip->getFromIndex($i); } } - zip_close($zip); - } elseif ($type_file === 'zip') { + $zip->close(); + } elseif ('zip' === $type_file) { // ZIP extension is not loaded throw new FreshRSS_ZipMissing_Exception(); - } elseif ($type_file !== 'unknown') { + } elseif ('unknown' !== $type_file) { $list_files[$type_file][] = file_get_contents($path); } |
