MDL-72734 tool_task: consistent checks for running tasks from web.

This commit is contained in:
Paul Holden
2022-02-14 09:21:50 +00:00
parent 6994e82281
commit 77857ced5a
+7 -5
View File
@@ -47,15 +47,17 @@ $taskname = required_param('task', PARAM_RAW_TRIMMED);
require_admin();
$context = context_system::instance();
if (!get_config('tool_task', 'enablerunnow')) {
print_error('nopermissions', 'error', '', get_string('runnow', 'tool_task'));
}
// Check input parameter against all existing tasks (this ensures it isn't possible to
// create some kind of security problem by specifying a class that isn't a task or whatever).
$task = \core\task\manager::get_scheduled_task($taskname);
if (!$task) {
print_error('cannotfindinfo', 'error', $taskname);
throw new moodle_exception('cannotfindinfo', 'error', new moodle_url('/admin/tool/task/scheduledtasks.php'), $taskname);
}
$canruntasks = \core\task\manager::is_runnable() && get_config('tool_task', 'enablerunnow');
if (!$canruntasks || !$task->can_run()) {
throw new moodle_exception('nopermissions', 'error', new moodle_url('/admin/tool/task/scheduledtasks.php'),
get_string('runnow', 'tool_task'), $task->get_name());
}
// Start output.