Skip to content

Commit

Permalink
Merge branch 'MDL-77018_400' of https://github.com/timhunt/moodle int…
Browse files Browse the repository at this point in the history
…o MOODLE_400_STABLE
  • Loading branch information
andrewnicols committed Feb 9, 2023
2 parents 4efc9ef + a493821 commit bac3842
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 6 deletions.
5 changes: 3 additions & 2 deletions lib/accesslib.php
Expand Up @@ -6140,13 +6140,14 @@ public static function get_preload_record_columns_sql($tablealias) {
}

/**
* Preloads context information from db record and strips the cached info.
* Preloads context cache with information from db record and strips the cached info.
*
* The db request has to contain all columns from context_helper::get_preload_record_columns().
*
* @static
* @param stdClass $rec
* @return void (modifies $rec)
* @return void This is intentional. See MDL-37115. You will need to get the context
* in the normal way, but it is now cached, so that will be fast.
*/
public static function preload_from_record(stdClass $rec) {
context::preload_from_record($rec);
Expand Down
12 changes: 8 additions & 4 deletions question/bank/statistics/classes/helper.php
Expand Up @@ -51,18 +51,22 @@ private static function get_all_places_where_questions_were_attempted(array $que
[$questionidcondition, $params] = $DB->get_in_or_equal($questionids);
// The MIN(qu.id) is just to ensure that the rows have a unique key.
$places = $DB->get_records_sql("
SELECT MIN(qu.id) AS somethingunique, qu.component, qu.contextid
SELECT MIN(qu.id) AS somethingunique, qu.component, qu.contextid, " .
\context_helper::get_preload_record_columns_sql('ctx') . "
FROM {question_usages} qu
JOIN {question_attempts} qatt ON qatt.questionusageid = qu.id
WHERE qatt.questionid $questionidcondition
GROUP BY qu.component, qu.contextid
JOIN {question_attempts} qa ON qa.questionusageid = qu.id
JOIN {context} ctx ON ctx.id = qu.contextid
WHERE qa.questionid $questionidcondition
GROUP BY qu.component, qu.contextid, " .
implode(', ', array_keys(\context_helper::get_preload_record_columns('ctx'))) . "
ORDER BY qu.contextid ASC
", $params);

// Strip out the unwanted ids.
$places = array_values($places);
foreach ($places as $place) {
unset($place->somethingunique);
\context_helper::preload_from_record($place);
}

return $places;
Expand Down

0 comments on commit bac3842

Please sign in to comment.