From c459409c1b9c6f3bb3ebec3d15b59ac9d6899a82 Mon Sep 17 00:00:00 2001 From: David Monllao Date: Thu, 10 May 2018 15:54:56 +0200 Subject: [PATCH 1/2] MDL-61637 tool_dataprivacy: Context-based fetching Blocks API do not provide methods to retrieve a list of blocks without filtering by UI-availability. We need to get course blocks based on their course context. --- .../classes/output/data_registry_page.php | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/admin/tool/dataprivacy/classes/output/data_registry_page.php b/admin/tool/dataprivacy/classes/output/data_registry_page.php index b16bfacbea8..5263f8e2dc1 100644 --- a/admin/tool/dataprivacy/classes/output/data_registry_page.php +++ b/admin/tool/dataprivacy/classes/output/data_registry_page.php @@ -312,29 +312,29 @@ class data_registry_page implements renderable, templatable { $branches = []; - $blockinstances = \core_block_external::get_course_blocks($coursecontext->instanceid); - if (empty($blockinstances['blocks'])) { - return $branches; - } + $children = $coursecontext->get_child_contexts(); + foreach ($children as $childcontext) { + + if ($childcontext->contextlevel !== CONTEXT_BLOCK) { + continue; + } - foreach ($blockinstances['blocks'] as $bi) { if (function_exists('block_instance_by_id')) { - $blockinstance = block_instance_by_id($bi['instanceid']); + $blockinstance = block_instance_by_id($childcontext->instanceid); } else { // TODO To be removed when MDL-61621 gets integrated. - $blockinstance = $DB->get_record('block_instances', ['id' => $bi['instanceid']]); + $blockinstance = $DB->get_record('block_instances', ['id' => $childcontext->instanceid]); $blockinstance = block_instance($blockinstance->blockname, $blockinstance); } - $blockcontext = \context_block::instance($bi['instanceid']); - $displayname = shorten_text(format_string($blockinstance->get_title(), true, ['context' => $blockcontext->id])); + $displayname = shorten_text(format_string($blockinstance->get_title(), true, ['context' => $childcontext->id])); $branches[] = self::complete([ 'text' => $displayname, - 'contextid' => $blockcontext->id, + 'contextid' => $childcontext->id, ]); + } return $branches; - } /** From 868fc2aba12264f1a2195d17b8a80a162efdca93 Mon Sep 17 00:00:00 2001 From: David Monllao Date: Thu, 10 May 2018 15:55:39 +0200 Subject: [PATCH 2/2] MDL-61637 tool_dataprivacy: Point to new blocks API function --- .../dataprivacy/classes/output/data_registry_page.php | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/admin/tool/dataprivacy/classes/output/data_registry_page.php b/admin/tool/dataprivacy/classes/output/data_registry_page.php index 5263f8e2dc1..62f51fb0f72 100644 --- a/admin/tool/dataprivacy/classes/output/data_registry_page.php +++ b/admin/tool/dataprivacy/classes/output/data_registry_page.php @@ -319,14 +319,8 @@ class data_registry_page implements renderable, templatable { continue; } - if (function_exists('block_instance_by_id')) { - $blockinstance = block_instance_by_id($childcontext->instanceid); - } else { - // TODO To be removed when MDL-61621 gets integrated. - $blockinstance = $DB->get_record('block_instances', ['id' => $childcontext->instanceid]); - $blockinstance = block_instance($blockinstance->blockname, $blockinstance); - } - $displayname = shorten_text(format_string($blockinstance->get_title(), true, ['context' => $childcontext->id])); + $blockinstance = block_instance_by_id($childcontext->instanceid); + $displayname = shorten_text(format_string($blockinstance->get_title(), true, ['context' => $childcontext])); $branches[] = self::complete([ 'text' => $displayname, 'contextid' => $childcontext->id,