/**
     * 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);
            }
        }
    }
Exemple #2
0
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;
                }   
    }

       
}
Exemple #3
0
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);
		}
	}
	
}