original_string: public static function role_assignment_changed($roleid, $context) {
          global $CFG, $DB;
  
          if ($context->contextlevel > CONTEXT_COURSE) {
              // No changes to course contacts if role was assigned on the module/block level.
              return;
          }
  
          // Trigger a purge for all caches listening for changes to category enrolment.
          cache_helper::purge_by_event('changesincategoryenrolment');
  
          if (!$CFG->coursecontact || !in_array($roleid, explode(',', $CFG->coursecontact))) {
              // The role is not one of course contact roles.
              return;
          }
  
          // Remove from cache course contacts of all affected courses.
          $cache = cache::make('core', 'coursecontacts');
          if ($context->contextlevel == CONTEXT_COURSE) {
              $cache->delete($context->instanceid);
          } else if ($context->contextlevel == CONTEXT_SYSTEM) {
              $cache->purge();
          } else {
              $sql = "SELECT ctx.instanceid
                      FROM {context} ctx
                      WHERE ctx.path LIKE ? AND ctx.contextlevel = ?";
              $params = array($context->path . '/%', CONTEXT_COURSE);
              if ($courses = $DB->get_fieldset_sql($sql, $params)) {
                  $cache->delete_many($courses);
              }
          }
      }
code: public static function role_assignment_changed($roleid, $context) {
          global $CFG, $DB;
  
          if ($context->contextlevel > CONTEXT_COURSE) {
              // No changes to course contacts if role was assigned on the module/block level.
              return;
          }
  
          // Trigger a purge for all caches listening for changes to category enrolment.
          cache_helper::purge_by_event('changesincategoryenrolment');
  
          if (!$CFG->coursecontact || !in_array($roleid, explode(',', $CFG->coursecontact))) {
              // The role is not one of course contact roles.
              return;
          }
  
          // Remove from cache course contacts of all affected courses.
          $cache = cache::make('core', 'coursecontacts');
          if ($context->contextlevel == CONTEXT_COURSE) {
              $cache->delete($context->instanceid);
          } else if ($context->contextlevel == CONTEXT_SYSTEM) {
              $cache->purge();
          } else {
              $sql = "SELECT ctx.instanceid
                      FROM {context} ctx
                      WHERE ctx.path LIKE ? AND ctx.contextlevel = ?";
              $params = array($context->path . '/%', CONTEXT_COURSE);
              if ($courses = $DB->get_fieldset_sql($sql, $params)) {
                  $cache->delete_many($courses);
              }
          }
      }
code_tokens: public static function role_assignment_changed ( $ roleid , $ context ) { global $ CFG , $ DB ; if ( $ context -> contextlevel > CONTEXT_COURSE ) { // No changes to course contacts if role was assigned on the module/block level. return ; } // Trigger a purge for all caches listening for changes to category enrolment. cache_helper :: purge_by_event ( 'changesincategoryenrolment' ) ; if ( ! $ CFG -> coursecontact || ! in_array ( $ roleid , explode ( ',' , $ CFG -> coursecontact ) ) ) { // The role is not one of course contact roles. return ; } // Remove from cache course contacts of all affected courses. $ cache = cache :: make ( 'core' , 'coursecontacts' ) ; if ( $ context -> contextlevel == CONTEXT_COURSE ) { $ cache -> delete ( $ context -> instanceid ) ; } else if ( $ context -> contextlevel == CONTEXT_SYSTEM ) { $ cache -> purge ( ) ; } else { $ sql = "SELECT ctx.instanceid
                      FROM {context} ctx
                      WHERE ctx.path LIKE ? AND ctx.contextlevel = ?" ; $ params = array ( $ context -> path . '/%' , CONTEXT_COURSE ) ; if ( $ courses = $ DB -> get_fieldset_sql ( $ sql , $ params ) ) { $ cache -> delete_many ( $ courses ) ; } } }
docstring: Resets course contact caches when role assignments were changed
  
  @param int $roleid role id that was given or taken away
  @param context $context context where role assignment has been changed
docstring_tokens: Resets course contact caches when role assignments were changed