MDL-15449, enrol multiple users to multiple courses, including bugs fix, see tracker, sent by Jonathan.
This commit is contained in:
@@ -24,6 +24,7 @@ if ($data = $action_form->get_data()) {
|
||||
case 3: redirect($CFG->wwwroot.'/'.$CFG->admin.'/user/user_bulk_delete.php');
|
||||
case 4: redirect($CFG->wwwroot.'/'.$CFG->admin.'/user/user_bulk_display.php');
|
||||
case 5: redirect($CFG->wwwroot.'/'.$CFG->admin.'/user/user_bulk_download.php');
|
||||
case 6: redirect($CFG->wwwroot.'/'.$CFG->admin.'/user/user_bulk_enrol.php');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,151 @@
|
||||
<?php // $Id$
|
||||
/**
|
||||
* script for bulk user multy enrol operations
|
||||
*/
|
||||
require_once('../../config.php');
|
||||
require_once($CFG->libdir.'/adminlib.php');
|
||||
$processed = optional_param('processed', '', PARAM_CLEAN);
|
||||
$sort = optional_param('sort', 'fullname', PARAM_ALPHA); //Sort by full name
|
||||
$dir = optional_param('dir', 'asc', PARAM_ALPHA); //Order to sort (ASC)
|
||||
|
||||
admin_externalpage_setup('userbulk');
|
||||
require_capability('moodle/user:delete', get_context_instance(CONTEXT_SYSTEM));
|
||||
$return = $CFG->wwwroot.'/'.$CFG->admin.'/user/user_bulk.php';
|
||||
//If no users selected then return to user_bulk.php
|
||||
if (empty($SESSION->bulk_users)) {
|
||||
redirect($return);
|
||||
}
|
||||
$users = $SESSION->bulk_users; //Get users to display
|
||||
$usertotal = get_users(false); //Total number of users registered
|
||||
$usercount = count($users); //number of users
|
||||
|
||||
admin_externalpage_print_header();
|
||||
|
||||
//take user info
|
||||
foreach ($users as $key => $id) {
|
||||
$user = $DB->get_record('user', array('id'=>$id));
|
||||
$user->fullname = fullname($user, true);
|
||||
unset($user->firstname);
|
||||
unset($user->lastname);
|
||||
$users[$key] = $user;
|
||||
}
|
||||
|
||||
// Need to sort by date
|
||||
function sort_compare($a, $b) {
|
||||
global $sort, $dir;
|
||||
if($sort == 'lastaccess') {
|
||||
$rez = $b->lastaccess - $a->lastaccess;
|
||||
} else {
|
||||
$rez = strcasecmp(@$a->$sort, @$b->$sort);
|
||||
}
|
||||
return $dir == 'desc' ? -$rez : $rez;
|
||||
}
|
||||
usort($users, 'sort_compare');
|
||||
|
||||
//Take courses data (id, shortname, and fullname)
|
||||
$courses = get_courses_page(1, 'c.sortorder ASC', 'c.id,c.shortname,c.fullname,c.visible', $totalcount);
|
||||
$table->width = "95%";
|
||||
$columns = array('fullname');
|
||||
foreach ($courses as $v)
|
||||
{
|
||||
$columns[] = $v->shortname;
|
||||
}
|
||||
|
||||
//Print columns headers from table
|
||||
foreach ($columns as $column) {
|
||||
$strtitle = $column;
|
||||
if ($sort != $column) {
|
||||
$columnicon = '';
|
||||
$columndir = 'asc';
|
||||
} else {
|
||||
$columndir = ($dir == 'asc') ? 'desc' : 'asc';
|
||||
$columnicon = ' <img src="'.$CFG->pixpath.'/t/'.($dir == 'asc' ? 'down' : 'up' ).'.gif" alt="" />';
|
||||
}
|
||||
$table->head[] = '<a href="user_bulk_enrol.php?sort='.$column.'&dir='.$columndir.'">'.$strtitle.'</a>'.$columnicon;
|
||||
$table->align[] = 'left';
|
||||
}
|
||||
|
||||
// process data submitting
|
||||
if(!empty($processed)) {
|
||||
//Process data form here
|
||||
$total = count($courses) * count($users);
|
||||
|
||||
for ( $i = 0; $i < $total; $i++ )
|
||||
{
|
||||
$param = "selected".$i;
|
||||
$info = optional_param($param, '', PARAM_CLEAN);
|
||||
/**
|
||||
* user id: ids[0]
|
||||
* course id: ids[1]
|
||||
* enrol stat: ids[2]
|
||||
*/
|
||||
$ids = explode(',', $info);
|
||||
if(!empty($ids[2])) {
|
||||
$context = get_context_instance(CONTEXT_COURSE, $ids[1]);
|
||||
if( role_assign(5, $ids[0], 0, $context->id) ) {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
if( empty($ids[1] ) ) {
|
||||
continue;
|
||||
}
|
||||
$context = get_context_instance(CONTEXT_COURSE, $ids[1]);
|
||||
if( role_unassign(5, $ids[0], 0, $context->id) ) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
redirect($return, get_string('changessaved'));
|
||||
}
|
||||
echo <<<EOD
|
||||
<script type="text/javascript">
|
||||
function toggleck(id, uid, cid) {
|
||||
var el = document.getElementById('ck-'+id);
|
||||
if(!document.getElementById('ck-'+id+'-c').checked) {
|
||||
el.name = 'selected'+id;
|
||||
el.value = uid+','+cid+',0';
|
||||
} else {
|
||||
el.name = 'unselected';
|
||||
}
|
||||
}
|
||||
</script>
|
||||
EOD;
|
||||
//Form beginning
|
||||
echo '<form id="multienrol" name="multienrol" method="post" action="user_bulk_enrol.php">';
|
||||
echo '<input type="hidden" name="processed" value="yes" />';
|
||||
$count = 0;
|
||||
foreach($users as $user)
|
||||
{
|
||||
$temparray = array (
|
||||
'<a href="'.$CFG->wwwroot.'/user/view.php?id='.$user->id.'&course='.SITEID.'">'.$user->fullname.'</a>'
|
||||
);
|
||||
$mycourses = get_my_courses($user->id);
|
||||
$i = 1;
|
||||
foreach($courses as $acourse)
|
||||
{
|
||||
$temparray[$i] = '';
|
||||
if(isset($mycourses[$acourse->id])) {
|
||||
// already enrolled
|
||||
$temparray[$i] .= '<input type="hidden" id="ck-'.$count.'" name="unselected'.$count.
|
||||
'" value="'.$user->id.','.$acourse->id.',1" />';
|
||||
$temparray[$i] .= "<input type='checkbox' id='ck-".$count.
|
||||
"-c' checked='yes' onclick='toggleck(\"".
|
||||
$count."\",".$user->id.",".$acourse->id.",false)' />";
|
||||
} else {
|
||||
// unenrol
|
||||
$temparray[$i] .= '<input type="checkbox" name="selected'.
|
||||
$count.'" value="'.$user->id.','.$acourse->id.','.true.'" />';
|
||||
}
|
||||
$i++;
|
||||
$count++;
|
||||
}
|
||||
$table->data[] = $temparray;
|
||||
}
|
||||
print_heading("$usercount / $usertotal ".get_string('users'));
|
||||
print_table($table);
|
||||
echo '<div class="continuebutton">';
|
||||
echo '<input type="submit" name="multienrolsubmit" value="save changes">';
|
||||
echo '</div>';
|
||||
echo '</form>';
|
||||
|
||||
admin_externalpage_print_footer();
|
||||
@@ -24,7 +24,9 @@ class user_bulk_action_form extends moodleform {
|
||||
if (has_capability('moodle/user:update', $syscontext)) {
|
||||
$actions[5] = get_string('download', 'admin');
|
||||
}
|
||||
|
||||
if (has_capability('moodle/role:assign', $syscontext)){
|
||||
$actions[6] = get_string('enrolmultipleusers', 'admin');
|
||||
}
|
||||
$objs = array();
|
||||
$objs[] =& $mform->createElement('select', 'action', null, $actions);
|
||||
$objs[] =& $mform->createElement('submit', 'doaction', get_string('go'));
|
||||
@@ -106,4 +108,4 @@ class user_bulk_form extends moodleform {
|
||||
$renderer->setGroupElementTemplate($template, 'usersgrp');
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -334,6 +334,7 @@ $string['enablerssfeeds'] = 'Enable RSS feeds';
|
||||
$string['enablestats'] = 'Enable statistics';
|
||||
$string['enabletrusttext'] = 'Enable Trusted Content';
|
||||
$string['encoding'] = 'Encoding';
|
||||
$string['enrolmultipleusers'] = 'Enrol the users';
|
||||
$string['environment'] = 'Environment';
|
||||
$string['environmenterrortodo'] = 'You must solve all the environmental problems (errors) found above before proceeding to install this Moodle version!';
|
||||
$string['environmenterrorupgrade'] = 'Warning: you should solve all the environmental problems (errors) found above before proceeding to upgrade this Moodle version! Upgrading without fixing these requirements could cause problems such as data loss. Are you sure you want to continue with the upgrade?';
|
||||
|
||||
+1
-1
@@ -5551,7 +5551,7 @@ function forum_remove_user_tracking($userid, $context) {
|
||||
break;
|
||||
|
||||
case CONTEXT_COURSE: // For a whole course
|
||||
if ($course = $DB->get_record('course', array('id' => $context->instanceid), '', '', '', '', 'id')) {
|
||||
if ($course = $DB->get_record('course', array('id' => $context->instanceid), 'id')) {
|
||||
// find all forums in which this user has reading tracked
|
||||
if ($forums = $DB->get_records_sql("SELECT f.id, cm.id as coursemodule
|
||||
FROM {forum} f,
|
||||
|
||||
@@ -94,7 +94,7 @@ class user_filtering {
|
||||
* @return object filter
|
||||
*/
|
||||
function get_field($fieldname, $advanced) {
|
||||
global $USER, $CFG, $DB;
|
||||
global $USER, $CFG, $DB, $SITE;
|
||||
|
||||
switch ($fieldname) {
|
||||
case 'username': return new user_filter_text('username', get_string('username'), $advanced, 'username');
|
||||
|
||||
Reference in New Issue
Block a user