MDL-76445 gradereport_singleview: Deprecate load_users()

Replaces current usages of
\gradereport_singleview\local\screen::load_users() with
get_gradable_users() and deprecates load_users(). The only
remaining calls of this method are unit test related.
This commit is contained in:
Mihail Geshoski 2023-06-09 16:14:22 +08:00
parent 41ec352b36
commit c95c632764
5 changed files with 15 additions and 21 deletions

View File

@ -151,7 +151,7 @@ class grade extends tablelike implements selectable_items, filterable_items {
*/
public function init($selfitemisempty = false) {
$this->items = $this->load_users();
$this->items = get_gradable_users($this->courseid, $this->groupid);
$this->totalitemcount = count($this->items);
if ($selfitemisempty) {

View File

@ -405,28 +405,15 @@ abstract class screen {
/**
* Load a valid list of users for this gradebook as the screen "items".
* @return array $users A list of enroled users.
*
* @deprecated since Moodle 4.3
* @return array A list of enroled users.
*/
protected function load_users(): array {
global $CFG;
debugging('The function ' . __FUNCTION__ . '() is deprecated. Please use get_gradable_users() instead.',
DEBUG_DEVELOPER);
// Create a graded_users_iterator because it will properly check the groups etc.
$defaultgradeshowactiveenrol = !empty($CFG->grade_report_showonlyactiveenrol);
$showonlyactiveenrol = get_user_preferences('grade_report_showonlyactiveenrol', $defaultgradeshowactiveenrol);
$showonlyactiveenrol = $showonlyactiveenrol || !has_capability('moodle/course:viewsuspendedusers', $this->context);
require_once($CFG->dirroot.'/grade/lib.php');
$gui = new \graded_users_iterator($this->course, null, $this->groupid);
$gui->require_active_enrolment($showonlyactiveenrol);
$gui->init();
// Flatten the users.
$users = [];
while ($user = $gui->next_user()) {
$users[$user->user->id] = $user->user;
}
$gui->close();
return $users;
return get_gradable_users($this->courseid, $this->groupid);
}
/**

View File

@ -102,7 +102,7 @@ class user extends tablelike implements selectable_items {
public function init($selfitemisempty = false) {
if (!$selfitemisempty) {
$validusers = $this->load_users();
$validusers = get_gradable_users($this->courseid, $this->groupid);
if (!isset($validusers[$this->itemid])) {
// If the passed user id is not valid, show the first user from the list instead.
$this->item = reset($validusers);

View File

@ -63,11 +63,13 @@ class screen_test extends \advanced_testcase {
grade_regrade_final_grades($course->id);
$screentest = new gradereport_singleview_screen_testable($course->id, 0, $group->id);
$groupusers = $screentest->test_load_users();
$this->assertDebuggingCalled('The function load_users() is deprecated. Please use get_gradable_users() instead.');
$this->assertCount(2, $groupusers);
// Now, let's suspend the enrolment of a user. Should return only one user.
$this->getDataGenerator()->enrol_user($user2->id, $course->id, $roleteacher->id, 'manual', 0, 0, ENROL_USER_SUSPENDED);
$users = $screentest->test_load_users();
$this->assertDebuggingCalled('The function load_users() is deprecated. Please use get_gradable_users() instead.');
$this->assertCount(1, $users);
// Change the viewsuspendedusers capabilities and set the user preference to display suspended users.
@ -77,6 +79,7 @@ class screen_test extends \advanced_testcase {
$this->setUser($teacher);
$screentest = new gradereport_singleview_screen_testable($course->id, 0, $group->id);
$users = $screentest->test_load_users();
$this->assertDebuggingCalled('The function load_users() is deprecated. Please use get_gradable_users() instead.');
$this->assertCount(2, $users);
// Change the capability again, now the user can't see the suspended enrolments.
@ -84,11 +87,13 @@ class screen_test extends \advanced_testcase {
set_user_preference('grade_report_showonlyactiveenrol', false, $teacher);
accesslib_clear_all_caches_for_unit_testing();
$users = $screentest->test_load_users();
$this->assertDebuggingCalled('The function load_users() is deprecated. Please use get_gradable_users() instead.');
$this->assertCount(1, $users);
// Now, activate the user enrolment again. We shall get 2 users now.
$this->getDataGenerator()->enrol_user($user2->id, $course->id, $roleteacher->id, 'manual', 0, 0, ENROL_USER_ACTIVE);
$users = $screentest->test_load_users();
$this->assertDebuggingCalled('The function load_users() is deprecated. Please use get_gradable_users() instead.');
$this->assertCount(2, $users);
}
}

View File

@ -3,6 +3,8 @@ information provided here is intended especially for developers.
=== 4.3 ===
* The load_users() method in the gradereport_singleview\local\screen class has been deprecated. Please use
get_gradable_users() instead.
* The \gradereport_singleview\local\screen\select has been deprecated. This class generates the output for the initial
view to select the single view item type (user or grade item) which is no longer actively used as we do not provide
direct links to it.