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)); }
/** * 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); } } }
/** * 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); } } }
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); }
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);