From 3db2ddbd53626b712b74ece36702dc64eb35cf33 Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Sun, 18 Jul 2010 08:21:21 +0000 Subject: [PATCH] MDL-23361 fixed sloppy upgrade logic, sorry --- lib/db/upgrade.php | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/db/upgrade.php b/lib/db/upgrade.php index 5d0b996485f..8cf0881671f 100644 --- a/lib/db/upgrade.php +++ b/lib/db/upgrade.php @@ -3040,19 +3040,18 @@ WHERE gradeitemid IS NOT NULL AND grademax IS NOT NULL"); } // add roles without archetypes, it may contain weird things, but we can not fix them + list($narsql, $params) = $DB->get_in_or_equal(array_keys($defaults), SQL_PARAMS_NAMED, 'ar000', false); $sql = "SELECT DISTINCT ra.roleid, con.contextlevel FROM {role_assignments} ra - JOIN {context} con ON ra.contextid = con.id"; - $existingrolecontextlevels = $DB->get_recordset_sql($sql); + JOIN {context} con ON ra.contextid = con.id + JOIN {role} r ON r.id = ra.roleid + WHERE r.archetype $narsql"; + $existingrolecontextlevels = $DB->get_recordset_sql($sql, $params); foreach ($existingrolecontextlevels as $rcl) { - if (isset($roleids[$rcl->roleid])) { - continue; - } if (!isset($rolecontextlevels[$rcl->roleid])) { - $rolecontextlevels[$rcl->roleid] = array($rcl->contextlevel); - } else if (!in_array($rcl->contextlevel, $rolecontextlevels[$rcl->roleid])) { - $rolecontextlevels[$rcl->roleid][] = $rcl->contextlevel; + $rolecontextlevels[$rcl->roleid] = array(); } + $rolecontextlevels[$rcl->roleid][] = $rcl->contextlevel; } $existingrolecontextlevels->close();