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