Browse Source

fix import_export plugin for open_basedir; add missing closing form tags to import_export and googleimport plugin

Andrew Dolgov 6 years ago
parent
commit
b229a18456
2 changed files with 27 additions and 3 deletions
  1. 1 0
      plugins/googlereaderimport/init.php
  2. 26 3
      plugins/import_export/init.php

+ 1 - 0
plugins/googlereaderimport/init.php

@@ -374,6 +374,7 @@ class GoogleReaderImport extends Plugin {
 			<button dojoType=\"dijit.form.Button\" onclick=\"return starredImport();\" type=\"submit\">" .
 			__('Import my Starred items') . "</button>";
 
+		print "</form>";
 
 		print "</div>"; #pane
 	}

+ 26 - 3
plugins/import_export/init.php

@@ -83,6 +83,7 @@ class Import_Export extends Plugin implements IHandler {
 			<button dojoType=\"dijit.form.Button\" onclick=\"return importData();\" type=\"submit\">" .
 			__('Import') . "</button>";
 
+		print "</form>";
 
 		print "</div>"; # pane
 	}
@@ -416,13 +417,35 @@ class Import_Export extends Plugin implements IHandler {
 
 		print "<div style='text-align : center'>";
 
-		if (is_file($_FILES['export_file']['tmp_name'])) {
+		if ($_FILES['export_file']['error'] != 0) {
+			print_error(T_sprintf("Upload failed with error code %d",
+				$_FILES['export_file']['error']));
+			return;
+		}
+
+		$tmp_file = false;
 
-			$this->perform_data_import($this->link, $_FILES['export_file']['tmp_name'], $_SESSION['uid']);
+		if (is_uploaded_file($_FILES['export_file']['tmp_name'])) {
+			$tmp_file = tempnam(CACHE_DIR . '/upload', 'export');
 
+			$result = move_uploaded_file($_FILES['export_file']['tmp_name'],
+				$tmp_file);
+
+			if (!$result) {
+				print_error(__("Unable to move uploaded file."));
+				return;
+			}
 		} else {
-			print "<p>" . T_sprintf("Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)", ini_get("upload_max_filesize")) . " or use CLI import tool.</p>";
+			print_error(__('Error: please upload OPML file.'));
+			return;
+		}
 
+		if (is_file($tmp_file)) {
+			$this->perform_data_import($this->link, $tmp_file, $_SESSION['uid']);
+			unlink($tmp_file);
+		} else {
+			print_error(__('No file uploaded.'));
+			return;
 		}
 
 		print "<button dojoType=\"dijit.form.Button\"