From d4269920de0aec4c70ced0aec10bc920f1fbf211 Mon Sep 17 00:00:00 2001 From: Shamim Rezaie Date: Sat, 27 Oct 2018 01:34:48 +1100 Subject: [PATCH] MDL-63785 block_html : performance improvement --- blocks/html/classes/privacy/provider.php | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/blocks/html/classes/privacy/provider.php b/blocks/html/classes/privacy/provider.php index e7a080f5f21..aa32e78d8b4 100644 --- a/blocks/html/classes/privacy/provider.php +++ b/blocks/html/classes/privacy/provider.php @@ -98,22 +98,25 @@ class provider implements * @param userlist $userlist The userlist containing the list of users who have data in this context/plugin combination. */ public static function get_users_in_context(userlist $userlist) { + // This block doesn't know who information is stored against unless it + // is at the user context. $context = $userlist->get_context(); - if (!is_a($context, \context_block::class)) { + if (!$context instanceof \context_block) { return; } - $params = [ - 'contextid' => $context->id, - 'contextuser' => CONTEXT_USER, - ]; - $sql = "SELECT bpc.instanceid AS userid - FROM {context} c - JOIN {block_instances} bi ON bi.id = c.instanceid AND bi.blockname = 'html' - JOIN {context} bpc ON bpc.id = bi.parentcontextid AND bpc.contextlevel = :contextuser - WHERE c.id = :contextid"; + FROM {block_instances} bi + JOIN {context} bpc ON bpc.id = bi.parentcontextid + WHERE bi.blockname = 'html' + AND bpc.contextlevel = :contextuser + AND bi.id = :blockinstanceid"; + + $params = [ + 'contextuser' => CONTEXT_USER, + 'blockinstanceid' => $context->instanceid + ]; $userlist->add_from_sql('userid', $sql, $params); }