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.
This commit is contained in:
Paul Nicholls
2015-07-13 16:12:58 +12:00
parent 4c7c7632dd
commit 18bc6d2177
+7 -3
View File
@@ -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);
}