@@ -143,25 +143,25 @@ public static function get_contexts_for_userid(int $userid) : \core_privacy\loca
143
143
// Fetch all forum discussions, and forum posts.
144
144
$ sql = "SELECT c.id
145
145
FROM {context} c
146
- INNER JOIN {course_modules} cm ON cm.id = c.instanceid AND c.contextlevel = :contextlevel
147
- INNER JOIN {modules} m ON m.id = cm.module AND m.name = :modname
148
- INNER JOIN {forum} f ON f.id = cm.instance
146
+ JOIN {course_modules} cm ON cm.id = c.instanceid AND c.contextlevel = :contextlevel
147
+ JOIN {modules} m ON m.id = cm.module AND m.name = :modname
148
+ JOIN {forum} f ON f.id = cm.instance
149
149
LEFT JOIN {forum_discussions} d ON d.forum = f.id
150
150
LEFT JOIN {forum_posts} p ON p.discussion = d.id
151
- LEFT JOIN {forum_digests} dig ON dig.forum = f.id
152
- LEFT JOIN {forum_subscriptions} sub ON sub.forum = f.id
153
- LEFT JOIN {forum_track_prefs} pref ON pref.forumid = f.id
154
- LEFT JOIN {forum_read} hasread ON hasread.forumid = f.id
155
- LEFT JOIN {forum_discussion_subs} dsub ON dsub.forum = f.id
151
+ LEFT JOIN {forum_digests} dig ON dig.forum = f.id AND dig.userid = :digestuserid
152
+ LEFT JOIN {forum_subscriptions} sub ON sub.forum = f.id AND sub.userid = :subuserid
153
+ LEFT JOIN {forum_track_prefs} pref ON pref.forumid = f.id AND pref.userid = :prefuserid
154
+ LEFT JOIN {forum_read} hasread ON hasread.forumid = f.id AND hasread.userid = :hasreaduserid
155
+ LEFT JOIN {forum_discussion_subs} dsub ON dsub.forum = f.id AND dsub.userid = :dsubuserid
156
156
{$ ratingsql ->join }
157
157
WHERE (
158
158
p.userid = :postuserid OR
159
159
d.userid = :discussionuserid OR
160
- dig.userid = :digestuserid OR
161
- sub.userid = :subuserid OR
162
- pref.userid = :prefuserid OR
163
- hasread.userid = :hasreaduserid OR
164
- dsub.userid = :dsubuserid OR
160
+ dig.id IS NOT NULL OR
161
+ sub.id IS NOT NULL OR
162
+ pref.id IS NOT NULL OR
163
+ hasread.id IS NOT NULL OR
164
+ dsub.id IS NOT NULL OR
165
165
{$ ratingsql ->userwhere }
166
166
)
167
167
" ;
@@ -269,8 +269,8 @@ public static function export_user_data(approved_contextlist $contextlist) {
269
269
sub.userid AS subscribed,
270
270
pref.userid AS tracked
271
271
FROM {context} c
272
- INNER JOIN {course_modules} cm ON cm.id = c.instanceid
273
- INNER JOIN {forum} f ON f.id = cm.instance
272
+ JOIN {course_modules} cm ON cm.id = c.instanceid
273
+ JOIN {forum} f ON f.id = cm.instance
274
274
LEFT JOIN {forum_digests} dig ON dig.forum = f.id AND dig.userid = :digestuserid
275
275
LEFT JOIN {forum_subscriptions} sub ON sub.forum = f.id AND sub.userid = :subuserid
276
276
LEFT JOIN {forum_track_prefs} pref ON pref.forumid = f.id AND pref.userid = :prefuserid
@@ -334,15 +334,15 @@ protected static function export_discussion_data(int $userid, array $mappings) {
334
334
g.name as groupname,
335
335
dsub.preference
336
336
FROM {forum} f
337
- INNER JOIN {forum_discussions} d ON d.forum = f.id
337
+ JOIN {forum_discussions} d ON d.forum = f.id
338
338
LEFT JOIN {groups} g ON g.id = d.groupid
339
- LEFT JOIN {forum_discussion_subs} dsub ON dsub.discussion = d.id
339
+ LEFT JOIN {forum_discussion_subs} dsub ON dsub.discussion = d.id AND dsub.userid = :dsubuserid
340
340
LEFT JOIN {forum_posts} p ON p.discussion = d.id
341
341
WHERE f.id $ {foruminsql}
342
342
AND (
343
343
d.userid = :discussionuserid OR
344
344
p.userid = :postuserid OR
345
- dsub.userid = :dsubuserid
345
+ dsub.id IS NOT NULL
346
346
)
347
347
" ;
348
348
@@ -405,14 +405,14 @@ protected static function export_all_posts(int $userid, array $mappings) {
405
405
d.name,
406
406
d.groupid
407
407
FROM {forum} f
408
- INNER JOIN {forum_discussions} d ON d.forum = f.id
409
- INNER JOIN {forum_posts} p ON p.discussion = d.id
410
- LEFT JOIN {forum_read} fr ON fr.postid = p.id
408
+ JOIN {forum_discussions} d ON d.forum = f.id
409
+ JOIN {forum_posts} p ON p.discussion = d.id
410
+ LEFT JOIN {forum_read} fr ON fr.postid = p.id AND fr.userid = :readuserid
411
411
{$ ratingsql ->join }
412
412
WHERE f.id $ {foruminsql} AND
413
413
(
414
414
p.userid = :postuserid OR
415
- fr.userid = :readuserid OR
415
+ fr.id IS NOT NULL OR
416
416
{$ ratingsql ->userwhere }
417
417
)
418
418
GROUP BY f.id, p.discussion, d.name, d.groupid
@@ -454,7 +454,7 @@ protected static function export_all_posts_in_discussion(int $userid, \context $
454
454
fr.id AS readflag,
455
455
rat.id AS hasratings
456
456
FROM {forum_discussions} d
457
- INNER JOIN {forum_posts} p ON p.discussion = d.id
457
+ JOIN {forum_posts} p ON p.discussion = d.id
458
458
LEFT JOIN {forum_read} fr ON fr.postid = p.id AND fr.userid = :readuserid
459
459
{$ ratingsql ->join } AND {$ ratingsql ->userwhere }
460
460
WHERE d.id = :discussionid
0 commit comments