MDL-77700 blog: add comment author data to custom report source.
The ability to report on blog comments was added in 27ebde57, however
it lacked the option to report on the user who added the comment(s).
AMOS BEGIN
CPY [author,core_notes],[author,core_blog]
AMOS END
This commit is contained in:
@@ -76,10 +76,11 @@ class blogs extends datasource {
|
||||
->add_joins($blogentity->get_tag_joins()));
|
||||
|
||||
// Join the user entity to represent the blog author.
|
||||
$userentity = new user();
|
||||
$useralias = $userentity->get_table_alias('user');
|
||||
$this->add_entity($userentity
|
||||
->add_join("LEFT JOIN {user} {$useralias} ON {$useralias}.id = {$postalias}.userid"));
|
||||
$authorentity = (new user())
|
||||
->set_entity_title(new lang_string('author', 'core_blog'));
|
||||
$authoralias = $authorentity->get_table_alias('user');
|
||||
$this->add_entity($authorentity
|
||||
->add_join("LEFT JOIN {user} {$authoralias} ON {$authoralias}.id = {$postalias}.userid"));
|
||||
|
||||
// Join the course entity for course blogs.
|
||||
$courseentity = new course();
|
||||
@@ -93,6 +94,18 @@ class blogs extends datasource {
|
||||
$this->add_entity($commententity
|
||||
->add_join("LEFT JOIN {comments} bcmt ON bcmt.component = 'blog' AND bcmt.itemid = {$postalias}.id"));
|
||||
|
||||
// Join the user entity to represent the comment author. Override table aliases to avoid clash with first instance.
|
||||
$commenterentity = (new user())
|
||||
->set_entity_name('commenter')
|
||||
->set_entity_title(new lang_string('commenter', 'core_comment'))
|
||||
->set_table_aliases([
|
||||
'user' => 'cu',
|
||||
'context' => 'cuctx',
|
||||
]);
|
||||
$this->add_entity($commenterentity
|
||||
->add_joins($commententity->get_joins())
|
||||
->add_join("LEFT JOIN {user} cu ON cu.id = bcmt.userid"));
|
||||
|
||||
// Add report elements from each of the entities we added to the report.
|
||||
$this->add_all_from_entity($blogentity->get_entity_name());
|
||||
|
||||
@@ -105,13 +118,15 @@ class blogs extends datasource {
|
||||
$this->add_filter($tagentity->get_filter('name'));
|
||||
$this->add_condition($tagentity->get_condition('name'));
|
||||
|
||||
$this->add_all_from_entity($userentity->get_entity_name());
|
||||
$this->add_all_from_entity($authorentity->get_entity_name());
|
||||
$this->add_all_from_entity($courseentity->get_entity_name());
|
||||
|
||||
// Add specific comment entity elements.
|
||||
$this->add_columns_from_entity($commententity->get_entity_name(), ['content', 'timecreated']);
|
||||
$this->add_filter($commententity->get_filter('timecreated'));
|
||||
$this->add_condition($commententity->get_filter('timecreated'));
|
||||
|
||||
$this->add_all_from_entity($commenterentity->get_entity_name());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -143,6 +143,9 @@ class blogs_test extends core_reportbuilder_testcase {
|
||||
// Comment entity.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'comment:content']);
|
||||
|
||||
// Commenter entity.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'commenter:fullname']);
|
||||
|
||||
$content = $this->get_custom_report_content($report->get('id'));
|
||||
$this->assertCount(1, $content);
|
||||
|
||||
@@ -154,6 +157,7 @@ class blogs_test extends core_reportbuilder_testcase {
|
||||
$tags,
|
||||
$filesize,
|
||||
$comment,
|
||||
$commenter,
|
||||
] = array_values($content[0]);
|
||||
|
||||
$this->assertStringContainsString('Horses', $body);
|
||||
@@ -163,6 +167,7 @@ class blogs_test extends core_reportbuilder_testcase {
|
||||
$this->assertEquals('horse', $tags);
|
||||
$this->assertEquals("5\xc2\xa0bytes", $filesize);
|
||||
$this->assertEquals(format_text('Cool'), $comment);
|
||||
$this->assertEquals(fullname($user), $commenter);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -31,6 +31,7 @@ $string['associatewithmodule'] = 'Blog about {$a->modtype}: {$a->modname}';
|
||||
$string['association'] = 'Association';
|
||||
$string['associations'] = 'Associations';
|
||||
$string['associationunviewable'] = 'This entry cannot be viewed by others until a course is associated with it or the \'Publish to\' field is changed';
|
||||
$string['author'] = 'Author';
|
||||
$string['autotags'] = 'Add these tags';
|
||||
$string['autotags_help'] = 'Enter one or more local tags (separated by commas) that you want to automatically add to each blog entry copied from the external blog into your local blog.';
|
||||
$string['backupblogshelp'] = 'If enabled then blogs will be included in SITE automated backups';
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
*/
|
||||
|
||||
$string['comment'] = 'Comment';
|
||||
$string['commenter'] = 'Commenter';
|
||||
$string['comments'] = 'Comments';
|
||||
$string['commentsubcontext'] = 'Comments';
|
||||
$string['privacy:metadata:comment'] = 'Stores comments of users.';
|
||||
|
||||
Reference in New Issue
Block a user