From 2d858fb001f2299ebb59ff3fb208b0a0893d22ab Mon Sep 17 00:00:00 2001 From: Paul Nicholls Date: Mon, 13 Jul 2015 15:00:16 +1200 Subject: [PATCH] MDL-43709 Forum: Reset forums not working with multiple forum types The SQL being generated from the selected forum types on the course reset form was using AND, resulting in never matching anything if more than one forum type was selected for resetting (as each forum can only have one type). This should use $DB->get_in_or_equal() to generate sensible SQL. --- mod/forum/lib.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mod/forum/lib.php b/mod/forum/lib.php index 0953d997e46..1ff1f88aa0d 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -6811,16 +6811,20 @@ function forum_reset_userdata($data) { $types = array(); } else if (!empty($data->reset_forum_types)){ $removeposts = true; - $typesql = ""; $types = array(); + $sqltypes = array(); $forum_types_all = forum_get_forum_types_all(); foreach ($data->reset_forum_types as $type) { if (!array_key_exists($type, $forum_types_all)) { continue; } - $typesql .= " AND f.type=?"; $types[] = $forum_types_all[$type]; - $params[] = $type; + $sqltypes[] = $type; + } + if (!empty($sqltypes)) { + list($typesql, $typeparams) = $DB->get_in_or_equal($sqltypes); + $typesql = " AND f.type " . $typesql; + $params = array_merge($params, $typeparams); } $typesstr = get_string('resetforums', 'forum').': '.implode(', ', $types); }