diff --git a/blocks/rss_client/classes/privacy/provider.php b/blocks/rss_client/classes/privacy/provider.php index edc8a2bd3a9..c1ea54f90af 100644 --- a/blocks/rss_client/classes/privacy/provider.php +++ b/blocks/rss_client/classes/privacy/provider.php @@ -87,16 +87,21 @@ class provider implements \core_privacy\local\metadata\provider, \core_privacy\l * @param approved_contextlist $contextlist The approved contexts to export information for. */ public static function export_user_data(approved_contextlist $contextlist) { + $rssdata = []; $results = static::get_records($contextlist->get_user()->id); foreach ($results as $result) { - $data = (object) [ + $rssdata[] = (object) [ 'title' => $result->title, 'preferredtitle' => $result->preferredtitle, 'description' => $result->description, 'shared' => \core_privacy\local\request\transform::yesno($result->shared), 'url' => $result->url ]; - + } + if (!empty($rssdata)) { + $data = (object) [ + 'feeds' => $rssdata, + ]; \core_privacy\local\request\writer::with_context($contextlist->current())->export_data([ get_string('pluginname', 'block_rss_client')], $data); } diff --git a/blocks/rss_client/tests/privacy_test.php b/blocks/rss_client/tests/privacy_test.php index dfd37c13eed..901d1985cb2 100644 --- a/blocks/rss_client/tests/privacy_test.php +++ b/blocks/rss_client/tests/privacy_test.php @@ -63,6 +63,7 @@ class block_rss_client_testcase extends provider_testcase { $user = $this->getDataGenerator()->create_user(); $context = context_user::instance($user->id); + $this->add_rss_feed($user); $this->add_rss_feed($user); $writer = \core_privacy\local\request\writer::with_context($context); @@ -70,11 +71,13 @@ class block_rss_client_testcase extends provider_testcase { $this->export_context_data_for_user($user->id, $context, 'block_rss_client'); $data = $writer->get_data([get_string('pluginname', 'block_rss_client')]); - $this->assertEquals('BBC News - World', $data->title); - $this->assertEquals('World News', $data->preferredtitle); - $this->assertEquals('Description: BBC News - World', $data->description); - $this->assertEquals(get_string('no'), $data->shared); - $this->assertEquals('http://feeds.bbci.co.uk/news/world/rss.xml?edition=uk', $data->url); + $this->assertCount(2, $data->feeds); + $feed1 = reset($data->feeds); + $this->assertEquals('BBC News - World', $feed1->title); + $this->assertEquals('World News', $feed1->preferredtitle); + $this->assertEquals('Description: BBC News - World', $feed1->description); + $this->assertEquals(get_string('no'), $feed1->shared); + $this->assertEquals('http://feeds.bbci.co.uk/news/world/rss.xml?edition=uk', $feed1->url); } /**