/** * Enrol user into course via enrol instance. * * @param stdClass $instance * @param int $userid * @param int $roleid optional role id * @param int $timestart 0 means unknown * @param int $timeend 0 means forever * @param int $status default to ENROL_USER_ACTIVE for new enrolments, no change by default in updates * @param bool $recovergrades restore grade history * @return void */ public function enrol_user(stdClass $instance, $userid, $roleid = null, $timestart = 0, $timeend = 0, $status = null, $recovergrades = null) { global $DB, $USER, $CFG; // CFG necessary!!! if ($instance->courseid == SITEID) { throw new coding_exception('invalid attempt to enrol into frontpage course!'); } $name = $this->get_name(); $courseid = $instance->courseid; if ($instance->enrol !== $name) { throw new coding_exception('invalid enrol instance!'); } $context = context_course::instance($instance->courseid, MUST_EXIST); if (!isset($recovergrades)) { $recovergrades = $CFG->recovergradesdefault; } $inserted = false; $updated = false; if ($ue = $DB->get_record('user_enrolments', array('enrolid'=>$instance->id, 'userid'=>$userid))) { //only update if timestart or timeend or status are different. if ($ue->timestart != $timestart or $ue->timeend != $timeend or (!is_null($status) and $ue->status != $status)) { $this->update_user_enrol($instance, $userid, $status, $timestart, $timeend); } } else { $ue = new stdClass(); $ue->enrolid = $instance->id; $ue->status = is_null($status) ? ENROL_USER_ACTIVE : $status; $ue->userid = $userid; $ue->timestart = $timestart; $ue->timeend = $timeend; $ue->modifierid = $USER->id; $ue->timecreated = time(); $ue->timemodified = $ue->timecreated; $ue->id = $DB->insert_record('user_enrolments', $ue); $inserted = true; } if ($inserted) { /* Code stared by Raju T */ //Code lines added for send email to manual enroled users when enrolment is manual and Send course welcome message is cheked //The path is moodle2.8/enrol/manual/edit.php?courseid= if($instance->enrol =='manual'){ require_once($CFG->dirroot.'/lib/moodlelib.php'); require_once $CFG->dirroot.'/mod/facetoface/lib.php'; $local_batch_course=$DB->get_record_sql("SELECT lb.* FROM {local_batch_users} as lb where lb.userid=$userid and lb.courseid=$instance->courseid group by lb.id"); if(empty($local_batch_course)){ $sql ="SELECT course.*, ue.timecreated as time_enroled FROM {course} AS course JOIN {enrol} as en ON en.courseid=course.id and en.enrol='manual' JOIN {user_enrolments} AS ue ON ue.enrolid=en.id and ue.userid=$userid WHERE course.id=$instance->courseid"; $courses = $DB->get_record_sql($sql); if(!empty($courses)){ $to_userids=$DB->get_record('user',array('id'=>$userid)); $userenrolments=array(); $userenrolments[]=$DB->get_record_sql("SELECT * FROM {user_enrolments} where userid=$userid and enrolid in (SELECT id FROM {enrol} where courseid=$instance->courseid and enrol='manual')"); $emai_users=email_send_users_list($userenrolments,$instance->courseid); $to_emailid=$emai_users[0]; $to_userid=$emai_users[1]; if((!empty($to_emailid))&&(!empty($to_userid))){ e_learning_and_request_course_emails($instance,$to_emailid,'manual','', $to_userid); } } } }elseif($instance->enrol =='apply'){ require_once($CFG->dirroot.'/lib/moodlelib.php'); require_once $CFG->dirroot.'/mod/facetoface/lib.php'; $local_batch_course=$DB->get_record_sql("SELECT lb.* FROM {local_batch_users} as lb where lb.userid=$userid and lb.courseid=$instance->courseid group by lb.id"); if(empty($local_batch_course)){ //print_object($instance);exit; $sql ="SELECT course.*, ue.timecreated as time_enroled FROM {course} AS course JOIN {enrol} as en ON en.courseid=course.id and en.enrol='apply' JOIN {user_enrolments} AS ue ON ue.enrolid=en.id and ue.userid=$userid WHERE course.id=$instance->courseid"; $courses = $DB->get_record_sql($sql); if(!empty($courses)){ $to_userids=$DB->get_record('user',array('id'=>$userid)); $userenrolments=array(); $userenrolments[]=$DB->get_record_sql("SELECT * FROM {user_enrolments} where userid=$userid and enrolid in (SELECT id FROM {enrol} where courseid=$instance->courseid and enrol='apply')"); $emai_users=email_send_users_list($userenrolments,$instance->courseid); $to_emailid=$emai_users[0]; $to_userid=$emai_users[1]; if((!empty($to_emailid))&&(!empty($to_userid))){ e_learning_and_request_course_emails($instance,$to_emailid,'apply','',$to_userid); //e_learning_and_request_course_emails($instance,$userid,'apply'); } } } } /* Code ends by Raju T */ // Trigger event. $event = \core\event\user_enrolment_created::create( array( 'objectid' => $ue->id, 'courseid' => $courseid, 'context' => $context, 'relateduserid' => $ue->userid, 'other' => array('enrol' => $name) ) ); $event->trigger(); } if ($roleid) { // this must be done after the enrolment event so that the role_assigned event is triggered afterwards if ($this->roles_protected()) { role_assign($roleid, $userid, $context->id, 'enrol_'.$name, $instance->id); } else { role_assign($roleid, $userid, $context->id); } } // Recover old grades if present. if ($recovergrades) { require_once("$CFG->libdir/gradelib.php"); grade_recover_history_grades($userid, $courseid); } // reset current user enrolment caching if ($userid == $USER->id) { if (isset($USER->enrol['enrolled'][$courseid])) { unset($USER->enrol['enrolled'][$courseid]); } if (isset($USER->enrol['tempguest'][$courseid])) { unset($USER->enrol['tempguest'][$courseid]); remove_temp_course_roles($context); } } }
function cancelEnrolment($enrols){ global $DB; global $CFG; require_once($CFG->dirroot.'/lib/moodlelib.php'); require_once $CFG->dirroot.'/mod/facetoface/lib.php'; foreach ($enrols as $enrol){ $info = getRelatedInfo($enrol); $userenrolment = $DB->get_record_sql('select * from '.$CFG->prefix.'user_enrolments where id='.$enrol); $userenrolments=array($userenrolment); $user_course=$DB->get_record_sql('select * from '.$CFG->prefix.'enrol where id='.$userenrolment->enrolid); $local_batch_course=$DB->get_record_sql("SELECT lb.* FROM {local_batch_users} as lb where lb.userid=$userenrolment->userid and lb.courseid=$user_course->courseid group by lb.id"); if(empty($local_batch_course)){ //print_object($instance);exit; $sql ="SELECT course.*, ue.timecreated as time_enroled FROM {course} AS course JOIN {enrol} as en ON en.courseid=course.id and en.enrol='apply' JOIN {user_enrolments} AS ue ON ue.enrolid=en.id and ue.userid=$userenrolment->userid WHERE course.id=$user_course->courseid"; $courses = $DB->get_record_sql($sql); if(!empty($courses)){ $emai_users=email_send_users_list($userenrolments,$user_course->courseid); $to_emailid=$emai_users[0]; $to_userid=$emai_users[1]; if((!empty($to_emailid))&&(!empty($to_userid))){ e_learning_and_request_course_emails($user_course,$to_emailid,'apply','apply_cancel',$to_userid); } } } if($DB->delete_records('user_enrolments',array('id'=>$enrol))){ //sendCancelMail($info); } } }