MDL-46207 Tasks: Do not run tasks if their component is disabled.
This can be overridden on a per task basis by implementing: get_run_if_component_disabled() in the scheduled task.
This commit is contained in:
@@ -456,6 +456,8 @@ class manager {
|
||||
$params = array('timestart1' => $timestart, 'timestart2' => $timestart);
|
||||
$records = $DB->get_records_select('task_scheduled', $where, $params);
|
||||
|
||||
$pluginmanager = \core_plugin_manager::instance();
|
||||
|
||||
foreach ($records as $record) {
|
||||
|
||||
if ($lock = $cronlockfactory->get_lock(($record->classname), 10)) {
|
||||
@@ -463,6 +465,17 @@ class manager {
|
||||
$task = self::scheduled_task_from_record($record);
|
||||
|
||||
$task->set_lock($lock);
|
||||
|
||||
// See if the component is disabled.
|
||||
$plugininfo = $pluginmanager->get_plugin_info($task->get_component());
|
||||
|
||||
if ($plugininfo) {
|
||||
if (!$task->get_run_if_component_disabled() && !$plugininfo->is_enabled()) {
|
||||
$lock->release();
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$task->is_blocking()) {
|
||||
$cronlock->release();
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user