diff --git a/admin/tool/admin_presets/classes/manager.php b/admin/tool/admin_presets/classes/manager.php index 3c1d67c5d2b..a691bac488d 100644 --- a/admin/tool/admin_presets/classes/manager.php +++ b/admin/tool/admin_presets/classes/manager.php @@ -399,6 +399,11 @@ class manager { $applied = array_merge($settingsapplied, $pluginsapplied); $skipped = array_merge($settingsskipped, $pluginsskipped); + if (!$simulate) { + // Store it in a config setting as the last preset applied. + set_config('lastpresetapplied', $presetid, 'tool_admin_presets'); + } + return [$applied, $skipped]; } diff --git a/admin/tool/admin_presets/tests/manager_test.php b/admin/tool/admin_presets/tests/manager_test.php index 884642b323a..c60e89fc32a 100644 --- a/admin/tool/admin_presets/tests/manager_test.php +++ b/admin/tool/admin_presets/tests/manager_test.php @@ -236,6 +236,14 @@ class manager_test extends \advanced_testcase { $this->assertArrayHasKey('assign', $enabledplugins); $enabledplugins = \core\plugininfo\qtype::get_enabled_plugins(); $this->assertArrayHasKey('truefalse', $enabledplugins); + + // Check the presetid has been also stored in the lastpresetapplied config setting. + $this->assertEquals($presetid, get_config('tool_admin_presets', 'lastpresetapplied')); + + // Call apply_preset as a simulation, so it shouldn't be applied and lastpresetapplied should still be $presetid. + $presetid2 = $generator->create_preset(); + $manager->apply_preset($presetid2, true); + $this->assertEquals($presetid, get_config('tool_admin_presets', 'lastpresetapplied')); }