MDL-61815 core_privacy: Fix for metadata types and new method.

Minor fix for subsystem_link and plugintype_link.
Addition of get_null_provider_reason in the manager class.
This commit is contained in:
Adrian Greeve
2018-04-03 12:05:18 +08:00
parent 39fab18e27
commit 0f6fb93653
4 changed files with 28 additions and 2 deletions
@@ -78,7 +78,7 @@ class plugintype_link implements type {
* @return array
*/
public function get_privacy_fields() : array {
return null;
return [];
}
/**
@@ -78,7 +78,7 @@ class subsystem_link implements type {
* @return array
*/
public function get_privacy_fields() : array {
return null;
return [];
}
/**
+14
View File
@@ -131,6 +131,20 @@ class manager {
return false;
}
/**
* Retrieve the reason for implementing the null provider interface.
*
* @param string $component Frankenstyle component name.
* @return string The key to retrieve the language string for the null provider reason.
*/
public function get_null_provider_reason(string $component) : string {
if ($this->component_implements($component, \core_privacy\local\metadata\null_provider::class)) {
return $this->get_provider_classname($component)::get_reason();
} else {
throw new \coding_exception('Call to undefined method', 'Please only call this method on a null provider.');
}
}
/**
* Get the privacy metadata for all components.
*
+12
View File
@@ -201,4 +201,16 @@ class privacy_manager_testcase extends advanced_testcase {
$metadata = $manager->get_metadata_for_components();
$this->assertNotEmpty($metadata);
}
/**
* Test that the reason for the null provider is returned.
*/
public function test_get_null_provider_reason() {
$manager = new \core_privacy\manager();
// Null providers return the reason string.
$this->assertEquals('testcomponent2 null provider reason', $manager->get_null_provider_reason('mod_testcomponent2'));
// Throw an exception if the wrong type of provider is given.
$this->expectException(\coding_exception::class);
$string = $manager->get_null_provider_reason('mod_testcomponent');
}
}