public function test_reset_scheduled_tasks_for_component() { global $DB; $this->resetAfterTest(true); // Remember the defaults. $defaulttasks = \core\task\manager::load_scheduled_tasks_for_component('moodle'); $initcount = count($defaulttasks); // Customise a task. $firsttask = reset($defaulttasks); $firsttask->set_minute('1'); $firsttask->set_hour('2'); $firsttask->set_month('3'); $firsttask->set_day_of_week('4'); $firsttask->set_day('5'); $firsttask->set_customised('1'); \core\task\manager::configure_scheduled_task($firsttask); $firsttaskrecord = \core\task\manager::record_from_scheduled_task($firsttask); // We reset this field, because we do not want to compare it. $firsttaskrecord->nextruntime = '0'; // Delete a task to simulate the fact that its new. $secondtask = next($defaulttasks); $DB->delete_records('task_scheduled', array('classname' => '\\' . trim(get_class($secondtask), '\\'))); $this->assertFalse(\core\task\manager::get_scheduled_task(get_class($secondtask))); // Edit a task to simulate a change in its definition (as if it was not customised). $thirdtask = next($defaulttasks); $thirdtask->set_minute('1'); $thirdtask->set_hour('2'); $thirdtask->set_month('3'); $thirdtask->set_day_of_week('4'); $thirdtask->set_day('5'); $thirdtaskbefore = \core\task\manager::get_scheduled_task(get_class($thirdtask)); $thirdtaskbefore->set_next_run_time(null); // Ignore this value when comparing. \core\task\manager::configure_scheduled_task($thirdtask); $thirdtask = \core\task\manager::get_scheduled_task(get_class($thirdtask)); $thirdtask->set_next_run_time(null); // Ignore this value when comparing. $this->assertNotEquals($thirdtaskbefore, $thirdtask); // Now call reset on all the tasks. \core\task\manager::reset_scheduled_tasks_for_component('moodle'); // Load the tasks again. $defaulttasks = \core\task\manager::load_scheduled_tasks_for_component('moodle'); $finalcount = count($defaulttasks); // Compare the first task. $newfirsttask = reset($defaulttasks); $newfirsttaskrecord = \core\task\manager::record_from_scheduled_task($newfirsttask); // We reset this field, because we do not want to compare it. $newfirsttaskrecord->nextruntime = '0'; // Assert a customised task was not altered by reset. $this->assertEquals($firsttaskrecord, $newfirsttaskrecord); // Assert that the second task was added back. $secondtaskafter = \core\task\manager::get_scheduled_task(get_class($secondtask)); $secondtaskafter->set_next_run_time(null); // Do not compare the nextruntime. $secondtask->set_next_run_time(null); $this->assertEquals($secondtask, $secondtaskafter); // Assert that the third task edits were overridden. $thirdtaskafter = \core\task\manager::get_scheduled_task(get_class($thirdtask)); $thirdtaskafter->set_next_run_time(null); $this->assertEquals($thirdtaskbefore, $thirdtaskafter); // Assert we have the same number of tasks. $this->assertEquals($initcount, $finalcount); }
public function test_reset_scheduled_tasks_for_component() { global $DB; $this->resetAfterTest(true); // Remember the defaults. $defaulttasks = \core\task\manager::load_scheduled_tasks_for_component('moodle'); $initcount = count($defaulttasks); // Customise a task. $firsttask = reset($defaulttasks); $firsttask->set_minute('1'); $firsttask->set_hour('2'); $firsttask->set_month('3'); $firsttask->set_day_of_week('4'); $firsttask->set_day('5'); $firsttask->set_customised('1'); \core\task\manager::configure_scheduled_task($firsttask); $firsttaskrecord = \core\task\manager::record_from_scheduled_task($firsttask); // We reset this field, because we do not want to compare it. $firsttaskrecord->nextruntime = '0'; // Now call reset on all the tasks. \core\task\manager::reset_scheduled_tasks_for_component('moodle'); // Load the tasks again. $defaulttasks = \core\task\manager::load_scheduled_tasks_for_component('moodle'); $finalcount = count($defaulttasks); // Compare the first task. $newfirsttask = reset($defaulttasks); $newfirsttaskrecord = \core\task\manager::record_from_scheduled_task($newfirsttask); // We reset this field, because we do not want to compare it. $newfirsttaskrecord->nextruntime = '0'; // Assert a customised task was not altered by reset. $this->assertEquals($firsttaskrecord, $newfirsttaskrecord); // Assert we have the same number of tasks. $this->assertEquals($initcount, $finalcount); }
$task->set_month($defaulttask->get_month()); $task->set_day_of_week($defaulttask->get_day_of_week()); $task->set_day($defaulttask->get_day()); $task->set_disabled($defaulttask->get_disabled()); $task->set_customised(false); } else { $task->set_minute($data->minute); $task->set_hour($data->hour); $task->set_month($data->month); $task->set_day_of_week($data->dayofweek); $task->set_day($data->day); $task->set_disabled($data->disabled); $task->set_customised(true); } try { \core\task\manager::configure_scheduled_task($task); redirect($PAGE->url, get_string('changessaved'), null, \core\output\notification::NOTIFY_SUCCESS); } catch (Exception $e) { redirect($PAGE->url, $e->getMessage(), null, \core\output\notification::NOTIFY_ERROR); } } else { echo $OUTPUT->header(); echo $OUTPUT->heading(get_string('edittaskschedule', 'tool_task', $task->get_name())); $mform->display(); echo $OUTPUT->footer(); } } else { echo $OUTPUT->header(); $tasks = core\task\manager::get_all_scheduled_tasks(); echo $renderer->scheduled_tasks_table($tasks); echo $OUTPUT->footer();