Merge branch 'MDL-50532-master' of git://github.com/FMCorz/moodle

This commit is contained in:
Andrew Nicols 2015-08-04 12:09:30 +08:00
commit ac41247254
2 changed files with 55 additions and 1 deletions

View file

@ -55,7 +55,7 @@ class manager {
}
$tasks = null;
require_once($file);
include($file);
if (!isset($tasks)) {
return array();
@ -86,6 +86,7 @@ class manager {
public static function reset_scheduled_tasks_for_component($componentname) {
global $DB;
$tasks = self::load_default_scheduled_tasks_for_component($componentname);
$validtasks = array();
foreach ($tasks as $taskid => $task) {
$classname = get_class($task);
@ -93,6 +94,8 @@ class manager {
$classname = '\\' . $classname;
}
$validtasks[] = $classname;
if ($currenttask = self::get_scheduled_task($classname)) {
if ($currenttask->is_customised()) {
// If there is an existing task with a custom schedule, do not override it.
@ -110,6 +113,16 @@ class manager {
$DB->insert_record('task_scheduled', $record);
}
}
// Delete any task that is not defined in the component any more.
$sql = "component = :component";
$params = array('component' => $componentname);
if (!empty($validtasks)) {
list($insql, $inparams) = $DB->get_in_or_equal($validtasks, SQL_PARAMS_NAMED, 'param', false);
$sql .= ' AND classname ' . $insql;
$params = array_merge($params, $inparams);
}
$DB->delete_records_select('task_scheduled', $sql, $params);
}
/**