Bläddra i källkod

Improve import system

Catch errors of zip_open and log it. A notification is shown to indicate
something went wrong.

See https://github.com/marienfressinaud/FreshRSS/issues/494
Marien Fressinaud 11 år sedan
förälder
incheckning
8ffd59f34a
3 ändrade filer med 16 tillägg och 0 borttagningar
  1. 14 0
      app/Controllers/importExportController.php
  2. 1 0
      app/i18n/en.php
  3. 1 0
      app/i18n/fr.php

+ 14 - 0
app/Controllers/importExportController.php

@@ -42,6 +42,20 @@ class FreshRSS_importExport_Controller extends Minz_ActionController {
 			if ($type_file === 'zip' && extension_loaded('zip')) {
 				$zip = zip_open($file['tmp_name']);
 
+				if (!is_resource($zip)) {
+					Minz_Log::error(
+						'Zip file cannot be imported. Error code: ' . $zip
+					);
+
+					// zip_open cannot open file: something is wrong
+					Minz_Session::_param('notification', array(
+						'type' => 'bad',
+						'content' => _t('zip_error')
+					));
+
+					Minz_Request::forward(array('c' => 'importExport'), true);
+				}
+
 				while (($zipfile = zip_read($zip)) !== false) {
 					$type_zipfile = $this->guessFileType(
 						zip_entry_name($zipfile)

+ 1 - 0
app/i18n/en.php

@@ -184,6 +184,7 @@ return array (
 	'file_to_import'		=> 'File to import<br />(OPML, Json or Zip)',
 	'file_to_import_no_zip'		=> 'File to import<br />(OPML or Json)',
 	'import'			=> 'Import',
+	'zip_error'			=> 'An error occured during Zip import.',
 	'no_zip_extension'		=> 'Zip extension is not present on your server.',
 	'export'			=> 'Export',
 	'export_opml'			=> 'Export list of feeds (OPML)',

+ 1 - 0
app/i18n/fr.php

@@ -184,6 +184,7 @@ return array (
 	'file_to_import'		=> 'Fichier à importer<br />(OPML, Json ou Zip)',
 	'file_to_import_no_zip'		=> 'Fichier à importer<br />(OPML ou Json)',
 	'import'			=> 'Importer',
+	'zip_error'			=> 'Une erreur est survenue durant l’import du fichier Zip.',
 	'no_zip_extension'		=> 'L’extension Zip n’est pas présente sur votre serveur.',
 	'export'			=> 'Exporter',
 	'export_opml'			=> 'Exporter la liste des flux (OPML)',