mirror of
https://github.com/moodle/moodle.git
synced 2025-04-13 20:42:22 +02:00
MDL-75810 reportbuilder: entity method for returning tag SQL joins.
This commit is contained in:
parent
697be4eaa3
commit
e8ae9680bc
@ -305,17 +305,6 @@ class blog extends base {
|
||||
* @return string[]
|
||||
*/
|
||||
public function get_tag_joins(): array {
|
||||
$postalias = $this->get_table_alias('post');
|
||||
$taginstancealias = $this->get_table_alias('tag_instance');
|
||||
$tagalias = $this->get_table_alias('tag');
|
||||
|
||||
return [
|
||||
"LEFT JOIN {tag_instance} {$taginstancealias}
|
||||
ON {$taginstancealias}.component = 'core'
|
||||
AND {$taginstancealias}.itemtype = 'post'
|
||||
AND {$taginstancealias}.itemid = {$postalias}.id",
|
||||
"LEFT JOIN {tag} {$tagalias}
|
||||
ON {$tagalias}.id = {$taginstancealias}.tagid",
|
||||
];
|
||||
return $this->get_tag_joins_for_entity('core', 'post', $this->get_table_alias('post') . '.id');
|
||||
}
|
||||
}
|
||||
|
@ -215,6 +215,30 @@ abstract class base {
|
||||
return array_values($this->joins);
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method for returning joins necessary for retrieving tags related to the current entity
|
||||
*
|
||||
* Both 'tag' and 'tag_instance' aliases must be returned by the entity {@see get_default_table_aliases} method
|
||||
*
|
||||
* @param string $component
|
||||
* @param string $itemtype
|
||||
* @param string $itemidfield
|
||||
* @return string[]
|
||||
*/
|
||||
final protected function get_tag_joins_for_entity(string $component, string $itemtype, string $itemidfield): array {
|
||||
$taginstancealias = $this->get_table_alias('tag_instance');
|
||||
$tagalias = $this->get_table_alias('tag');
|
||||
|
||||
return [
|
||||
"LEFT JOIN {tag_instance} {$taginstancealias}
|
||||
ON {$taginstancealias}.component = '{$component}'
|
||||
AND {$taginstancealias}.itemtype = '{$itemtype}'
|
||||
AND {$taginstancealias}.itemid = {$itemidfield}",
|
||||
"LEFT JOIN {tag} {$tagalias}
|
||||
ON {$tagalias}.id = {$taginstancealias}.tagid",
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a column to the entity
|
||||
*
|
||||
|
@ -206,18 +206,7 @@ class course extends base {
|
||||
* @return string[]
|
||||
*/
|
||||
public function get_tag_joins(): array {
|
||||
$course = $this->get_table_alias('course');
|
||||
$taginstance = $this->get_table_alias('tag_instance');
|
||||
$tag = $this->get_table_alias('tag');
|
||||
|
||||
return [
|
||||
"LEFT JOIN {tag_instance} {$taginstance}
|
||||
ON {$taginstance}.component = 'core'
|
||||
AND {$taginstance}.itemtype = 'course'
|
||||
AND {$taginstance}.itemid = {$course}.id",
|
||||
"LEFT JOIN {tag} {$tag}
|
||||
ON {$tag}.id = {$taginstance}.tagid",
|
||||
];
|
||||
return $this->get_tag_joins_for_entity('core', 'course', $this->get_table_alias('course') . '.id');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -144,18 +144,7 @@ class user extends base {
|
||||
* @return string[]
|
||||
*/
|
||||
public function get_tag_joins(): array {
|
||||
$user = $this->get_table_alias('user');
|
||||
$taginstance = $this->get_table_alias('tag_instance');
|
||||
$tag = $this->get_table_alias('tag');
|
||||
|
||||
return [
|
||||
"LEFT JOIN {tag_instance} {$taginstance}
|
||||
ON {$taginstance}.component = 'core'
|
||||
AND {$taginstance}.itemtype = 'user'
|
||||
AND {$taginstance}.itemid = {$user}.id",
|
||||
"LEFT JOIN {tag} {$tag}
|
||||
ON {$tag}.id = {$taginstance}.tagid",
|
||||
];
|
||||
return $this->get_tag_joins_for_entity('core', 'user', $this->get_table_alias('user') . '.id');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3,6 +3,7 @@ Information provided here is intended especially for developers.
|
||||
|
||||
=== 4.3 ===
|
||||
|
||||
* New `get_tag_joins_for_entity` helper in base entity class, for returning SQL joins necessary for retrieving tags
|
||||
* New `set_is_deprecated` method in base `local\report\[column|filter]` classes to deprecate report entity columns and filters
|
||||
* The following report entity columns have been deprecated, with replacements as follows:
|
||||
- `enrolment:method` => `enrol:name` (plus enrolment formatter `enrolment_name` method)
|
||||
|
Loading…
x
Reference in New Issue
Block a user