Skip to content

Commit

Permalink
MDL-66659 core: observe viewfullnames capability in flexible_table.
Browse files Browse the repository at this point in the history
  • Loading branch information
paulholden committed Oct 1, 2019
1 parent a672f02 commit d99bbd8
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 3 deletions.
4 changes: 2 additions & 2 deletions lib/tablelib.php
Expand Up @@ -863,9 +863,9 @@ function format_row($row) {
* @return string contents of cell in column 'fullname', for this row.
*/
function col_fullname($row) {
global $COURSE;
global $PAGE, $COURSE;

$name = fullname($row);
$name = fullname($row, has_capability('moodle/site:viewfullnames', $PAGE->context));
if ($this->download) {
return $name;
}
Expand Down
63 changes: 62 additions & 1 deletion lib/tests/tablelib_test.php
Expand Up @@ -37,7 +37,7 @@
* @copyright 2013 Damyon Wiese <damyon@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class core_tablelib_testcase extends basic_testcase {
class core_tablelib_testcase extends advanced_testcase {
protected function generate_columns($cols) {
$columns = array();
foreach (range(0, $cols - 1) as $j) {
Expand Down Expand Up @@ -352,6 +352,67 @@ public function test_50_cols() {
);
}

/**
* Data provider for test_fullname_column
*
* @return array
*/
public function fullname_column_provider() {
return [
['language'],
['alternatename lastname'],
['firstname lastnamephonetic'],
];
}

/**
* Test fullname column observes configured alternate fullname format configuration
*
* @param string $format
* @return void
*
* @dataProvider fullname_column_provider
*/
public function test_fullname_column(string $format) {
$this->resetAfterTest();
$this->setAdminUser();

set_config('alternativefullnameformat', $format);

$user = $this->getDataGenerator()->create_user();

$table = $this->create_and_setup_table(['fullname'], [], true, false, [], []);
$this->assertContains(fullname($user, true), $table->format_row($user)['fullname']);
}

/**
* Test fullname column ignores fullname format configuration for a user with viewfullnames capability prohibited
*
* @param string $format
* @return void
*
* @dataProvider fullname_column_provider
*/
public function test_fullname_column_prohibit_viewfullnames(string $format) {
global $DB, $CFG;

$this->resetAfterTest();

set_config('alternativefullnameformat', $format);

$currentuser = $this->getDataGenerator()->create_user();
$this->setUser($currentuser);

// Prohibit the viewfullnames from the default user role.
$userrole = $DB->get_record('role', ['id' => $CFG->defaultuserroleid]);
role_change_permission($userrole->id, context_system::instance(), 'moodle/site:viewfullnames', CAP_PROHIBIT);

$user = $this->getDataGenerator()->create_user();

$table = $this->create_and_setup_table(['fullname'], [], true, false, [], []);
$this->assertContains(fullname($user, false), $table->format_row($user)['fullname']);
}

public function test_get_row_html() {
$data = $this->generate_data(1, 5);
$columns = $this->generate_columns(5);
Expand Down

0 comments on commit d99bbd8

Please sign in to comment.