2020
2121/**
2222 * Manages cache operations for quiz overrides.
23+ *
2324 * Please do not use this class directly. Instead, use methods from \mod_quiz\local\override_manager.
2425 *
2526 * @package mod_quiz
@@ -94,9 +95,9 @@ public static function purge_for_groups(int $quizid, array $groupids): void {
9495 $ sql = "SELECT DISTINCT userid
9596 FROM {groups_members}
9697 WHERE groupid {$ insql }" ;
97- $ userids = $ DB ->get_records_sql ($ sql , $ params );
98+ $ userids = $ DB ->get_fieldset_sql ($ sql , $ params );
9899 if (!empty ($ userids )) {
99- self ::purge_for_users ($ quizid , array_keys ( $ userids) );
100+ self ::purge_for_users ($ quizid , $ userids );
100101 }
101102 }
102103
@@ -109,9 +110,16 @@ public static function purge_for_groups(int $quizid, array $groupids): void {
109110 public static function purge_for_group_members (int $ groupid , array $ userids ): void {
110111 global $ DB ;
111112
112- $ records = $ DB ->get_records ('quiz_overrides ' , ['groupid ' => $ groupid ], '' , 'id,quiz ' );
113- foreach (array_unique (array_column ($ records , 'quiz ' )) as $ quizid ) {
114- self ::purge_for_users ($ quizid , $ userids );
113+ if (empty ($ userids )) {
114+ return ;
115+ }
116+
117+ $ sql = "SELECT DISTINCT quiz
118+ FROM {quiz_overrides}
119+ WHERE groupid = :groupid " ;
120+ $ quizids = $ DB ->get_fieldset_sql ($ sql , ['groupid ' => $ groupid ]);
121+ foreach ($ quizids as $ quizid ) {
122+ self ::purge_for_users ((int ) $ quizid , $ userids );
115123 }
116124 }
117125
@@ -135,11 +143,11 @@ public static function purge_for_overrides(array $overrides): void {
135143 }
136144
137145 foreach ($ useridsbyquiz as $ quizid => $ userids ) {
138- self ::purge_for_users ($ quizid , array_values ( array_unique ($ userids) ));
146+ self ::purge_for_users ($ quizid , array_unique ($ userids ));
139147 }
140148
141149 foreach ($ groupidsbyquiz as $ quizid => $ groupids ) {
142- self ::purge_for_groups ($ quizid , array_values ( array_unique ($ groupids) ));
150+ self ::purge_for_groups ($ quizid , array_unique ($ groupids ));
143151 }
144152 }
145153
0 commit comments