diff --git a/report/competency/classes/output/user_course_navigation.php b/report/competency/classes/output/user_course_navigation.php index 57735788ede..d67e9e0a1df 100644 --- a/report/competency/classes/output/user_course_navigation.php +++ b/report/competency/classes/output/user_course_navigation.php @@ -110,12 +110,11 @@ class user_course_navigation implements renderable, templatable { $data->users = array(); foreach ($users as $user) { - $exporter = new user_summary_exporter($user); - $user = $exporter->export($output); - if ($user->id == $this->userid) { - $user->selected = true; - } - $data->users[] = $user; + $data->users[] = (object)[ + 'id' => $user->id, + 'fullname' => fullname($user, has_capability('moodle/site:viewfullnames', $context)), + 'selected' => $user->id == $this->userid + ]; } $data->hasusers = true; diff --git a/report/competency/index.php b/report/competency/index.php index b7b02997f70..18c599baddb 100644 --- a/report/competency/index.php +++ b/report/competency/index.php @@ -88,7 +88,7 @@ if ($currentuser > 0) { $user = core_user::get_user($currentuser); $usercontext = context_user::instance($currentuser); $userheading = array( - 'heading' => fullname($user), + 'heading' => fullname($user, has_capability('moodle/site:viewfullnames', $context)), 'user' => $user, 'usercontext' => $usercontext ); diff --git a/report/competency/tests/behat/breakdown_by_activity.feature b/report/competency/tests/behat/breakdown_by_activity.feature index db8a055122b..833de9ac71e 100644 --- a/report/competency/tests/behat/breakdown_by_activity.feature +++ b/report/competency/tests/behat/breakdown_by_activity.feature @@ -16,14 +16,19 @@ Feature: See the competencies for an activity | shortname | fullname | | C1 | Course 1 | And the following "users" exist: - | username | firstname | lastname | email | - | student1 | Student | 1 | student1@example.com | + | username | firstname | lastname | email | idnumber | middlename | alternatename | firstnamephonetic | lastnamephonetic | + | student1 | Grainne | Beauchamp | student1@example.com | s1 | Ann | Jill | Gronya | Beecham | + | student2 | Niamh | Cholmondely | student2@example.com | s2 | Jane | Nina | Nee | Chumlee | And the following "course enrolments" exist: | user | course | role | | student1 | C1 | student | + | student2 | C1 | student | And the following "activities" exist: | activity | name | intro | course | idnumber | | page | PageName1 | PageDesc1 | C1 | PAGE1 | + And the following config values are set as admin: + | fullnamedisplay | firstname | + | alternativefullnameformat | middlename, alternatename, firstname, lastname | And I log in as "admin" And I am on site homepage And I follow "Course 1" @@ -49,6 +54,10 @@ Feature: See the competencies for an activity And I set the field "Filter competencies by resource or activity" to "PageName1" Then I should see "Test-Comp1" And I should not see "Test-Comp2" + And I should see "Ann, Jill, Grainne, Beauchamp" + And I should see "Ann, Jill, Grainne, Beauchamp" in the ".form-autocomplete-selection" "css_element" + And I open the autocomplete suggestions list + And I should see "Jane, Nina, Niamh, Cholmondely" in the ".form-autocomplete-suggestions" "css_element" And I click on "Not rated" "link" And I click on "Rate" "button" And I set the field "Rating" to "A" diff --git a/report/completion/index.php b/report/completion/index.php index 06d30dc96f7..9a5d78a1f92 100644 --- a/report/completion/index.php +++ b/report/completion/index.php @@ -554,7 +554,7 @@ foreach ($progress as $user) { if ($csv) { $row = array(); $row[] = $user->id; - $row[] = fullname($user); + $row[] = fullname($user, has_capability('moodle/site:viewfullnames', $context)); foreach ($extrafields as $field) { $row[] = $user->{$field}; } @@ -567,7 +567,8 @@ foreach ($progress as $user) { $userurl = new moodle_url('/user/view.php', array('id' => $user->id, 'course' => $course->id)); } - print ''.fullname($user).''; + print '' . + fullname($user, has_capability('moodle/site:viewfullnames', $context)) . ''; foreach ($extrafields as $field) { echo ''.s($user->{$field}).''; } diff --git a/report/completion/tests/behat/completion_report.feature b/report/completion/tests/behat/completion_report.feature new file mode 100644 index 00000000000..0f2af7b930a --- /dev/null +++ b/report/completion/tests/behat/completion_report.feature @@ -0,0 +1,37 @@ +@report @report_completion +Feature: See the completion for items in a course + In order see completion data + As a teacher + I need to view completion report + + Background: + Given the following "users" exist: + | username | firstname | lastname | email | idnumber | middlename | alternatename | firstnamephonetic | lastnamephonetic | + | teacher1 | Teacher | 1 | teacher1@example.com | t1 | | fred | | | + | student1 | Grainne | Beauchamp | student1@example.com | s1 | Ann | Jill | Gronya | Beecham | + And the following "courses" exist: + | fullname | shortname | category | enablecompletion | + | Course 1 | C1 | 0 | 1 | + And the following "course enrolments" exist: + | user | course | role | + | teacher1 | C1 | editingteacher | + | student1 | C1 | student | + And the following "activities" exist: + | activity | name | intro | course | idnumber | completion | completionview | + | page | PageName1 | PageDesc1 | C1 | PAGE1 | 1 | 1 | + And the following config values are set as admin: + | fullnamedisplay | firstname | + | alternativefullnameformat | middlename, alternatename, firstname, lastname | + + @javascript + Scenario: Go to the completion report + Given I log in as "teacher1" + And I am on "Course 1" course homepage + And I navigate to "Course completion" in current page administration + And I expand all fieldsets + And I set the following fields to these values: + | Page - PageName1 | 1 | + And I press "Save changes" + And I am on "Course 1" course homepage + When I navigate to "Reports > Course completion" in current page administration + Then I should see "Ann, Jill, Grainne, Beauchamp" diff --git a/report/log/classes/renderable.php b/report/log/classes/renderable.php index 5500d7a460c..76433fa6515 100644 --- a/report/log/classes/renderable.php +++ b/report/log/classes/renderable.php @@ -299,7 +299,14 @@ class report_log_renderable implements renderable { */ public function get_selected_user_fullname() { $user = core_user::get_user($this->userid); - return fullname($user); + if (empty($this->course)) { + // We are in system context. + $context = context_system::instance(); + } else { + // We are in course context. + $context = context_course::instance($this->course->id); + } + return fullname($user, has_capability('moodle/site:viewfullnames', $context)); } /** diff --git a/report/log/classes/table_log.php b/report/log/classes/table_log.php index c53bcedf704..ec67c4de7ee 100644 --- a/report/log/classes/table_log.php +++ b/report/log/classes/table_log.php @@ -132,7 +132,7 @@ class report_log_table_log extends table_sql { return false; } - $this->userfullnames[$userid] = fullname($user); + $this->userfullnames[$userid] = fullname($user, has_capability('moodle/site:viewfullnames', $this->get_context())); return $this->userfullnames[$userid]; } @@ -596,7 +596,7 @@ class report_log_table_log extends table_sql { " FROM {user} WHERE id " . $usql, $uparams); foreach ($users as $userid => $user) { - $this->userfullnames[$userid] = fullname($user); + $this->userfullnames[$userid] = fullname($user, has_capability('moodle/site:viewfullnames', $this->get_context())); unset($userids[$userid]); } diff --git a/report/log/tests/behat/filter_log.feature b/report/log/tests/behat/filter_log.feature index 9f2174d652d..a6619e97fa5 100644 --- a/report/log/tests/behat/filter_log.feature +++ b/report/log/tests/behat/filter_log.feature @@ -9,12 +9,16 @@ Feature: In a report, admin can filter log data | fullname | shortname | category | groupmode | | Course 1 | C1 | 0 | 1 | And the following "users" exist: - | username | firstname | lastname | email | - | student1 | Student | 1 | student1@example.com | + | username | firstname | lastname | email | idnumber | middlename | alternatename | firstnamephonetic | lastnamephonetic | + | teacher1 | Teacher | One | teacher1@example.com | t1 | | fred | | | + | student1 | Grainne | Beauchamp | student1@example.com | s1 | Ann | Jill | Gronya | Beecham | And the following "course enrolments" exist: | user | course | role | | admin | C1 | editingteacher | | student1 | C1 | student | + And the following config values are set as admin: + | fullnamedisplay | firstname | + | alternativefullnameformat | middlename, alternatename, firstname, lastname | And I log in as "admin" Scenario: Filter log report for standard and legacy log reader @@ -25,7 +29,7 @@ Feature: In a report, admin can filter log data And I follow "Home" And I am on "Course 1" course homepage And I navigate to course participants - And I follow "Student 1" + And I follow "Ann, Jill, Grainne, Beauchamp" And I click on "Log in as" "link" And I press "Continue" And I log out @@ -44,7 +48,7 @@ Feature: In a report, admin can filter log data Scenario: Filter log report for standard log reader Given I am on "Course 1" course homepage And I navigate to course participants - And I follow "Student 1" + And I follow "Ann, Jill, Grainne, Beauchamp" And I click on "Log in as" "link" And I press "Continue" And I log out @@ -66,7 +70,7 @@ Feature: In a report, admin can filter log data And I follow "Home" And I am on "Course 1" course homepage And I navigate to course participants - And I follow "Student 1" + And I follow "Ann, Jill, Grainne, Beauchamp" And I click on "Log in as" "link" And I press "Continue" And I log out diff --git a/report/log/tests/behat/user_log.feature b/report/log/tests/behat/user_log.feature index 2a172821a89..b55a8ae203e 100644 --- a/report/log/tests/behat/user_log.feature +++ b/report/log/tests/behat/user_log.feature @@ -9,9 +9,9 @@ Feature: User can view activity log. | fullname | shortname | category | groupmode | | Course 1 | C1 | 0 | 1 | And the following "users" exist: - | username | firstname | lastname | email | - | teacher1 | Teacher | 1 | teacher1@example.com | - | student1 | Student | 1 | student1@example.com | + | username | firstname | lastname | email | idnumber | middlename | alternatename | firstnamephonetic | lastnamephonetic | + | teacher1 | Teacher | One | teacher1@example.com | t1 | | fred | | | + | student1 | Grainne | Beauchamp | student1@example.com | s1 | Ann | Jill | Gronya | Beecham | And the following "course enrolments" exist: | user | course | role | | teacher1 | C1 | editingteacher | @@ -25,6 +25,9 @@ Feature: User can view activity log. | section | 1 | | assignsubmission_onlinetext_enabled | 1 | | assignsubmission_file_enabled | 0 | + And the following config values are set as admin: + | fullnamedisplay | firstname | + | alternativefullnameformat | middlename, alternatename, firstname, lastname | And I log in as "student1" And I am on "Course 1" course homepage And I follow "Test assignment name" @@ -38,10 +41,10 @@ Feature: User can view activity log. Given I log in as "teacher1" And I am on "Course 1" course homepage And I navigate to course participants - And I follow "Student 1" + And I follow "Ann, Jill, Grainne, Beauchamp" When I follow "Today's logs" And I should see "Assignment: Test assignment name" - And I follow "Student 1" + And I follow "Ann, Jill, Grainne, Beauchamp" And I follow "All logs" Then I should see "Assignment: Test assignment name" @@ -53,9 +56,17 @@ Feature: User can view activity log. And I log in as "teacher1" And I am on "Course 1" course homepage And I navigate to course participants - And I follow "Student 1" + And I follow "Ann, Jill, Grainne, Beauchamp" When I follow "Today's logs" And I should see "No log reader enabled" - And I follow "Student 1" + And I follow "Ann, Jill, Grainne, Beauchamp" And I follow "All logs" Then I should see "No log reader enabled" + + Scenario: View Todays' log report for user through Course log report + Given I log in as "teacher1" + And I am on "Course 1" course homepage + And I navigate to "Reports > Logs" in current page administration + And I set the field with xpath "//select[@name='user']" to "Ann, Jill, Grainne, Beauchamp" + When I click on "Get these logs" "button" + Then I should see "Ann, Jill, Grainne, Beauchamp" diff --git a/report/loglive/classes/table_log.php b/report/loglive/classes/table_log.php index fdc7ed63279..6dfa2372e35 100644 --- a/report/loglive/classes/table_log.php +++ b/report/loglive/classes/table_log.php @@ -379,7 +379,7 @@ class report_loglive_table_log extends table_sql { $userfieldsapi->get_sql('', false, '', '', false)->selects . " FROM {user} WHERE id " . $usql, $uparams); foreach ($users as $userid => $user) { - $this->userfullnames[$userid] = fullname($user); + $this->userfullnames[$userid] = fullname($user, has_capability('moodle/site:viewfullnames', $this->get_context())); } } diff --git a/report/loglive/tests/behat/loglive_report.feature b/report/loglive/tests/behat/loglive_report.feature index f0699e6d871..b6ce06e2503 100644 --- a/report/loglive/tests/behat/loglive_report.feature +++ b/report/loglive/tests/behat/loglive_report.feature @@ -8,6 +8,15 @@ Feature: In a report, admin can see loglive data Given the following "courses" exist: | fullname | shortname | category | groupmode | | Course 1 | C1 | 0 | 1 | + And the following "users" exist: + | username | firstname | lastname | email | idnumber | middlename | alternatename | firstnamephonetic | lastnamephonetic | + | student1 | Grainne | Beauchamp | student1@example.com | s1 | Ann | Jill | Gronya | Beecham | + And the following "course enrolments" exist: + | user | course | role | + | student1 | C1 | student | + And the following config values are set as admin: + | fullnamedisplay | firstname | + | alternativefullnameformat | middlename, alternatename, firstname, lastname | And I log in as "admin" And I navigate to "Plugins > Logging > Manage log stores" in site administration And I click on "Enable" "link" in the "Legacy log" "table_row" @@ -72,3 +81,24 @@ Feature: In a report, admin can see loglive data And I wait "8" seconds And I should see "Test name2" And I log out + + @javascript + Scenario: Check course loglive report entries for a user + Given I log out + And I log in as "student1" + And I am on "Course 1" course homepage + And I follow "Test name" + And I log out + And I log in as "admin" + And I am on "Course 1" course homepage + And I navigate to "Reports > Live logs" in site administration + When I set the field "reader" to "Standard log" + Then I should see "Course module viewed" + And I should see "Test name" + And I should see "Ann, Jill, Grainne, Beauchamp" + And I set the field "reader" to "Legacy log" + And I wait to be redirected + And I should see "course_add mod" + And I wait "8" seconds + And I should see "Test name" + And I log out diff --git a/report/progress/index.php b/report/progress/index.php index bcbf06ec4da..85755bf4cc7 100644 --- a/report/progress/index.php +++ b/report/progress/index.php @@ -344,13 +344,14 @@ if ($csv) { foreach($progress as $user) { // User name if ($csv) { - print csv_quote(fullname($user)); + print csv_quote(fullname($user, has_capability('moodle/site:viewfullnames', $context))); foreach ($extrafields as $field) { echo $sep . csv_quote($user->{$field}); } } else { - print ''.fullname($user).''; + print '' . + fullname($user, has_capability('moodle/site:viewfullnames', $context)) . ''; foreach ($extrafields as $field) { echo '' . s($user->{$field}) . ''; } @@ -398,7 +399,7 @@ foreach($progress as $user) { $a=new StdClass; $a->state=$describe; $a->date=$date; - $a->user=fullname($user); + $a->user = fullname($user, has_capability('moodle/site:viewfullnames', $context)); $a->activity = $formattedactivities[$activity->id]->displayname; $fulldescribe=get_string('progress-title','completion',$a); diff --git a/report/progress/tests/behat/activity_completion_report.feature b/report/progress/tests/behat/activity_completion_report.feature index ae83fbbbf0b..62e4d63fabd 100644 --- a/report/progress/tests/behat/activity_completion_report.feature +++ b/report/progress/tests/behat/activity_completion_report.feature @@ -14,13 +14,16 @@ Feature: Teacher can view and override users' activity completion data via the p | assign | my assignment 2 | A2 desc | C1 | assign2 | 0 | 2 | 1 | | 0 | 0 | | assign | my assignment 3 | A3 desc | C1 | assign3 | 0 | 2 | 1 | 1 | 1 | 0 | And the following "users" exist: - | username | firstname | lastname | email | - | teacher1 | Teacher | One | teacher1@example.com | - | student1 | Student | One | student1@example.com | + | username | firstname | lastname | email | idnumber | middlename | alternatename | firstnamephonetic | lastnamephonetic | + | teacher1 | Teacher | One | teacher1@example.com | t1 | | fred | | | + | student1 | Grainne | Beauchamp | student1@example.com | s1 | Ann | Jill | Gronya | Beecham | And the following "course enrolments" exist: | user | course | role | | teacher1 | C1 | editingteacher | | student1 | C1 | student | + And the following config values are set as admin: + | fullnamedisplay | firstname | + | alternativefullnameformat | middlename, alternatename, firstname, lastname | # Course comprising one activity with auto completion (student must view it) and one with manual completion. # This confirms that after being completed by the student and overridden by the teacher, that both activities can still be @@ -41,20 +44,20 @@ Feature: Teacher can view and override users' activity completion data via the p When I log in as "teacher1" And I am on "Course 1" course homepage And I navigate to "Reports > Activity completion" in current page administration - And "Student One, my assignment: Completed" "icon" should exist in the "Student One" "table_row" - And "Student One, my assignment 2: Completed" "icon" should exist in the "Student One" "table_row" - And I click on "my assignment" "link" in the "Student One" "table_row" + And "Ann, Jill, Grainne, Beauchamp, my assignment: Completed" "icon" should exist in the "Ann, Jill, Grainne, Beauchamp" "table_row" + And "Ann, Jill, Grainne, Beauchamp, my assignment 2: Completed" "icon" should exist in the "Ann, Jill, Grainne, Beauchamp" "table_row" + And I click on "my assignment" "link" in the "Ann, Jill, Grainne, Beauchamp" "table_row" And I click on "Save changes" "button" - And "Student One, my assignment: Not completed (set by Teacher One)" "icon" should exist in the "Student One" "table_row" - And I click on "my assignment 2" "link" in the "Student One" "table_row" + And "Ann, Jill, Grainne, Beauchamp, my assignment: Not completed (set by Teacher)" "icon" should exist in the "Ann, Jill, Grainne, Beauchamp" "table_row" + And I click on "my assignment 2" "link" in the "Ann, Jill, Grainne, Beauchamp" "table_row" And I click on "Save changes" "button" - And "Student One, my assignment 2: Not completed (set by Teacher One)" "icon" should exist in the "Student One" "table_row" + And "Ann, Jill, Grainne, Beauchamp, my assignment 2: Not completed (set by Teacher)" "icon" should exist in the "Ann, Jill, Grainne, Beauchamp" "table_row" And I log out # Student can now complete the activities again, via normal means. Then I log in as "student1" And I am on "Course 1" course homepage - And the manual completion button of "my assignment" overridden by "Teacher One" is displayed as "Mark as done" - And the "View" completion condition of "my assignment 2" overridden by "Teacher One" is displayed as "todo" + And the manual completion button of "my assignment" overridden by "Teacher" is displayed as "Mark as done" + And the "View" completion condition of "my assignment 2" overridden by "Teacher" is displayed as "todo" And I toggle the manual completion state of "my assignment" And the manual completion button of "my assignment" is displayed as "Done" And I click on "my assignment 2" "link" @@ -65,8 +68,8 @@ Feature: Teacher can view and override users' activity completion data via the p When I log in as "teacher1" And I am on "Course 1" course homepage And I navigate to "Reports > Activity completion" in current page administration - And "Student One, my assignment: Completed" "icon" should exist in the "Student One" "table_row" - And "Student One, my assignment 2: Completed" "icon" should exist in the "Student One" "table_row" + And "Ann, Jill, Grainne, Beauchamp, my assignment: Completed" "icon" should exist in the "Ann, Jill, Grainne, Beauchamp" "table_row" + And "Ann, Jill, Grainne, Beauchamp, my assignment 2: Completed" "icon" should exist in the "Ann, Jill, Grainne, Beauchamp" "table_row" # Course comprising one activity with auto completion (student must view it and receive a grade) and one with manual completion. # This confirms that after being overridden to complete by the teacher, that the completion status for activities with automatic @@ -77,19 +80,19 @@ Feature: Teacher can view and override users' activity completion data via the p When I log in as "teacher1" And I am on "Course 1" course homepage And I navigate to "Reports > Activity completion" in current page administration - And "Student One, my assignment: Not completed" "icon" should exist in the "Student One" "table_row" - And "Student One, my assignment 3: Not completed" "icon" should exist in the "Student One" "table_row" - And I click on "my assignment" "link" in the "Student One" "table_row" + And "Ann, Jill, Grainne, Beauchamp, my assignment: Not completed" "icon" should exist in the "Ann, Jill, Grainne, Beauchamp" "table_row" + And "Ann, Jill, Grainne, Beauchamp, my assignment 3: Not completed" "icon" should exist in the "Ann, Jill, Grainne, Beauchamp" "table_row" + And I click on "my assignment" "link" in the "Ann, Jill, Grainne, Beauchamp" "table_row" And I click on "Save changes" "button" - And "Student One, my assignment: Completed (set by Teacher One)" "icon" should exist in the "Student One" "table_row" - And I click on "my assignment 3" "link" in the "Student One" "table_row" + And "Ann, Jill, Grainne, Beauchamp, my assignment: Completed (set by Teacher)" "icon" should exist in the "Ann, Jill, Grainne, Beauchamp" "table_row" + And I click on "my assignment 3" "link" in the "Ann, Jill, Grainne, Beauchamp" "table_row" And I click on "Save changes" "button" - And "Student One, my assignment 3: Completed (set by Teacher One)" "icon" should exist in the "Student One" "table_row" + And "Ann, Jill, Grainne, Beauchamp, my assignment 3: Completed (set by Teacher)" "icon" should exist in the "Ann, Jill, Grainne, Beauchamp" "table_row" And I log out # Then as a student, confirm that automatic completion checks are no longer triggered (such as after an assign submission). Then I log in as "student1" And I am on "Course 1" course homepage - And the "Receive a grade" completion condition of "my assignment 3" overridden by "Teacher One" is displayed as "done" + And the "Receive a grade" completion condition of "my assignment 3" overridden by "Teacher" is displayed as "done" And I click on "my assignment 3" "link" And I press "Add submission" And I set the following fields to these values: @@ -97,9 +100,10 @@ Feature: Teacher can view and override users' activity completion data via the p And I press "Save changes" And I should see "Submitted for grading" And I am on "Course 1" course homepage - And the "Receive a grade" completion condition of "my assignment 3" overridden by "Teacher One" is displayed as "done" + And the "Receive a grade" completion condition of "my assignment 3" overridden by "Teacher" is displayed as "done" # And Confirm that manual completion changes are still allowed. And I am on "Course 1" course homepage - And the manual completion button of "my assignment" overridden by "Teacher One" is displayed as "Done" + And the manual completion button of "my assignment" overridden by "Teacher" is displayed as "Done" And I toggle the manual completion state of "my assignment" And the manual completion button of "my assignment" is displayed as "Mark as done" + And I log out