Browse Source

Optimize confirm, wait and cancel enrolments functions.

SABERES_37_STABLE
Johannes Burk 9 years ago
committed by test
parent
commit
762ed28d56
  1. 85
      lib.php
  2. 7
      manage.php
  3. 2
      version.php

85
lib.php

@ -9,8 +9,11 @@
* ************************************************************************* * *************************************************************************
* ************************************************************************ * ************************************************************************
*/ */
class enrol_apply_plugin extends enrol_plugin {
/** User participation in course is suspended (used in user_enrolments->status) */
define('ENROL_APPLY_USER_WAIT', 2);
class enrol_apply_plugin extends enrol_plugin {
/** /**
* Add new instance of enrol plugin with default settings. * Add new instance of enrol plugin with default settings.
* @param object $course * @param object $course
@ -196,50 +199,82 @@ class enrol_apply_plugin extends enrol_plugin {
return $fields; return $fields;
} }
}
function confirmEnrolment($enrols){ function confirmEnrolment($enrols){
global $DB; global $DB;
global $CFG;
foreach ($enrols as $enrol){ foreach ($enrols as $enrol){
@$enroluser->id = $enrol; // $userenrolment = $DB->get_record('user_enrolments', array('id' => $enrol), '*', MUST_EXIST);
@$enroluser->status = 0; $userenrolment = $DB->get_record_select(
'user_enrolments',
if($DB->update_record('user_enrolments',$enroluser)){ 'id = :id AND (status = :enrolusersuspended OR status = :enrolapplyuserwait)',
$userenrolments = $DB->get_record_sql('select * from '.$CFG->prefix.'user_enrolments where id='.$enrol); array(
$role = $DB->get_record_sql("select * from ".$CFG->prefix."role where archetype='student' limit 1"); 'id' => $enrol,
@$roleAssignments->userid = $userenrolments->userid; 'enrolusersuspended' => ENROL_USER_SUSPENDED,
@$roleAssignments->roleid = $role->id; 'enrolapplyuserwait' => ENROL_APPLY_USER_WAIT),
@$roleAssignments->contextid = 3; '*',
@$roleAssignments->timemodified = time(); MUST_EXIST);
@$roleAssignments->modifierid = 2;
$DB->insert_record('role_assignments',$roleAssignments); $instance = $DB->get_record('enrol', array('id' => $userenrolment->enrolid, 'enrol' => 'apply'), '*', MUST_EXIST);
// Check privileges.
$context = context_course::instance($instance->courseid, MUST_EXIST);
if (!has_capability('enrol/apply:manageapplications', $context)) {
continue;
}
$this->update_user_enrol($instance, $userenrolment->userid, ENROL_USER_ACTIVE);
$info = getRelatedInfo($enrol); $info = getRelatedInfo($enrol);
$DB->delete_records('enrol_apply_applicationinfo', array('userenrolmentid' => $enrol)); $DB->delete_records('enrol_apply_applicationinfo', array('userenrolmentid' => $enrol));
sendConfirmMail($info); sendConfirmMail($info);
} }
} }
}
function waitEnrolment($enrols){ function waitEnrolment($enrols){
global $DB; global $DB;
global $CFG;
foreach ($enrols as $enrol){ foreach ($enrols as $enrol){
@$enroluser->id = $enrol; $userenrolment = $DB->get_record('user_enrolments', array('id' => $enrol, 'status' => ENROL_USER_SUSPENDED), '*', IGNORE_MISSING);
@$enroluser->status = 2;
if ($userenrolment != null) {
$instance = $DB->get_record('enrol', array('id' => $userenrolment->enrolid, 'enrol' => 'apply'), '*', MUST_EXIST);
// Check privileges.
$context = context_course::instance($instance->courseid, MUST_EXIST);
if (!has_capability('enrol/apply:manageapplications', $context)) {
continue;
}
$this->update_user_enrol($instance, $userenrolment->userid, ENROL_APPLY_USER_WAIT);
if($DB->update_record('user_enrolments',$enroluser)){
$info = getRelatedInfo($enrol); $info = getRelatedInfo($enrol);
sendWaitMail($info); sendWaitMail($info);
} }
} }
} }
function cancelEnrolment($enrols){ function cancelEnrolment($enrols){
global $DB; global $DB;
foreach ($enrols as $enrol){ foreach ($enrols as $enrol){
$userenrolment = $DB->get_record_select(
'user_enrolments',
'id = :id AND (status = :enrolusersuspended OR status = :enrolapplyuserwait)',
array(
'id' => $enrol,
'enrolusersuspended' => ENROL_USER_SUSPENDED,
'enrolapplyuserwait' => ENROL_APPLY_USER_WAIT),
'*',
MUST_EXIST);
$instance = $DB->get_record('enrol', array('id' => $userenrolment->enrolid, 'enrol' => 'apply'), '*', MUST_EXIST);
// Check privileges.
$context = context_course::instance($instance->courseid, MUST_EXIST);
if (!has_capability('enrol/apply:manageapplications', $context)) {
continue;
}
$info = getRelatedInfo($enrol); $info = getRelatedInfo($enrol);
if($DB->delete_records('user_enrolments',array('id'=>$enrol))){ $this->unenrol_user($instance, $userenrolment->userid);
$DB->delete_records('enrol_apply_applicationinfo', array('userenrolmentid' => $enrol)); $DB->delete_records('enrol_apply_applicationinfo', array('userenrolmentid' => $enrol));
sendCancelMail($info); sendCancelMail($info);
} }

7
manage.php

@ -46,12 +46,13 @@ $PAGE->set_title(get_string('confirmusers', 'enrol_apply'));
$PAGE->requires->css('/enrol/apply/style.css'); $PAGE->requires->css('/enrol/apply/style.css');
if ($userenrolments != null) { if ($userenrolments != null) {
$enrolapply = enrol_get_plugin('apply');
if (optional_param('confirm', false, PARAM_BOOL)) { if (optional_param('confirm', false, PARAM_BOOL)) {
confirmEnrolment($userenrolments); $enrolapply->confirmEnrolment($userenrolments);
} else if (optional_param('wait', false, PARAM_BOOL)) { } else if (optional_param('wait', false, PARAM_BOOL)) {
waitEnrolment ($userenrolments); $enrolapply->waitEnrolment($userenrolments);
} else if (optional_param('cancel', false, PARAM_BOOL)) { } else if (optional_param('cancel', false, PARAM_BOOL)) {
cancelEnrolment($userenrolments); $enrolapply->cancelEnrolment($userenrolments);
} }
redirect($manageurl); redirect($manageurl);
} }

2
version.php

@ -19,7 +19,7 @@
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
$plugin->version = 2016042202; $plugin->version = 2016042203;
$plugin->requires = 2011080100; $plugin->requires = 2011080100;
$plugin->maturity = MATURITY_STABLE; $plugin->maturity = MATURITY_STABLE;
$plugin->release = 'Enrolment upon approval plugin Version 3.0-d'; $plugin->release = 'Enrolment upon approval plugin Version 3.0-d';

Loading…
Cancel
Save