From 4b50765bd50c834c0de6a218f36378d65b63fe57 Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Mon, 24 Jul 2017 10:10:34 +0800 Subject: [PATCH] MDL-59370 enrol: Kill the enrol/users page. --- course/classes/management/helper.php | 2 +- course/edit.php | 2 +- enrol/bulkchange.php | 93 ------- enrol/locallib.php | 2 +- enrol/manual/manage.php | 2 +- enrol/renderer.php | 66 ----- enrol/upgrade.txt | 5 + enrol/users.php | 259 ------------------- lib/classes/analytics/target/no_teaching.php | 2 +- lib/classes/event/user_enrolment_created.php | 2 +- lib/classes/event/user_enrolment_deleted.php | 2 +- lib/enrollib.php | 4 +- 12 files changed, 14 insertions(+), 427 deletions(-) delete mode 100644 enrol/bulkchange.php delete mode 100644 enrol/users.php diff --git a/course/classes/management/helper.php b/course/classes/management/helper.php index 94b6638d826..3341e4bd769 100644 --- a/course/classes/management/helper.php +++ b/course/classes/management/helper.php @@ -395,7 +395,7 @@ class helper { // Permissions. if ($course->can_review_enrolments()) { $actions['enrolledusers'] = array( - 'url' => new \moodle_url('/enrol/users.php', array('id' => $course->id)), + 'url' => new \moodle_url('/user/index.php', array('id' => $course->id)), 'string' => \get_string('enrolledusers', 'enrol') ); } diff --git a/course/edit.php b/course/edit.php index c833ccaa3d3..727a1f70c82 100644 --- a/course/edit.php +++ b/course/edit.php @@ -175,7 +175,7 @@ if ($editform->is_cancelled()) { if ($plugin = enrol_get_plugin($instance->enrol)) { if ($plugin->get_manual_enrol_link($instance)) { // We know that the ajax enrol UI will have an option to enrol. - $courseurl = new moodle_url('/enrol/users.php', array('id' => $course->id, 'newcourse' => 1)); + $courseurl = new moodle_url('/user/index.php', array('id' => $course->id, 'newcourse' => 1)); break; } } diff --git a/enrol/bulkchange.php b/enrol/bulkchange.php deleted file mode 100644 index 1d451ae2098..00000000000 --- a/enrol/bulkchange.php +++ /dev/null @@ -1,93 +0,0 @@ -. - -/** - * Bulk user enrolment processing. - * - * @package core_enrol - * @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/users_forms.php"); -require_once("$CFG->dirroot/enrol/renderer.php"); -require_once("$CFG->dirroot/group/lib.php"); - -$id = required_param('id', PARAM_INT); // course id -$bulkuserop = required_param('bulkuserop', PARAM_ALPHANUMEXT); -$userids = required_param_array('bulkuser', PARAM_INT); -$action = optional_param('action', '', PARAM_ALPHANUMEXT); -$filter = optional_param('ifilter', 0, PARAM_INT); - -$course = $DB->get_record('course', array('id'=>$id), '*', MUST_EXIST); -$context = context_course::instance($course->id, MUST_EXIST); - -if ($course->id == SITEID) { - redirect(new moodle_url('/')); -} - -require_login($course); -require_capability('moodle/course:enrolreview', $context); -$PAGE->set_pagelayout('admin'); - -$manager = new course_enrolment_manager($PAGE, $course, $filter); -$table = new course_enrolment_users_table($manager, $PAGE); -$returnurl = new moodle_url('/enrol/users.php', $table->get_combined_url_params()); -$actionurl = new moodle_url('/enrol/bulkchange.php', $table->get_combined_url_params()+array('bulkuserop' => $bulkuserop)); - -$PAGE->set_url($actionurl); -navigation_node::override_active_url(new moodle_url('/enrol/users.php', array('id' => $id))); - -$ops = $table->get_bulk_user_enrolment_operations(); -if (!array_key_exists($bulkuserop, $ops)) { - throw new moodle_exception('invalidbulkenrolop'); -} -$operation = $ops[$bulkuserop]; - -// Prepare the properties of the form -$users = $manager->get_users_enrolments($userids); - -// Get the form for the bulk operation -$mform = $operation->get_form($actionurl, array('users' => $users)); -// If the mform is false then attempt an immediate process. This may be an immediate action that -// doesn't require user input OR confirmation.... who know what but maybe one day -if ($mform === false) { - if ($operation->process($manager, $users, new stdClass)) { - redirect($returnurl); - } else { - print_error('errorwithbulkoperation', 'enrol'); - } -} -// Check if the bulk operation has been cancelled -if ($mform->is_cancelled()) { - redirect($returnurl); -} -if ($mform->is_submitted() && $mform->is_validated() && confirm_sesskey()) { - if ($operation->process($manager, $users, $mform->get_data())) { - redirect($returnurl); - } -} - -$pagetitle = get_string('bulkuseroperation', 'enrol'); - -$PAGE->set_title($pagetitle); -$PAGE->set_heading($pagetitle); -echo $OUTPUT->header(); -echo $OUTPUT->heading($operation->get_title()); -$mform->display(); -echo $OUTPUT->footer(); \ No newline at end of file diff --git a/enrol/locallib.php b/enrol/locallib.php index f8b7ca44a0b..bf6ab9d7785 100644 --- a/enrol/locallib.php +++ b/enrol/locallib.php @@ -803,7 +803,7 @@ class course_enrolment_manager { */ public function edit_enrolment($userenrolment, $data) { //Only allow editing if the user has the appropriate capability - //Already checked in /enrol/users.php but checking again in case this function is called from elsewhere + //Already checked in /user/index.php but checking again in case this function is called from elsewhere list($instance, $plugin) = $this->get_user_enrolment_components($userenrolment); if ($instance && $plugin && $plugin->allow_manage($instance) && has_capability("enrol/$instance->enrol:manage", $this->context)) { if (!isset($data->status)) { diff --git a/enrol/manual/manage.php b/enrol/manual/manage.php index e3161d4b045..9eb8758683d 100644 --- a/enrol/manual/manage.php +++ b/enrol/manual/manage.php @@ -69,7 +69,7 @@ $PAGE->set_url('/enrol/manual/manage.php', array('enrolid'=>$instance->id)); $PAGE->set_pagelayout('admin'); $PAGE->set_title($enrol_manual->get_instance_name($instance)); $PAGE->set_heading($course->fullname); -navigation_node::override_active_url(new moodle_url('/enrol/users.php', array('id'=>$course->id))); +navigation_node::override_active_url(new moodle_url('/user/index.php', array('id'=>$course->id))); // Create the user selector objects. $options = array('enrolid' => $enrolid, 'accesscontext' => $context); diff --git a/enrol/renderer.php b/enrol/renderer.php index a283de891f1..a1bc2417fbf 100644 --- a/enrol/renderer.php +++ b/enrol/renderer.php @@ -30,72 +30,6 @@ */ class core_enrol_renderer extends plugin_renderer_base { - /** - * Renders a course enrolment table - * - * @param course_enrolment_table $table - * @param moodleform $mform Form that contains filter controls - * @return string - */ - public function render_course_enrolment_users_table(course_enrolment_users_table $table, - moodleform $mform) { - - $table->initialise_javascript(); - - $buttons = $table->get_manual_enrol_buttons(); - $buttonhtml = ''; - if (count($buttons) > 0) { - $buttonhtml .= html_writer::start_tag('div', array('class' => 'enrol_user_buttons enrol-users-page-action')); - foreach ($buttons as $button) { - $buttonhtml .= $this->render($button); - } - $buttonhtml .= html_writer::end_tag('div'); - } - - $content = ''; - if (!empty($buttonhtml)) { - $content .= $buttonhtml; - } - $content .= html_writer::start_tag('div', array('class' => 'form-inline')); - $content .= $mform->render(); - $content .= html_writer::end_tag('div'); - - $content .= $this->output->render($table->get_paging_bar()); - - // Check if the table has any bulk operations. If it does we want to wrap the table in a - // form so that we can capture and perform any required bulk operations. - if ($table->has_bulk_user_enrolment_operations()) { - $content .= html_writer::start_tag('form', array('action' => new moodle_url('/enrol/bulkchange.php'), 'method' => 'post')); - foreach ($table->get_combined_url_params() as $key => $value) { - if ($key == 'action') { - continue; - } - $content .= html_writer::empty_tag('input', array('type' => 'hidden', 'name' => $key, 'value' => $value)); - } - $content .= html_writer::empty_tag('input', array('type' => 'hidden', 'name' => 'action', 'value' => 'bulkchange')); - $content .= html_writer::table($table); - $content .= html_writer::start_tag('div', array('class' => 'singleselect bulkuserop')); - $content .= html_writer::start_tag('select', array('name' => 'bulkuserop')); - $content .= html_writer::tag('option', get_string('withselectedusers', 'enrol'), array('value' => '')); - $options = array('' => get_string('withselectedusers', 'enrol')); - foreach ($table->get_bulk_user_enrolment_operations() as $operation) { - $content .= html_writer::tag('option', $operation->get_title(), array('value' => $operation->get_identifier())); - } - $content .= html_writer::end_tag('select'); - $content .= html_writer::empty_tag('input', array('type' => 'submit', 'value' => get_string('go'))); - $content .= html_writer::end_tag('div'); - - $content .= html_writer::end_tag('form'); - } else { - $content .= html_writer::table($table); - } - $content .= $this->output->render($table->get_paging_bar()); - if (!empty($buttonhtml)) { - $content .= $buttonhtml; - } - return $content; - } - /** * Renderers the enrol_user_button. * diff --git a/enrol/upgrade.txt b/enrol/upgrade.txt index f170c7ab625..528fe375c89 100644 --- a/enrol/upgrade.txt +++ b/enrol/upgrade.txt @@ -1,6 +1,11 @@ This files describes API changes in /enrol/* - plugins, information provided here is intended especially for developers. +=== 3.4 === + +* render_course_enrolment_users_table method has been removed from the renderer. The enrolled users page is now + combined with the participants page. /enrol/users.php no longer exists. + === 3.3 === * External function core_enrol_external::get_users_courses now return the user progress, start and the end course dates. diff --git a/enrol/users.php b/enrol/users.php deleted file mode 100644 index 403121d876b..00000000000 --- a/enrol/users.php +++ /dev/null @@ -1,259 +0,0 @@ -. - -/** - * Main course enrolment management UI, this is not compatible with frontpage course. - * - * @package core_enrol - * @copyright 2010 Petr Skoda {@link http://skodak.org} - * @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/users_forms.php"); -require_once("$CFG->dirroot/enrol/renderer.php"); -require_once("$CFG->dirroot/group/lib.php"); - -$id = required_param('id', PARAM_INT); // course id -$action = optional_param('action', '', PARAM_ALPHANUMEXT); -$filter = optional_param('ifilter', 0, PARAM_INT); -$search = optional_param('search', '', PARAM_RAW); -$role = optional_param('role', 0, PARAM_INT); -$fgroup = optional_param('filtergroup', 0, PARAM_INT); -$status = optional_param('status', -1, PARAM_INT); -$newcourse = optional_param('newcourse', false, PARAM_BOOL); - -// When users reset the form, redirect back to first page without other params. -if (optional_param('resetbutton', '', PARAM_RAW) !== '') { - redirect('users.php?id=' . $id . '&newcourse=' . $newcourse); -} - -$course = $DB->get_record('course', array('id'=>$id), '*', MUST_EXIST); -$context = context_course::instance($course->id, MUST_EXIST); - -if ($course->id == SITEID) { - redirect(new moodle_url('/')); -} - -require_login($course); -require_capability('moodle/course:enrolreview', $context); -$PAGE->set_pagelayout('admin'); - -$manager = new course_enrolment_manager($PAGE, $course, $filter, $role, $search, $fgroup, $status); -$table = new course_enrolment_users_table($manager, $PAGE); -$PAGE->set_url('/enrol/users.php', $manager->get_url_params()+$table->get_url_params()+array('newcourse' => $newcourse)); -navigation_node::override_active_url(new moodle_url('/enrol/users.php', array('id' => $id))); - -// Check if there is an action to take -if ($action) { - - // Check if the page is confirmed (and sesskey is correct) - $confirm = optional_param('confirm', false, PARAM_BOOL) && confirm_sesskey(); - - $actiontaken = false; - $pagetitle = ''; - $pageheading = ''; - $mform = null; - $pagecontent = null; - - switch ($action) { - /** - * Removes a role from the user with this course - */ - case 'unassign': - if (has_capability('moodle/role:assign', $manager->get_context())) { - $role = required_param('roleid', PARAM_INT); - $user = required_param('user', PARAM_INT); - if ($confirm && $manager->unassign_role_from_user($user, $role)) { - redirect($PAGE->url); - } else { - $user = $DB->get_record('user', array('id'=>$user), '*', MUST_EXIST); - $allroles = $manager->get_all_roles(); - $role = $allroles[$role]; - $yesurl = new moodle_url($PAGE->url, array('action'=>'unassign', 'roleid'=>$role->id, 'user'=>$user->id, 'confirm'=>1, 'sesskey'=>sesskey())); - $message = get_string('unassignconfirm', 'role', array('user'=>fullname($user, true), 'role'=>$role->localname)); - $pagetitle = get_string('unassignarole', 'role', $role->localname); - $pagecontent = $OUTPUT->confirm($message, $yesurl, $PAGE->url); - } - $actiontaken = true; - } - break; - /** - * Assigns a new role to a user enrolled within this course. - * A user must be enrolled in the course in order for this script to action - */ - case 'assign': - $user = $DB->get_record('user', array('id'=>required_param('user', PARAM_INT)), '*', MUST_EXIST); - if (is_enrolled($context, $user) && has_capability('moodle/role:assign', $manager->get_context())) { - $mform = new enrol_users_assign_form(NULL, array('user'=>$user, 'course'=>$course, 'assignable'=>$manager->get_assignable_roles())); - $mform->set_data($PAGE->url->params()); - $data = $mform->get_data(); - if ($mform->is_cancelled() || ($data && array_key_exists($data->roleid, $manager->get_assignable_roles()) && $manager->assign_role_to_user($data->roleid, $user->id))) { - redirect($PAGE->url); - } else { - $pagetitle = get_string('assignroles', 'role'); - } - $actiontaken = true; - } - break; - /** - * Removes the user from the given group - */ - case 'removemember': - if (has_capability('moodle/course:managegroups', $manager->get_context())) { - $groupid = required_param('group', PARAM_INT); - $userid = required_param('user', PARAM_INT); - $user = $DB->get_record('user', array('id'=>$userid), '*', MUST_EXIST); - if ($confirm && $manager->remove_user_from_group($user, $groupid)) { - redirect($PAGE->url); - } else { - $group = $manager->get_group($groupid); - if (!$group) { - break; - } - $yesurl = new moodle_url($PAGE->url, array('action'=>'removemember', 'group'=>$groupid, 'user'=>$userid, 'confirm'=>1, 'sesskey'=>sesskey())); - $message = get_string('removefromgroupconfirm', 'group', array('user'=>fullname($user, true), 'group'=>$group->name)); - $pagetitle = get_string('removefromgroup', 'group', $group->name); - $pagecontent = $OUTPUT->confirm($message, $yesurl, $PAGE->url); - } - $actiontaken = true; - } - break; - /** - * Makes the user a member of a given group - */ - case 'addmember': - if (has_capability('moodle/course:managegroups', $manager->get_context())) { - $userid = required_param('user', PARAM_INT); - $user = $DB->get_record('user', array('id'=>$userid), '*', MUST_EXIST); - - $mform = new enrol_users_addmember_form(NULL, array('user'=>$user, 'course'=>$course, 'allgroups'=>$manager->get_all_groups())); - $mform->set_data($PAGE->url->params()); - $data = $mform->get_data(); - if ($mform->is_cancelled()) { - redirect($PAGE->url); - } if (!empty($data->groupids)) { - foreach ($data->groupids as $groupid) { - $manager->add_user_to_group($user, $groupid); - } - redirect($PAGE->url); - } else { - $pagetitle = get_string('addgroup', 'group'); - } - $actiontaken = true; - } - break; - } - - // If we took an action display we need to display something special. - if ($actiontaken) { - if (empty($pageheading)) { - $pageheading = $pagetitle; - } - $PAGE->set_title($pagetitle); - $PAGE->set_heading($pageheading); - echo $OUTPUT->header(); - echo $OUTPUT->heading(fullname($user)); - if (!is_null($mform)) { - $mform->display(); - } else { - echo $pagecontent; - } - echo $OUTPUT->footer(); - exit; - } -} - - -$renderer = $PAGE->get_renderer('core_enrol'); -$userdetails = array('picture' => false, 'userfullnamedisplay' => false); -// Get all the user names in a reasonable default order. -$allusernames = get_all_user_name_fields(false, null, null, null, true); -// Initialise the variable for the user's names in the table header. -$usernameheader = null; -// Get the alternative full name format for users with the viewfullnames capability. -$fullusernames = $CFG->alternativefullnameformat; -// If fullusernames is empty or accidentally set to language then fall back to default of just first and last name. -if ($fullusernames == 'language' || empty($fullusernames)) { - // Set $a variables to return 'firstname' and 'lastname'. - $a = new stdClass(); - $a->firstname = 'firstname'; - $a->lastname = 'lastname'; - // Getting the fullname display will ensure that the order in the language file is maintained. - $usernameheader = explode(' ', get_string('fullnamedisplay', null, $a)); -} else { - // If everything is as expected then put them in the order specified by the alternative full name format setting. - $usernameheader = order_in_string($allusernames, $fullusernames); -} - -// Loop through each name and return the language string. -foreach ($usernameheader as $key => $username) { - $userdetails[$username] = get_string($username); -} -$extrafields = get_extra_user_fields($context); -foreach ($extrafields as $field) { - $userdetails[$field] = get_user_field_name($field); -} - -$fields = array( - 'userdetails' => $userdetails, - 'lastcourseaccess' => get_string('lastcourseaccess'), - 'role' => get_string('roles', 'role'), - 'group' => get_string('groups', 'group'), - 'enrol' => get_string('enrolmentinstances', 'enrol') -); - -// Remove hidden fields if the user has no access -if (!has_capability('moodle/course:viewhiddenuserfields', $context)) { - $hiddenfields = array_flip(explode(',', $CFG->hiddenuserfields)); - if (isset($hiddenfields['lastaccess'])) { - unset($fields['lastcourseaccess']); - } - if (isset($hiddenfields['groups'])) { - unset($fields['group']); - } -} - -$filterform = new enrol_users_filter_form('users.php', array('manager' => $manager, 'id' => $id, 'newcourse' => $newcourse), - 'get', '', array('id' => 'filterform')); -$filterform->set_data(array('search' => $search, 'ifilter' => $filter, 'role' => $role, - 'filtergroup' => $fgroup, 'status' => $status)); - -$table->set_fields($fields, $renderer); - -$canassign = has_capability('moodle/role:assign', $manager->get_context()); -$users = $manager->get_users_for_display($manager, $table->sort, $table->sortdirection, $table->page, $table->perpage); -foreach ($users as $userid=>&$user) { - $user['picture'] = $OUTPUT->render($user['picture']); - $user['role'] = $renderer->user_roles_and_actions($userid, $user['roles'], $manager->get_assignable_roles(), $canassign, $PAGE->url); - $user['group'] = $renderer->user_groups_and_actions($userid, $user['groups'], $manager->get_all_groups(), has_capability('moodle/course:managegroups', $manager->get_context()), $PAGE->url); - $user['enrol'] = $renderer->user_enrolments_and_actions($user['enrolments']); -} -$table->set_total_users($manager->get_total_users()); -$table->set_users($users); - -$PAGE->set_title($PAGE->course->fullname.': '.get_string('totalenrolledusers', 'enrol', $manager->get_total_users())); -$PAGE->set_heading($PAGE->title); - -echo $OUTPUT->header(); -echo $OUTPUT->heading(get_string('enrolledusers', 'enrol')); -echo $renderer->render_course_enrolment_users_table($table, $filterform); -if ($newcourse == 1) { - echo $OUTPUT->single_button(new moodle_url('/course/view.php', array('id' => $id)), - get_string('proceedtocourse', 'enrol'), 'GET', array('class' => 'enrol-users-page-action')); -} -echo $OUTPUT->footer(); diff --git a/lib/classes/analytics/target/no_teaching.php b/lib/classes/analytics/target/no_teaching.php index 58f043a79b5..56f213cd40b 100644 --- a/lib/classes/analytics/target/no_teaching.php +++ b/lib/classes/analytics/target/no_teaching.php @@ -74,7 +74,7 @@ class no_teaching extends \core_analytics\local\target\binary { $url, $pix, get_string('view')); if (has_capability('moodle/course:enrolreview', $sampledata['context'])) { - $url = new \moodle_url('/enrol/users.php', array('id' => $course->id)); + $url = new \moodle_url('/user/index.php', array('id' => $course->id)); $pix = new \pix_icon('i/enrolusers', get_string('enrolledusers', 'enrol')); $actions['enrolusers'] = new \core_analytics\prediction_action('enrolusers', $prediction, $url, $pix, get_string('enrolledusers', 'enrol')); diff --git a/lib/classes/event/user_enrolment_created.php b/lib/classes/event/user_enrolment_created.php index 384015a20bb..2b7670676d4 100644 --- a/lib/classes/event/user_enrolment_created.php +++ b/lib/classes/event/user_enrolment_created.php @@ -75,7 +75,7 @@ class user_enrolment_created extends base { * @return \moodle_url */ public function get_url() { - return new \moodle_url('/enrol/users.php', array('id' => $this->courseid)); + return new \moodle_url('/user/index.php', array('id' => $this->courseid)); } /** diff --git a/lib/classes/event/user_enrolment_deleted.php b/lib/classes/event/user_enrolment_deleted.php index d872ec266bd..b343fbce061 100644 --- a/lib/classes/event/user_enrolment_deleted.php +++ b/lib/classes/event/user_enrolment_deleted.php @@ -76,7 +76,7 @@ class user_enrolment_deleted extends base { * @return \moodle_url */ public function get_url() { - return new \moodle_url('/enrol/users.php', array('id' => $this->courseid)); + return new \moodle_url('/user/index.php', array('id' => $this->courseid)); } /** diff --git a/lib/enrollib.php b/lib/enrollib.php index 7f81f174f1c..a4980394c49 100644 --- a/lib/enrollib.php +++ b/lib/enrollib.php @@ -436,7 +436,7 @@ function enrol_add_course_navigation(navigation_node $coursenode, $course) { if ($course->id != SITEID) { // list all participants - allows assigning roles, groups, etc. if (has_capability('moodle/course:enrolreview', $coursecontext)) { - $url = new moodle_url('/enrol/users.php', array('id'=>$course->id)); + $url = new moodle_url('/user/index.php', array('id'=>$course->id)); $usersnode->add(get_string('enrolledusers', 'enrol'), $url, navigation_node::TYPE_SETTING, null, 'review', new pix_icon('i/enrolusers', '')); } @@ -2873,7 +2873,7 @@ abstract class enrol_plugin { $a->course = format_string($course->fullname, true, array('context'=>$context)); $a->threshold = get_string('numdays', '', $instance->expirythreshold / (60*60*24)); $a->users = implode("\n", $users); - $a->extendurl = (string)new moodle_url('/enrol/users.php', array('id'=>$instance->courseid)); + $a->extendurl = (string)new moodle_url('/user/index.php', array('id'=>$instance->courseid)); $subject = get_string('expirymessageenrollersubject', 'enrol_'.$name, $a); $body = get_string('expirymessageenrollerbody', 'enrol_'.$name, $a);