diff --git a/user/selector/module.js b/user/selector/module.js index de2f500d804..120fb7865ef 100644 --- a/user/selector/module.js +++ b/user/selector/module.js @@ -221,8 +221,9 @@ M.core_user.init_user_selector = function (Y, name, hash, extrafields, lastsearc // Output each optgroup. var count = 0; - for (var groupname in data.results) { - this.output_group(groupname, data.results[groupname], selectedusers, true); + for (var key in data.results) { + var groupdata = data.results[key]; + this.output_group(groupdata.name, groupdata.users, selectedusers, true); count++; } if (!count) { @@ -248,13 +249,14 @@ M.core_user.init_user_selector = function (Y, name, hash, extrafields, lastsearc output_group : function(groupname, users, selectedusers, processsingle) { var optgroup = Y.Node.create(''); var count = 0; - for (var userid in users) { - var user = users[userid]; - var option = Y.Node.create(''); + for (var key in users) { + var user = users[key]; + var option = Y.Node.create(''); if (user.disabled) { option.set('disabled', true); - } else if (selectedusers===true || selectedusers[userid]) { + } else if (selectedusers===true || selectedusers[user.id]) { option.set('selected', true); + delete selectedusers[user.id]; } else { option.set('selected', false); } diff --git a/user/selector/search.php b/user/selector/search.php index fcaf74ec3bb..ab282749a76 100644 --- a/user/selector/search.php +++ b/user/selector/search.php @@ -78,17 +78,20 @@ if (isset($options['file'])) { $userselector = new $classname($name, $options); // Do the search and output the results. -$users = $userselector->find_users($search); -foreach ($users as &$group) { - foreach ($group as $user) { +$results = $userselector->find_users($search); +$json = array(); +foreach ($results as $groupname => $users) { + $groupdata = array('name' => $groupname, 'users' => array()); + foreach ($users as $user) { $output = new stdClass; $output->id = $user->id; $output->name = $userselector->output_user($user); if (!empty($user->disabled)) { $output->disabled = true; } - $group[$user->id] = $output; + $groupdata['users'][] = $output; } + $json[] = $groupdata; } -echo json_encode(array('results' => $users)); +echo json_encode(array('results' => $json));