From 94eabe36df67fe79750774b87bf881805998f22e Mon Sep 17 00:00:00 2001 From: Jake Dallimore Date: Fri, 6 Dec 2019 10:34:58 +0800 Subject: [PATCH] MDL-67458 tool_cohortroles: remove role mapping for deleted roles Before syncing anything, clean up records pointing to deleted roles. --- admin/tool/cohortroles/classes/api.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/admin/tool/cohortroles/classes/api.php b/admin/tool/cohortroles/classes/api.php index e94710feb10..89f54aea73d 100644 --- a/admin/tool/cohortroles/classes/api.php +++ b/admin/tool/cohortroles/classes/api.php @@ -144,6 +144,10 @@ class api { $rolesadded = array(); $rolesremoved = array(); + // Remove any cohort role mappings for roles which have been deleted. + // The role assignments are not a consideration because these will have been removed when the role was. + $DB->delete_records_select('tool_cohortroles', "roleid NOT IN (SELECT id FROM {role})"); + // Get all cohort role assignments and group them by user and role. $all = cohort_role_assignment::get_records(array(), 'userid, roleid'); // We build an better structure to loop on.