diff options
| author | 2021-02-20 18:51:53 -0500 | |
|---|---|---|
| committer | 2021-02-21 00:51:53 +0100 | |
| commit | fd803875410cf056242a786260fb8ed62a733c06 (patch) | |
| tree | 07285ab6bd99feb17d28b673f698eab25a5d3889 /app/Controllers/importExportController.php | |
| parent | 75711c3647cd89fb175e786d85544eaf4e7c6e71 (diff) | |
Change zip handling methods (#3470)
Before, we were using zip function but they are marked as deprecated as of
PHP 8.0. It's not safe to use them anymore since they can be removed at any
given time.
Now, we are using the ZipArchive class to handle our zip methods. It's safe
to use it since it's available for PHP 5.2 and higher.
See #3460
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); } |
