From 38be84b2cfd8a12e9f46bf8c55188dd9c731b880 Mon Sep 17 00:00:00 2001 From: Brendan Heywood Date: Tue, 30 May 2023 12:31:01 +1000 Subject: [PATCH] MDL-78313 admin: Improve performance of manage blocks page Co-authored-by: Andrew Nicols --- .../classes/table/block_management_table.php | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/admin/classes/table/block_management_table.php b/admin/classes/table/block_management_table.php index 1a4816ec5af..10ec625709b 100644 --- a/admin/classes/table/block_management_table.php +++ b/admin/classes/table/block_management_table.php @@ -35,28 +35,29 @@ class block_management_table extends \core_admin\table\plugin_management_table { /** @var stdClass[] A list of basic block data */ protected array $blockdata; + /** @var array A list of course counts */ + protected array $courseblocks; + public function __construct() { global $DB; parent::__construct(); $this->undeletableblocktypes = \block_manager::get_undeletable_block_types(); - $sql = <<blockdata = $DB->get_records_sql($sql); + + $sql = "SELECT blockname + FROM {block_instances} + WHERE pagetypepattern = 'course-view-*' + GROUP BY blockname"; + $this->courseblocks = $DB->get_records_sql($sql); } protected function get_plugintype(): string { @@ -102,11 +103,10 @@ class block_management_table extends \core_admin\table\plugin_management_table { */ protected function col_instances(stdClass $row): string { $blockdata = $this->blockdata[$row->plugininfo->name]; - if ($blockdata->courseviewcount > 0) { + if (array_key_exists($blockdata->name, $this->courseblocks)) { return html_writer::link( new moodle_url('/course/search.php', [ - 'blocklist' => $row->plugininfo->name, - 'sesskey' => sesskey(), + 'blocklist' => $blockdata->id, ]), $blockdata->totalcount, );