aboutsummaryrefslogtreecommitdiff
path: root/app/Controllers/importExportController.php
diff options
context:
space:
mode:
authorGravatar Alexis Degrugillier <aledeg@users.noreply.github.com> 2021-02-20 18:51:53 -0500
committerGravatar GitHub <noreply@github.com> 2021-02-21 00:51:53 +0100
commitfd803875410cf056242a786260fb8ed62a733c06 (patch)
tree07285ab6bd99feb17d28b673f698eab25a5d3889 /app/Controllers/importExportController.php
parent75711c3647cd89fb175e786d85544eaf4e7c6e71 (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.php31
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);
}