/** * 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 simple_template_for_batches($facetofaceid,$session_cancel=0){ global $DB,$CFG,$USER,$SITE; $sentby_name=fullname($DB->get_record('user',array('id'=>$USER->id))); $sentby_id=$USER->id; $facetoface=$DB->get_record_sql("SELECT * FROM {facetoface} where id=$facetofaceid"); if($session_cancel==0 || $session_cancel==2){ $facetofacesessions=$DB->get_records_sql("SELECT * FROM {facetoface_sessions} fss JOIN {facetoface_sessions_dates} as fsd ON fsd.sessionid=fss.id where facetoface=$facetoface->id"); } //print_object($facetofacesessions); $facetoface_users=$DB->get_records_sql("SELECT * FROM {local_batch_users} where f2fid=$facetoface->id"); $facetoface_course=$DB->get_record_sql("SELECT * FROM {local_batch_courses} where batchid=$facetoface->id"); if((!empty($facetoface)) && (!empty($facetoface_users))){ $mail=new stdClass(); switch($facetoface->active){ case 1: if($session_cancel==0){ $mailsubject=get_string('subject_active', 'facetoface'); }elseif($session_cancel==2){ $mailsubject=get_string('subject_active_session_cancel', 'facetoface'); } $mail->batch_status=get_string('batch_active', 'facetoface'); break; case 8: $mailsubject=get_string('subject_complete', 'facetoface'); $mail->batch_status=get_string('batch_complete', 'facetoface'); break; case 2: $mailsubject=get_string('subject_cancel', 'facetoface'); $mail->batch_status=get_string('batch_cancel', 'facetoface'); break; case 0: $batch_cousre=$DB->get_record('course',array('id'=>$facetoface_course->courseid)); $tataaia = new stdclass(); $tataaia->picture3 = $CFG->wwwroot.'/mod/facetoface/pix/Picture3.png'; $tataaia->picture2 = $CFG->wwwroot.'/mod/facetoface/pix/Picture2.png'; $tataaia->programname = $batch_cousre->fullname; $tataaia->date = date("d M, Y ",$facetoface->startdate); $tataaia->time = date("g:i a",$facetoface->startdate);; $tataaia->venue = 'Thane Training Room'; $tataaia->summary =strip_tags($batch_cousre->summary); $tataaia->summary2 = 'Request you to please discuss with your supervisor, plan your work and make sure that you attend this program'; $tataaia->senderfullname = 'Jagadeep M.P'; $tataaia->designation = 'Manager-Training & Development'; $tataaia->mobileno = '9000 469 5151'; $mailsubject="Batch Start Invitation"; $mail->batch_status=get_string('batch_active', 'facetoface'); } $mail->batch_name=$facetoface->name; $mail->batch_startdate=date("d M, Y ",$facetoface->startdate); $mail->batch_enddate=date("d M, Y ",$facetoface->enddate); $tariner_name=$DB->get_record('user',array('id'=>$facetoface->trainerid)); $mail->tariner_name=fullname($tariner_name); if($facetoface_course){ if($facetoface_course->courseid!=0){ $batch_cousre=$DB->get_field('course','fullname',array('id'=>$facetoface_course->courseid)); $mail->batch_course=$batch_cousre; }else{ $mail->batch_course="-----"; } if($facetoface_course->testid!=0){ $quiz=$DB->get_record('quiz',array('id'=>$facetoface_course->testid)); $mail->test_name=$quiz->name; $course_completion_check=$DB->record_exists_sql("SELECT * FROM {course_completion_criteria} cc, {course} c Where c.id=$facetoface_course->courseid and c.id=cc.course and c.enablecompletion=1 AND cc.module IS NOT NULL AND cc.moduleinstance in (SELECT id FROM {course_modules} where course=$facetoface_course->courseid and instance=$facetoface_course->testid)"); if($course_completion_check==1){ $mail->test_status=get_string('test_completed', 'facetoface'); }else{ $mail->test_status=get_string('test_not_completed', 'facetoface'); } }else{ $mail->test_name="-----"; $mail->test_status="-----"; } } if($facetofacesessions && ($session_cancel==0 || $session_cancel==2)){ $session_mail='<h2 style="text-align:center;font-weight:bold;">SESSION DETAILS</h2>'; $session_mail.='<table style="border:1px solid #333;">'; $i=1; foreach($facetofacesessions as $sessiondate){ //print_object($sessiondate); $sessiondates=new stdClass(); $timenow = time(); if (!empty($html)) { $html= html_writer::empty_tag('br'); } $sessionobj = facetoface_format_session_times($sessiondate->timestart, $sessiondate->timefinish, $sessiondate->sessiontimezone); if ($sessionobj->startdate == $sessionobj->enddate) { $html .= $sessionobj->startdate . ', '; } else { $html .= $sessionobj->startdate . ' - ' . $sessionobj->enddate . ', '; } $html .= $sessionobj->starttime . ' - ' . $sessionobj->endtime . ' ' . $sessionobj->timezone; $duration=round(($sessiondate->duration/60),2); $session_mail.='<tr>'; $session_mail.='<td style="border:1px solid #333;">Session '.$i.' '.'Timings : </td>'; $session_mail.='<td style="border:1px solid #333;"><b>'.$html.'</b></td>'; $session_mail.='<td style="border:1px solid #333;">Duration : </td>'; $session_mail.='<td style="border:1px solid #333;"><b>'.$duration.' Hours </b></td>'; if ($sessiondate->roomid) { $room = $DB->get_record('facetoface_room', array('id' => $sessiondate->roomid)); $sessionroom = $room->name." ". $room->building." ".$room->address; }else{ $sessionroom = "----"; } $sessiondates->datetimeknown=$sessiondate->datetimeknown; $sessiondates->sessiondates=facetoface_get_session_dates($sessiondate->id); //print_object($sessiondates); $session_cancel=$DB->get_record_sql("SELECT * FROM {facetoface_signups} as fsg JOIN {facetoface_signups_status} as fsst on fsst.signupid=fsg.id where fsg.sessionid=$sessiondate->id group by fsg.sessionid"); if($session_cancel->statuscode==10){ $status = get_string('sessionincancel', 'facetoface'); }else{ if ($sessiondate->datetimeknown && facetoface_has_session_started($sessiondates, $timenow) && !facetoface_is_session_in_progress($sessiondates, $timenow)) { $status = get_string('sessioninprogress', 'facetoface'); } else if ($sessiondate->datetimeknown && facetoface_has_session_started($sessiondates, $timenow)&&facetoface_is_session_in_progress($sessiondates, $timenow)) { $status = get_string('sessionover', 'facetoface'); } } $session_mail.='<td style="border:1px solid #333;">Room : </td>'; $session_mail.='<td style="border:1px solid #333;"><b>'.$sessionroom.'</b></td>'; $session_mail.='<td style="border:1px solid #333;">Status : </td>'; $session_mail.='<td style="border:1px solid #333;"><b>'.$status.'</b></td>'; $session_mail.='</tr>'; $i++; } $session_mail.='</table>'; $mail->sessions_details=$session_mail; }else{ $mail->sessions_details=""; } $userenrolments=array(); foreach($facetoface_users as $facetoface_user){ $user=$DB->get_record('user',array('id'=>$facetoface_user->userid)); if($facetoface_course){ $userenrolments[]=$DB->get_record_sql("SELECT * FROM {user_enrolments} where userid=$facetoface_user->userid and enrolid in (SELECT id FROM {enrol} where courseid=$facetoface_course->courseid and enrol='manual')"); } } $emai_users=email_send_users_list($userenrolments,$facetoface_course->courseid,$facetoface->trainerid); $to_emailid=$emai_users[0]; $to_userid=$emai_users[1]; //print_object($emai_users); $from = $DB->get_record('user',array('id'=>2)); $messagetext='Batch'; if($facetoface->active==0){ $messagetext_fr=get_string('first_time_notify', 'facetoface',$tataaia); $messagehtml=text_to_html($messagetext_fr); }else{ $messagetext_fr=get_string('batch_mail', 'facetoface',$mail); $messagehtml=text_to_html($messagetext_fr); } if((!empty($to_emailid))&&(!empty($to_userid))){ $sucess=email_logs_insert_table($to_emailid,$to_userid,$from->email,$from->id,$mailsubject,$messagehtml,$sentby_id,$sentby_name,$facetoface_course->courseid,$facetofaceid); return $sucess; } } }
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); } } }