Skip to content

Commit

Permalink
Merge branch 'MDL-78313-blocks-performance-MOODLE_402_STABLE' of http…
Browse files Browse the repository at this point in the history
  • Loading branch information
junpataleta committed Jun 14, 2023
2 parents 10d4819 + 2f6ef17 commit ace64f6
Showing 1 changed file with 19 additions and 19 deletions.
38 changes: 19 additions & 19 deletions admin/classes/table/block_management_table.php
Expand Up @@ -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<string,int> A list of course counts */
protected array $courseblocks;

public function __construct() {
global $DB;
parent::__construct();
$this->undeletableblocktypes = \block_manager::get_undeletable_block_types();

$sql = <<<EOF
SELECT
b.name,
b.id,
b.name,
COUNT(DISTINCT binst.id) as totalcount,
COUNT(DISTINCT bcinst.id) as courseviewcount
FROM {block} b
LEFT JOIN {block_instances} binst ON binst.blockname = b.name
LEFT JOIN {block_instances} bcinst ON
bcinst.blockname = b.name AND
bcinst.pagetypepattern = 'course-view-*'
GROUP BY b.id, b.name, b.visible, binst.blockname, bcinst.blockname
ORDER BY b.name ASC
EOF;

$sql = 'SELECT b.name,
b.id,
COUNT(DISTINCT binst.id) as totalcount
FROM {block} b
LEFT JOIN {block_instances} binst ON binst.blockname = b.name
GROUP BY b.id,
b.name
ORDER BY b.name ASC';
$this->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 {
Expand Down Expand Up @@ -102,11 +103,10 @@ protected function get_columns_with_help(): array {
*/
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,
);
Expand Down

0 comments on commit ace64f6

Please sign in to comment.