diff --git a/enrol/self/editenrolment.php b/enrol/editenrolment.php similarity index 61% rename from enrol/self/editenrolment.php rename to enrol/editenrolment.php index 8af223f801da0..8b6f54efe1153 100644 --- a/enrol/self/editenrolment.php +++ b/enrol/editenrolment.php @@ -15,50 +15,46 @@ // along with Moodle. If not, see . /** - * Self user enrolment edit script. + * User enrolment edit script. * - * This page allows the current user to edit a self user enrolment. + * This page allows the current user to edit a user enrolment. * It is not compatible with the frontpage. * - * @package enrol_self + * NOTE: plugins are free to implement own edit scripts with extra logic. + * + * @package core_enrol * @copyright 2011 Sam Hemelryk * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -require('../../config.php'); +require('../config.php'); require_once("$CFG->dirroot/enrol/locallib.php"); // Required for the course enrolment manager. require_once("$CFG->dirroot/enrol/renderer.php"); // Required for the course enrolment users table. -require_once("$CFG->dirroot/enrol/self/editenrolment_form.php"); // Forms for this page. +require_once("$CFG->dirroot/enrol/editenrolment_form.php"); // Forms for this page. $ueid = required_param('ue', PARAM_INT); $filter = optional_param('ifilter', 0, PARAM_INT); // Table filter for return url. -// Get the user enrolment object. $ue = $DB->get_record('user_enrolments', array('id' => $ueid), '*', MUST_EXIST); -// Get the user for whom the enrolment is. $user = $DB->get_record('user', array('id'=>$ue->userid), '*', MUST_EXIST); -// Get the course the enrolment is to. -$sql = "SELECT c.* - FROM {course} c - JOIN {enrol} e ON e.courseid = c.id - WHERE e.id = :enrolid"; -$params = array('enrolid' => $ue->enrolid); -$course = $DB->get_record_sql($sql, $params, MUST_EXIST); - -// Make sure the course isn't the front page. -if ($course->id == SITEID) { - redirect(new moodle_url('/')); -} +$instance = $DB->get_record('enrol', array('id'=>$ue->enrolid), '*', MUST_EXIST); +$course = $DB->get_record('course', array('id'=>$instance->courseid), '*', MUST_EXIST); + +// The URL of the enrolled users page for the course. +$usersurl = new moodle_url('/enrol/users.php', array('id' => $course->id)); -// Do not allow any changes if plugin disabled. -if (!enrol_is_enabled('self')) { - redirect(new moodle_url('/course/view.php', array('id'=>$course->id))); +// Do not allow any changes if plugin disabled, not available or not suitable. +if (!$plugin = enrol_get_plugin($instance->enrol)) { + redirect($usersurl); +} +if (!$plugin->allow_manage($instance)) { + redirect($usersurl); } // Obviously. require_login($course); -// The user must be able to manage self enrolments within the course. -require_capability("enrol/self:manage", context_course::instance($course->id, MUST_EXIST)); +// The user must be able to manage enrolments within the course. +require_capability('enrol/'.$instance->enrol.':manage', context_course::instance($course->id, MUST_EXIST)); // Get the enrolment manager for this course. $manager = new course_enrolment_manager($PAGE, $course, $filter); @@ -67,26 +63,17 @@ // exact page of the users screen they can from. $table = new course_enrolment_users_table($manager, $PAGE); -// The URL of the enrolled users page for the course. -$usersurl = new moodle_url('/enrol/users.php', array('id' => $course->id)); // The URl to return the user too after this screen. $returnurl = new moodle_url($usersurl, $manager->get_url_params()+$table->get_url_params()); // The URL of this page. -$url = new moodle_url('/enrol/self/editenrolment.php', $returnurl->params()); +$url = new moodle_url('/enrol/editenrolment.php', $returnurl->params()); $PAGE->set_url($url); $PAGE->set_pagelayout('admin'); navigation_node::override_active_url($usersurl); -// Gets the components of the user enrolment. -list($instance, $plugin) = $manager->get_user_enrolment_components($ue); -// Check that the user can manage this instance, and that the instance is of the correct type. -if (!$plugin->allow_manage($instance) || $instance->enrol != 'self' || !($plugin instanceof enrol_self_plugin)) { - print_error('erroreditenrolment', 'enrol'); -} - -// Get the self enrolment edit form. -$mform = new enrol_self_user_enrolment_form($url, array('user'=>$user, 'course'=>$course, 'ue'=>$ue)); +// Get the enrolment edit form. +$mform = new enrol_user_enrolment_form($url, array('user'=>$user, 'course'=>$course, 'ue'=>$ue)); $mform->set_data($PAGE->url->params()); if ($mform->is_cancelled()) { @@ -99,7 +86,7 @@ } $fullname = fullname($user); -$title = get_string('editenrolment', 'enrol_self'); +$title = get_string('editenrolment', 'core_enrol'); $PAGE->set_title($title); $PAGE->set_heading($title); diff --git a/enrol/self/editenrolment_form.php b/enrol/editenrolment_form.php similarity index 94% rename from enrol/self/editenrolment_form.php rename to enrol/editenrolment_form.php index 24d6525217c2d..8bdc46611def2 100644 --- a/enrol/self/editenrolment_form.php +++ b/enrol/editenrolment_form.php @@ -15,9 +15,9 @@ // along with Moodle. If not, see . /** - * Contains the form used to edit self enrolments for a user. + * Contains the form used to edit enrolments for a user. * - * @package enrol_self + * @package core_enrol * @copyright 2011 Sam Hemelryk * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ @@ -26,7 +26,7 @@ require_once("$CFG->libdir/formslib.php"); -class enrol_self_user_enrolment_form extends moodleform { +class enrol_user_enrolment_form extends moodleform { function definition() { global $CFG, $DB; diff --git a/enrol/manual/editenrolment.php b/enrol/manual/editenrolment.php deleted file mode 100644 index 538f45818f9cc..0000000000000 --- a/enrol/manual/editenrolment.php +++ /dev/null @@ -1,104 +0,0 @@ -. - -/** - * Manual user enrolment edit script. - * - * This page allows the current user to edit a manual user enrolment. - * It is not compatible with the frontpage. - * - * @package enrol_manual - * @copyright 2011 Sam Hemelryk - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - -require('../../config.php'); -require_once("$CFG->dirroot/enrol/locallib.php"); -require_once("$CFG->dirroot/enrol/renderer.php"); // Required for the course enrolment manager table. -require_once("$CFG->dirroot/enrol/manual/editenrolment_form.php"); - -$ueid = required_param('ue', PARAM_INT); // User enrolment id. -$filter = optional_param('ifilter', 0, PARAM_INT); - -// Get the user enrolment object. -$ue = $DB->get_record('user_enrolments', array('id' => $ueid), '*', MUST_EXIST); -// Get the user for whom the enrolment is. -$user = $DB->get_record('user', array('id'=>$ue->userid), '*', MUST_EXIST); -// Get the course the enrolment is to. -$sql = "SELECT c.* - FROM {course} c - JOIN {enrol} e ON e.courseid = c.id - WHERE e.id = :enrolid"; -$params = array('enrolid' => $ue->enrolid); -$course = $DB->get_record_sql($sql, $params, MUST_EXIST); - -// Make sure its not the front page course. -if ($course->id == SITEID) { - redirect(new moodle_url('/')); -} - -// Obviously. -require_login($course); -// Make sure the user can manage manual enrolments for this course. -require_capability("enrol/manual:manage", context_course::instance($course->id, MUST_EXIST)); - -// Get the enrolment manager for this course. -$manager = new course_enrolment_manager($PAGE, $course, $filter); -// Get an enrolment users table object. Doign this will automatically retrieve the the URL params -// relating to table the user was viewing before coming here, and allows us to return the user to the -// exact page of the users screen they can from. -$table = new course_enrolment_users_table($manager, $PAGE); - -// The URL of the enrolled users page for the course. -$usersurl = new moodle_url('/enrol/users.php', array('id' => $course->id)); -// The URl to return the user too after this screen. -$returnurl = new moodle_url($usersurl, $manager->get_url_params()+$table->get_url_params()); -// The URL of this page. -$url = new moodle_url('/enrol/manual/editenrolment.php', $returnurl->params()); - -$PAGE->set_url($url); -$PAGE->set_pagelayout('admin'); -navigation_node::override_active_url($usersurl); - -list($instance, $plugin) = $manager->get_user_enrolment_components($ue); -if (!$plugin->allow_manage($instance) || $instance->enrol != 'manual' || !($plugin instanceof enrol_manual_plugin)) { - print_error('erroreditenrolment', 'enrol'); -} - -$mform = new enrol_manual_user_enrolment_form($url, array('user'=>$user, 'course'=>$course, 'ue'=>$ue)); -$mform->set_data($PAGE->url->params()); - -// Check the form hasn't been cancelled -if ($mform->is_cancelled()) { - redirect($returnurl); -} else if ($data = $mform->get_data()) { - if ($manager->edit_enrolment($ue, $data)) { - redirect($returnurl); - } -} - -$fullname = fullname($user); -$title = get_string('editenrolment', 'enrol_manual'); - -$PAGE->set_title($title); -$PAGE->set_heading($title); -$PAGE->navbar->add($title); -$PAGE->navbar->add($fullname); - -echo $OUTPUT->header(); -echo $OUTPUT->heading($fullname); -$mform->display(); -echo $OUTPUT->footer(); diff --git a/enrol/manual/editenrolment_form.php b/enrol/manual/editenrolment_form.php deleted file mode 100644 index b73fc7c08041f..0000000000000 --- a/enrol/manual/editenrolment_form.php +++ /dev/null @@ -1,81 +0,0 @@ -. - -/** - * Contains the form used to edit manual enrolments for a user. - * - * @package enrol_manual - * @copyright 2011 Sam Hemelryk - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - -defined('MOODLE_INTERNAL') || die(); - -require_once("$CFG->libdir/formslib.php"); - -class enrol_manual_user_enrolment_form extends moodleform { - function definition() { - global $CFG, $DB; - - $mform = $this->_form; - - $user = $this->_customdata['user']; - $course = $this->_customdata['course']; - $ue = $this->_customdata['ue']; - - $mform->addElement('header','general', ''); - - $options = array(ENROL_USER_ACTIVE => get_string('participationactive', 'enrol'), - ENROL_USER_SUSPENDED => get_string('participationsuspended', 'enrol')); - if (isset($options[$ue->status])) { - $mform->addElement('select', 'status', get_string('participationstatus', 'enrol'), $options); - } - - $mform->addElement('date_time_selector', 'timestart', get_string('enroltimestart', 'enrol'), array('optional' => true)); - - $mform->addElement('date_time_selector', 'timeend', get_string('enroltimeend', 'enrol'), array('optional' => true)); - - $mform->addElement('static', 'timecreated', get_string('enroltimecreated', 'enrol'), userdate($ue->timecreated)); - - $mform->addElement('hidden', 'ue'); - $mform->setType('ue', PARAM_INT); - - $mform->addElement('hidden', 'ifilter'); - $mform->setType('ifilter', PARAM_ALPHA); - - $this->add_action_buttons(); - - $this->set_data(array( - 'ue' => $ue->id, - 'status' => $ue->status, - 'timestart' => $ue->timestart, - 'timeend' => $ue->timeend - )); - } - - function validation($data, $files) { - $errors = parent::validation($data, $files); - - if (!empty($data['timestart']) and !empty($data['timeend'])) { - if ($data['timestart'] >= $data['timeend']) { - $errors['timestart'] = get_string('error'); - $errors['timeend'] = get_string('error'); - } - } - - return $errors; - } -} diff --git a/enrol/manual/lang/en/enrol_manual.php b/enrol/manual/lang/en/enrol_manual.php index 5ddf50f97cebb..74c915ac9b3b4 100644 --- a/enrol/manual/lang/en/enrol_manual.php +++ b/enrol/manual/lang/en/enrol_manual.php @@ -31,7 +31,6 @@ $string['defaultperiod_desc'] = 'Default length of time that the enrolment is valid. If set to zero, the enrolment duration will be unlimited by default.'; $string['defaultperiod_help'] = 'Default length of time that the enrolment is valid, starting with the moment the user is enrolled. If disabled, the enrolment duration will be unlimited by default.'; $string['deleteselectedusers'] = 'Delete selected user enrolments'; -$string['editenrolment'] = 'Edit enrolment'; $string['editselectedusers'] = 'Edit selected user enrolments'; $string['enrolledincourserole'] = 'Enrolled in "{$a->course}" as "{$a->role}"'; $string['enrolusers'] = 'Enrol users'; diff --git a/enrol/manual/lib.php b/enrol/manual/lib.php index 8c95bc6b763c1..7ffba73f8793f 100644 --- a/enrol/manual/lib.php +++ b/enrol/manual/lib.php @@ -421,7 +421,7 @@ public function get_user_enrolment_actions(course_enrolment_manager $manager, $u $actions[] = new user_enrolment_action(new pix_icon('t/delete', ''), get_string('unenrol', 'enrol'), $url, array('class'=>'unenrollink', 'rel'=>$ue->id)); } if ($this->allow_manage($instance) && has_capability("enrol/manual:manage", $context)) { - $url = new moodle_url('/enrol/manual/editenrolment.php', $params); + $url = new moodle_url('/enrol/editenrolment.php', $params); $actions[] = new user_enrolment_action(new pix_icon('t/edit', ''), get_string('edit'), $url, array('class'=>'editenrollink', 'rel'=>$ue->id)); } return $actions; diff --git a/enrol/self/lang/en/enrol_self.php b/enrol/self/lang/en/enrol_self.php index 10e41ccc0ed18..e5a33917e122f 100644 --- a/enrol/self/lang/en/enrol_self.php +++ b/enrol/self/lang/en/enrol_self.php @@ -34,7 +34,6 @@ * Link to user\'s profile page {$a->profileurl}'; $string['defaultrole'] = 'Default role assignment'; $string['defaultrole_desc'] = 'Select role which should be assigned to users during self enrolment'; -$string['editenrolment'] = 'Edit enrolment'; $string['enrolenddate'] = 'End date'; $string['enrolenddate_help'] = 'If enabled, users can enrol themselves until this date only.'; $string['enrolenddaterror'] = 'Enrolment end date cannot be earlier than start date'; diff --git a/enrol/self/lib.php b/enrol/self/lib.php index 14930b9281f4d..19b6629b05053 100644 --- a/enrol/self/lib.php +++ b/enrol/self/lib.php @@ -543,7 +543,7 @@ public function get_user_enrolment_actions(course_enrolment_manager $manager, $u $actions[] = new user_enrolment_action(new pix_icon('t/delete', ''), get_string('unenrol', 'enrol'), $url, array('class'=>'unenrollink', 'rel'=>$ue->id)); } if ($this->allow_manage($instance) && has_capability("enrol/self:manage", $context)) { - $url = new moodle_url('/enrol/self/editenrolment.php', $params); + $url = new moodle_url('/enrol/editenrolment.php', $params); $actions[] = new user_enrolment_action(new pix_icon('t/edit', ''), get_string('edit'), $url, array('class'=>'editenrollink', 'rel'=>$ue->id)); } return $actions; diff --git a/lang/en/enrol.php b/lang/en/enrol.php index b81b311e855e3..2458bdf50bf73 100644 --- a/lang/en/enrol.php +++ b/lang/en/enrol.php @@ -40,6 +40,7 @@ Are you sure you want to continue?'; $string['deleteinstancenousersconfirm'] = 'You are about to delete the enrolment method "{$a->name}". Are you sure you want to continue?'; $string['durationdays'] = '{$a} days'; +$string['editenrolment'] = 'Edit enrolment'; $string['enrol'] = 'Enrol'; $string['enrolcandidates'] = 'Not enrolled users'; $string['enrolcandidatesmatching'] = 'Matching not enrolled users';