On enrol students to a course page, force searching if too many users to display (controlled by MAX_USERS_PER_PAGE - not previously used and bumped up to 1000 as a more reasonable limit) - trying to put 30,000 users in a drop down menu crashes some browsers

This commit is contained in:
mjollnir_ 2004-11-22 01:40:18 +00:00
parent eb46f6a322
commit 4f3fecf4a6
3 changed files with 22 additions and 9 deletions

View file

@ -40,6 +40,7 @@
document.studentform.remove.disabled=true;
document.studentform.removeselect.selectedIndex=-1;">
<?php
if (!empty($searchusers)) {
echo "<optgroup label=\"$strsearchresults (" . count($searchusers) . ")\">\n";
foreach ($searchusers as $user) {
@ -49,9 +50,15 @@
echo "</optgroup>\n";
}
if (!empty($users)) {
foreach ($users as $user) {
$fullname = fullname($user, true);
echo "<option value=\"$user->id\">".$fullname.", ".$user->email."</option>\n";
if ($usercount > MAX_USERS_PER_PAGE) {
echo '<optgroup label="'.get_string('toomanytoshow').'"><option></option></optgroup>'."\n"
.'<optgroup label="'.get_string('trysearching').'"><option></option></optgroup>'."\n";
}
else {
foreach ($users as $user) {
$fullname = fullname($user, true);
echo "<option value=\"$user->id\">".$fullname.", ".$user->email."</option>\n";
}
}
}
?>

View file

@ -3,7 +3,7 @@
require_once("../config.php");
define("MAX_USERS_PER_PAGE", 50);
define("MAX_USERS_PER_PAGE", 1000);
require_variable($id); // course id
optional_variable($add, "");
@ -122,11 +122,16 @@
/// If no search results then get potential students for this course excluding users already in course
if (empty($searchusers)) {
if (!$users = get_users(true, '', true, $existinguserlist, 'firstname ASC, lastname ASC', '', '',
0, 99999, 'id, firstname, lastname, email') ) {
$users = array();
$usercount = get_users(false, '', true, $existinguserlist, 'firstname ASC, lastname ASC', '', '',
0, 99999, 'id, firstname, lastname, email') ;
$users = array();
if ($usercount <= MAX_USERS_PER_PAGE) {
$users = get_users(true, '', true, $existinguserlist, 'firstname ASC, lastname ASC', '', '',
0, 99999, 'id, firstname, lastname, email');
}
$usercount = count($users);
}