mirror of
https://github.com/moodle/moodle.git
synced 2025-08-06 01:16:44 +02:00
MDL-85462 reportbuilder: improve user entity last access reporting.
Include filter/condition for "never accessed".
This commit is contained in:
parent
d65e24a62c
commit
6a26479909
3 changed files with 30 additions and 2 deletions
|
@ -178,6 +178,7 @@ $string['movecolumn'] = 'Move column \'{$a}\'';
|
|||
$string['movecondition'] = 'Move condition \'{$a}\'';
|
||||
$string['movefilter'] = 'Move filter \'{$a}\'';
|
||||
$string['movesorting'] = 'Move sorting for column \'{$a}\'';
|
||||
$string['neveraccessed'] = 'Never accessed';
|
||||
$string['newreport'] = 'New report';
|
||||
$string['newschedule'] = 'New schedule';
|
||||
$string['noaudiences'] = 'There are no audiences for this report';
|
||||
|
|
|
@ -419,6 +419,7 @@ class user extends base {
|
|||
'phone1' => new lang_string('phone1'),
|
||||
'phone2' => new lang_string('phone2'),
|
||||
'address' => new lang_string('address'),
|
||||
'firstaccess' => new lang_string('firstaccess'),
|
||||
'lastaccess' => new lang_string('lastaccess'),
|
||||
'suspended' => new lang_string('suspended'),
|
||||
'confirmed' => new lang_string('confirmed', 'admin'),
|
||||
|
@ -446,6 +447,7 @@ class user extends base {
|
|||
case 'suspended':
|
||||
$fieldtype = column::TYPE_BOOLEAN;
|
||||
break;
|
||||
case 'firstaccess':
|
||||
case 'lastaccess':
|
||||
case 'timecreated':
|
||||
case 'timemodified':
|
||||
|
@ -521,6 +523,16 @@ class user extends base {
|
|||
$filters[] = $filter;
|
||||
}
|
||||
|
||||
// Never accessed filter.
|
||||
$filters[] = (new filter(
|
||||
boolean_select::class,
|
||||
'neveraccessed',
|
||||
new lang_string('neveraccessed', 'core_reportbuilder'),
|
||||
$this->get_entity_name(),
|
||||
"CASE WHEN {$tablealias}.firstaccess = {$tablealias}.lastaccess OR {$tablealias}.lastaccess = 0 THEN 1 ELSE 0 END",
|
||||
))
|
||||
->add_joins($this->get_joins());
|
||||
|
||||
// User select filter.
|
||||
$filters[] = (new filter(
|
||||
user_filter::class,
|
||||
|
|
|
@ -103,6 +103,7 @@ final class users_test extends core_reportbuilder_testcase {
|
|||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:phone1']);
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:phone2']);
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:address']);
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:firstaccess']);
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:lastaccess']);
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:suspended']);
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:confirmed']);
|
||||
|
@ -162,6 +163,7 @@ final class users_test extends core_reportbuilder_testcase {
|
|||
$phone1,
|
||||
$phone2,
|
||||
$address,
|
||||
$firstaccess,
|
||||
$lastaccess,
|
||||
$suspended,
|
||||
$confirmed,
|
||||
|
@ -196,6 +198,7 @@ final class users_test extends core_reportbuilder_testcase {
|
|||
$this->assertEquals($user->phone1, $phone1);
|
||||
$this->assertEquals($user->phone2, $phone2);
|
||||
$this->assertEquals($user->address, $address);
|
||||
$this->assertEmpty($firstaccess);
|
||||
$this->assertEmpty($lastaccess);
|
||||
$this->assertEquals('No', $suspended);
|
||||
$this->assertEquals('Yes', $confirmed);
|
||||
|
@ -490,6 +493,14 @@ final class users_test extends core_reportbuilder_testcase {
|
|||
'user:timemodified_operator' => date::DATE_RANGE,
|
||||
'user:timemodified_to' => 1622502000,
|
||||
], false],
|
||||
'Filter firstaccess' => ['user:firstaccess', [
|
||||
'user:firstaccess_operator' => date::DATE_EMPTY,
|
||||
], true],
|
||||
'Filter firstaccess (no match)' => ['user:firstaccess', [
|
||||
'user:firstaccess_operator' => date::DATE_RANGE,
|
||||
'user:firstaccess_from' => 1619823600,
|
||||
'user:firstaccess_to' => 1622502000,
|
||||
], false],
|
||||
'Filter lastaccess' => ['user:lastaccess', [
|
||||
'user:lastaccess_operator' => date::DATE_EMPTY,
|
||||
], true],
|
||||
|
@ -498,6 +509,12 @@ final class users_test extends core_reportbuilder_testcase {
|
|||
'user:lastaccess_from' => 1619823600,
|
||||
'user:lastaccess_to' => 1622502000,
|
||||
], false],
|
||||
'Filter neveraccessed' => ['user:neveraccessed', [
|
||||
'user:neveraccessed_operator' => boolean_select::CHECKED,
|
||||
], true],
|
||||
'Filter neveraccessed (no match)' => ['user:neveraccessed', [
|
||||
'user:neveraccessed_operator' => boolean_select::NOT_CHECKED,
|
||||
], false],
|
||||
'Filter lastip' => ['user:lastip', [
|
||||
'user:lastip_operator' => text::IS_EQUAL_TO,
|
||||
'user:lastip_value' => '0.0.0.0',
|
||||
|
@ -581,8 +598,6 @@ final class users_test extends core_reportbuilder_testcase {
|
|||
$content = $this->get_custom_report_content($report->get('id'), 0, $filtervalues);
|
||||
|
||||
if ($expectmatch) {
|
||||
$this->assertNotEmpty($content);
|
||||
|
||||
// Merge report usernames into easily traversable array.
|
||||
$usernames = array_merge(...array_map('array_values', $content));
|
||||
$this->assertContains($user->username, $usernames);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue