// The following SQL is tricky. It is explained on
// http://docs.moodle.org/en/Development:Filter_enable/disable_by_context
$sql = "SELECT active.filter, fc.name, fc.value
- FROM (SELECT f.filter
+ FROM (SELECT f.filter, MAX(f.sortorder) AS sortorder
FROM {filter_active} f
JOIN {context} ctx ON f.contextid = ctx.id
WHERE ctx.id IN ($contextids)
GROUP BY filter
HAVING MAX(f.active * " . $DB->sql_cast_2signed('ctx.depth') .
") > -MIN(f.active * " . $DB->sql_cast_2signed('ctx.depth') . ")
- ORDER BY MAX(f.sortorder)) active
- LEFT JOIN {filter_config} fc ON fc.filter = active.filter AND fc.contextid = $context->id";
+ ) active
+ LEFT JOIN {filter_config} fc ON fc.filter = active.filter AND fc.contextid = $context->id
+ ORDER BY active.sortorder";
$rs = $DB->get_recordset_sql($sql);
// Masssage the data into the specified format to return.
CASE WHEN fa.active IS NULL THEN " . TEXTFILTER_INHERIT . "
ELSE fa.active END AS localstate,
parent_states.inheritedstate
- FROM (SELECT f.filter,
+ FROM (SELECT f.filter, MAX(f.sortorder) AS sortorder,
CASE WHEN MAX(f.active * " . $DB->sql_cast_2signed('ctx.depth') .
") > -MIN(f.active * " . $DB->sql_cast_2signed('ctx.depth') . ") THEN " . TEXTFILTER_ON . "
ELSE " . TEXTFILTER_OFF . " END AS inheritedstate
WHERE ctx.id IN ($contextids)
GROUP BY f.filter
HAVING MIN(f.active) > " . TEXTFILTER_DISABLED . "
- ORDER BY MAX(f.sortorder)) parent_states
- LEFT JOIN {filter_active} fa ON fa.filter = parent_states.filter AND fa.contextid = $context->id";
+ ) parent_states
+ LEFT JOIN {filter_active} fa ON fa.filter = parent_states.filter AND fa.contextid = $context->id
+ ORDER BY parent_states.sortorder";
return $DB->get_records_sql($sql);
}