diff --git a/admin/tool/langimport/classes/controller.php b/admin/tool/langimport/classes/controller.php
index 0c827b4c2f3..494d48c19d3 100644
--- a/admin/tool/langimport/classes/controller.php
+++ b/admin/tool/langimport/classes/controller.php
@@ -24,6 +24,8 @@
namespace tool_langimport;
+use moodle_url;
+
defined('MOODLE_INTERNAL') || die();
require_once($CFG->libdir.'/filelib.php');
require_once($CFG->libdir.'/componentlib.class.php');
@@ -59,6 +61,25 @@ class controller {
$this->availablelangs = $this->installer->get_remote_list_of_languages();
}
+ /**
+ * Redirect to the specified url, outputting any required messages.
+ *
+ * @param moodle_url $url
+ */
+ public function redirect(moodle_url $url): void {
+ if ($this->info) {
+ $info = implode('
', $this->info);
+ \core\notification::success($info);
+ }
+
+ if ($this->errors) {
+ $info = implode('
', $this->errors);
+ \core\notification::error($info);
+ }
+
+ redirect($url);
+ }
+
/**
* Install language packs provided
*
diff --git a/admin/tool/langimport/index.php b/admin/tool/langimport/index.php
index b4bd4a47171..e5057a625db 100644
--- a/admin/tool/langimport/index.php
+++ b/admin/tool/langimport/index.php
@@ -76,12 +76,12 @@ if (($mode == INSTALLATION_OF_SELECTED_LANG) and confirm_sesskey() and !empty($p
if (is_array($pack) && count($pack) > 1) {
// Installing multiple languages can take a while - perform it asynchronously in the background.
$controller->schedule_languagepacks_installation($pack);
- redirect($PAGE->url);
+ $controller->redirect($PAGE->url);
} else {
// Single language pack to be installed synchronously. It should be reasonably quick and can be used for debugging, too.
core_php_time_limit::raise();
$controller->install_languagepacks($pack);
- redirect($PAGE->url);
+ $controller->redirect($PAGE->url);
}
}
@@ -110,7 +110,7 @@ if ($mode == DELETION_OF_SELECTED_LANG and (!empty($uninstalllang) or !empty($co
foreach ($uninstalllang as $ulang) {
$controller->uninstall_language($ulang);
}
- redirect($PAGE->url);
+ $controller->redirect($PAGE->url);
}
}