Example #1
0
 public static function user_enrolment_created(\core\event\user_enrolment_created $event)
 {
     global $DB;
     $unenrolleduserid = $event->relateduserid;
     $enroltype = $event->get_data()['other']['enrol'];
     $courseid = $event->courseid;
     $data = array('uid' => $unenrolleduserid, 'enrol' => $enroltype, 'course' => $courseid);
     error_log(print_r($data, true));
 }
Example #2
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 #3
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) {
         // 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);
         }
     }
 }
 /**
  * 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);
         $catalog_app_name = explode(".", $_SERVER["HTTP_HOST"]);
         $catalog_app_short_name = $catalog_app_name[0];
         $catalog_app_short_name = str_replace("http://", "", $catalog_app_short_name);
         $catalog_app_short_name = str_replace("https://", "", $catalog_app_short_name);
         $mdl_user = $CFG->current_app->getCurrentUser();
         $mhr_user = $mdl_user->getUserOnInstitution();
         $institution = $mdl_user->getInstitution();
         if (!$institution) {
             $institution = $CFG->current_app->getInstitution();
         }
         $wwwroot = $institution->getAppUrl(false);
         $current_app_name = explode(".", $wwwroot);
         $current_app_short_name = $current_app_name[0];
         $current_app_short_name = str_replace("http://", "", $current_app_short_name);
         $current_app_short_name = str_replace("https://", "", $current_app_short_name);
         $course_name = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST);
         $platform_user_id = $mhr_user->getObject()->id;
         $product_short_name = $_GET["product"];
         $enrol_obj = new GcrCourseEnrolments();
         $enrol_obj->setPlatformShortName($current_app_short_name);
         $enrol_obj->setProductShortName($product_short_name);
         $enrol_obj->setCatalogShortName($catalog_app_short_name);
         $enrol_obj->setCourseName($course_name->fullname);
         $enrol_obj->setUserId($platform_user_id);
         $enrol_obj->setCourseId($courseid);
         $enrol_obj->setEnrolledDate(time());
         $enrol_obj->save();
         $inserted = true;
     }
     if ($inserted) {
         // 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 #5
0
 public function enrol_page_hook(stdClass $instance)
 {
     global $CFG, $OUTPUT, $SESSION, $USER, $DB;
     if (isguestuser()) {
         // can not enrol guest!!
         return null;
     }
     if ($DB->record_exists('user_enrolments', array('userid' => $USER->id, 'enrolid' => $instance->id))) {
         //TODO: maybe we should tell them they are already enrolled, but can not access the course
         //return null;
         return $OUTPUT->notification(get_string('notification', 'enrol_apply'), 'notifysuccess');
     }
     if ($instance->enrolstartdate != 0 and $instance->enrolstartdate > time()) {
         //TODO: inform that we can not enrol yet
         return null;
     }
     if ($instance->enrolenddate != 0 and $instance->enrolenddate < time()) {
         //TODO: inform that enrolment is not possible any more
         return null;
     }
     if ($instance->customint3 > 0) {
         // max enrol limit specified
         $count = $DB->count_records('user_enrolments', array('enrolid' => $instance->id));
         if ($count >= $instance->customint3) {
             // bad luck, no more self enrolments here
             return $OUTPUT->notification(get_string('maxenrolledreached', 'enrol_self'));
         }
     }
     require_once "{$CFG->dirroot}/enrol/apply/locallib.php";
     $form = new enrol_apply_enrol_form(NULL, $instance);
     $instanceid = optional_param('instance', 0, PARAM_INT);
     if ($instance->id == $instanceid) {
         if ($data = $form->get_data()) {
             $userInfo = $data;
             $applydescription = $userInfo->applydescription;
             unset($userInfo->applydescription);
             $userInfo->id = $USER->id;
             $apply_setting = $DB->get_records_sql("select name,value from " . $CFG->prefix . "config_plugins where plugin='enrol_apply'");
             $show_standard_user_profile = $show_extra_user_profile = false;
             if ($instance->customint1 != '') {
                 $instance->customint1 == 0 ? $show_standard_user_profile = true : ($show_standard_user_profile = false);
             } else {
                 $apply_setting['show_standard_user_profile']->value == 0 ? $show_standard_user_profile = true : ($show_standard_user_profile = false);
             }
             if ($instance->customint2 != '') {
                 $instance->customint2 == 0 ? $show_extra_user_profile = true : ($show_extra_user_profile = false);
             } else {
                 $apply_setting['show_extra_user_profile']->value == 0 ? $show_extra_user_profile = true : ($show_extra_user_profile = false);
             }
             if (!$show_standard_user_profile && $show_extra_user_profile) {
                 profile_save_data($userInfo);
                 //$res = $DB->update_record('user',$userInfoProfile);
             } else {
                 profile_save_data($userInfo);
                 //$res = $DB->update_record('user',$userInfo);
             }
             $enrol = enrol_get_plugin('self');
             $timestart = time();
             if ($instance->enrolperiod) {
                 $timeend = $timestart + $instance->enrolperiod;
             } else {
                 $timeend = 0;
             }
             $roleid = $instance->roleid;
             if (!$roleid) {
                 $role = $DB->get_record_sql("select * from " . $CFG->prefix . "role where archetype='student' limit 1");
                 $roleid = $role->id;
             }
             $this->enrol_user($instance, $USER->id, $roleid, $timestart, $timeend, 1);
             sendConfirmMailToTeachers($instance, $data, $applydescription);
             sendConfirmMailToManagers($instance, $data, $applydescription);
             // Deprecated fixed by Shiro <*****@*****.**>
             //add_to_log($instance->courseid, 'course', 'enrol', '../enrol/users.php?id='.$instance->courseid, $instance->courseid); //there should be userid somewhere!
             $context = context_course::instance($instance->courseid);
             \core\event\user_enrolment_created::create(array('objectid' => $instance->id, 'courseid' => $instance->courseid, 'context' => $context, 'relateduserid' => $USER->id, 'other' => array('enrol' => 'apply')))->trigger();
             redirect("{$CFG->wwwroot}/course/view.php?id={$instance->courseid}");
         }
     }
     ob_start();
     $form->display();
     $output = ob_get_clean();
     return $OUTPUT->box($output);
 }
Example #6
0
                case 3:
                default:
                    $timestart = $today;
                    break;
            }
            if ($extendperiod <= 0) {
                $timeend = 0;
            } else {
                $timeend = $timestart + $extendperiod;
            }
            //echo "<pre>";print_r($instance);exit();
            $enrol_manual->enrol_user($instance, $adduser->id, $roleid, $timestart, $timeend);
            // Deprecated fixed by Shiro <*****@*****.**>
            //add_to_log($course->id, 'course', 'enrol', '../enrol/users.php?id='.$course->id, $course->id); //there should be userid somewhere!
            $context = context_course::instance($course->id);
            \core\event\user_enrolment_created::create(array('context' => $context))->trigger();
        }
        $potentialuserselector->invalidate_selected_users();
        $currentuserselector->invalidate_selected_users();
        //TODO: log
    }
}
// Process incoming role unassignments
if (optional_param('remove', false, PARAM_BOOL) && confirm_sesskey()) {
    $userstounassign = $currentuserselector->get_selected_users();
    if (!empty($userstounassign)) {
        foreach ($userstounassign as $removeuser) {
            $enrol_manual->unenrol_user($instance, $removeuser->id);
            // Deprecated fixed by Shiro <*****@*****.**>
            //add_to_log($course->id, 'course', 'unenrol', '../enrol/users.php?id='.$course->id, $course->id); //there should be userid somewhere!
            $context = context_course::instance($course->id);