public function cron() { global $CFG, $DB; $starttime = time(); mtrace('----------------------------------------------------------------------'); mtrace('enrol-uaims cron cron process launched at ' . userdate(time())); $dbtables = $DB->get_tables(false); if (!array_key_exists('eclass_course_management', $dbtables)) { mtrace('Automatic course opening/closing disabled. (eclass_course_management table does not exist.)'); } else { $autoopenclose = $this->get_config('enableautocourseopenclose'); if (isset($autoopenclose) && $autoopenclose) { $ecm = new EclassCourseManager($starttime); $coursesopened = $ecm->auto_open_courses(); $courseidstrings = $coursesopened == false ? array('none') : array_map('strval', $coursesopened); mtrace('Courses auto-opened: ' . implode(',', $courseidstrings)); $coursesclosed = $ecm->auto_close_courses(); $courseidstrings = $coursesclosed == false ? array('none') : array_map('strval', $coursesclosed); mtrace('Courses auto-closed: ' . implode(',', $courseidstrings)); } else { mtrace("Automatic course opening/closing disabled! (enrol_uaims/enableautocourseopenclose = {$autoopenclose})"); } } $timeelapsed = time() - $starttime; mtrace('enrol-uaims cron process has completed. Time taken: ' . $timeelapsed . ' seconds.'); }
public function test_auto_openclose_courses() { global $DB, $CFG; $this->resetAfterTest(true); $dbtables = $DB->get_tables(false); $this->assertEquals(true, array_key_exists('eclass_course_management', $dbtables)); $eergisteren = time() - 2 * 86400; $gisteren = time() - 86400; $morgen = time() + 86400; $overmorgen = time() + 2 * 86400; // Course names are appended with Start, Now, and End, in chronological order. $coursense = $this->create_course_vis_start_end(0, $morgen, $overmorgen); $coursesne = $this->create_course_vis_start_end(0, $gisteren, $morgen); $coursesen = $this->create_course_vis_start_end(0, $eergisteren, $gisteren); $coursenes = $this->create_course_vis_start_end(0, $overmorgen, $morgen); $courseens = $this->create_course_vis_start_end(1, $morgen, $gisteren); $courseesn = $this->create_course_vis_start_end(0, $gisteren, $eergisteren); // Bad course change data. $coursebadstart = $this->create_course_vis_start_end(0, 0, $overmorgen); $coursebadend = $this->create_course_vis_start_end(0, $gisteren, 0); $coursebadstartend = $this->create_course_vis_start_end(1, 0, 0); $courseopendone = $this->create_course_vis_start_end(0, $gisteren, $morgen, time() - 86000); $courseclosedone = $this->create_course_vis_start_end(1, $eergisteren, $gisteren, null, time() - 86000); // Model open/close info for a course which has been deleted. // Processing this record must not crash the functions. $deletedcourseid = $courseclosedone->id + 1; $ecmrecord = new stdClass(); $ecmrecord->courseid = $deletedcourseid; $ecmrecord->startdate = $eergisteren; $ecmrecord->enddate = $gisteren; $DB->insert_record('eclass_course_management', $ecmrecord); $ecm = new EclassCourseManager(time()); $ecm->auto_open_courses(); $this->check_courseid_vis_opened_closed($coursense->id, 0, true, null); $this->check_courseid_vis_opened_closed($coursesne->id, 1, false, null); $this->check_courseid_vis_opened_closed($coursesen->id, 1, false, null); $this->check_courseid_vis_opened_closed($coursenes->id, 0, true, null); $this->check_courseid_vis_opened_closed($courseens->id, 1, true, null); $this->check_courseid_vis_opened_closed($courseesn->id, 1, false, null); // Check the bad start/end date courses. $this->check_courseid_vis_opened_closed($coursebadstart->id, 0, true, true); $this->check_courseid_vis_opened_closed($coursebadend->id, 1, false, true); $this->check_courseid_vis_opened_closed($coursebadstartend->id, 1, true, true); $this->check_courseid_vis_opened_closed($courseopendone->id, 0, false, null); $this->check_courseid_vis_opened_closed($courseclosedone->id, 1, false, false); $ecm->auto_close_courses(); $this->check_courseid_vis_opened_closed($coursense->id, 0, null, true); $this->check_courseid_vis_opened_closed($coursesne->id, 1, null, true); $this->check_courseid_vis_opened_closed($coursesen->id, 0, null, false); $this->check_courseid_vis_opened_closed($coursenes->id, 0, null, true); $this->check_courseid_vis_opened_closed($courseens->id, 0, null, false); $this->check_courseid_vis_opened_closed($courseesn->id, 0, null, false); $this->check_courseid_vis_opened_closed($courseopendone->id, 0, false, true); $this->check_courseid_vis_opened_closed($courseclosedone->id, 1, false, false); }