From: tjhunt Date: Wed, 29 Apr 2009 03:12:31 +0000 (+0000) Subject: filters: MDL-19000 don't do ORDER BY in subqueries (thanks Eloy) X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=a8320eeae9bd94be0941abae809d2a9986ff9f50;p=moodle.git filters: MDL-19000 don't do ORDER BY in subqueries (thanks Eloy) Problem introduced by MDL-7336. --- diff --git a/lib/filterlib.php b/lib/filterlib.php index 6639534eca..b9fbfec95b 100644 --- a/lib/filterlib.php +++ b/lib/filterlib.php @@ -664,15 +664,16 @@ function filter_get_active_in_context($context) { // 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. @@ -718,7 +719,7 @@ function filter_get_available_in_context($context) { 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 @@ -727,8 +728,9 @@ function filter_get_available_in_context($context) { 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); }