/** * Function to be run periodically according to the moodle * This function searches for things that need to be done, such * as sending out mail, toggling flags etc ... * @return boolean always true * @uses $CFG * @uses $DB */ function scheduler_cron() { global $CFG, $DB; $date = make_timestamp(date('Y'), date('m'), date('d'), date('H'), date('i')); // for every appointment in all schedulers $select = 'emaildate > 0 AND emaildate <= ? AND starttime > ?'; $slots = $DB->get_records_select('scheduler_slots', $select, array($date, $date), 'starttime'); foreach ($slots as $slot) { // get teacher $teacher = $DB->get_record('user', array('id' => $slot->teacherid)); // get scheduler, slot and course $scheduler = scheduler_instance::load_by_id($slot->schedulerid); $slotm = $scheduler->get_slot($slot->id); $course = $DB->get_record('course', array('id' => $scheduler->course)); // get appointed student list $appointments = $DB->get_records('scheduler_appointment', array('slotid' => $slot->id), '', 'id, studentid'); //if no email previously sent and one is required foreach ($appointments as $appointment) { $student = $DB->get_record('user', array('id' => $appointment->studentid)); cron_setup_user($student, $course); $vars = scheduler_get_mail_variables($scheduler, $slotm, $teacher, $student, $course, $student); scheduler_send_email_from_template($student, $teacher, $course, 'remindtitle', 'reminder', $vars, 'scheduler'); } // mark as sent $slot->emaildate = -1; $DB->update_record('scheduler_slots', $slot); } cron_setup_user(); return true; }
case 'revokeall': $slotid = required_param('slotid', PARAM_INT); $slot = $scheduler->get_slot($slotid); $oldstudents = array(); foreach ($slot->get_appointments() as $app) { $oldstudents[] = $app->studentid; $slot->remove_appointment($app); } // notify student if ($scheduler->allownotifications) { foreach ($oldstudents as $oldstudent) { include_once $CFG->dirroot . '/mod/scheduler/mailtemplatelib.php'; $student = $DB->get_record('user', array('id' => $oldstudent)); $teacher = $DB->get_record('user', array('id' => $slot->teacherid)); $vars = scheduler_get_mail_variables($scheduler, $slot, $teacher, $student, $COURSE, $student); scheduler_send_email_from_template($student, $teacher, $COURSE, 'cancelledbyteacher', 'teachercancelled', $vars, 'scheduler'); } } $slot->save(); break; /************************************ Toggling to unlimited group ***************************************/ /************************************ Toggling to unlimited group ***************************************/ case 'allowgroup': $slotid = required_param('slotid', PARAM_INT); $slot = new stdClass(); $slot->id = $slotid; $slot->exclusivity = 0; $DB->update_record('scheduler_slots', $slot); break; /************************************ Toggling to single student ******************************************/ /************************************ Toggling to single student ******************************************/