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);
    }
예제 #3
0
             $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();