Merge branch 'MDL-77018_401' of https://github.com/timhunt/moodle into MOODLE_401_STABLE

This commit is contained in:
Andrew Nicols 2023-02-09 10:51:48 +08:00
commit 58814af9f1
2 changed files with 11 additions and 6 deletions

View File

@ -6211,13 +6211,14 @@ class context_helper extends context {
}
/**
* 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);

View File

@ -51,11 +51,14 @@ class helper {
[$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);
@ -63,6 +66,7 @@ class helper {
$places = array_values($places);
foreach ($places as $place) {
unset($place->somethingunique);
\context_helper::preload_from_record($place);
}
return $places;