original_string: public function unassign_role_from_user($userid, $roleid) {
          global $DB;
          // Admins may unassign any role, others only those they could assign.
          if (!is_siteadmin() and !array_key_exists($roleid, $this->get_assignable_roles())) {
              if (defined('AJAX_SCRIPT')) {
                  throw new moodle_exception('invalidrole');
              }
              return false;
          }
          $user = $DB->get_record('user', array('id'=>$userid), '*', MUST_EXIST);
          $ras = $DB->get_records('role_assignments', array('contextid'=>$this->context->id, 'userid'=>$user->id, 'roleid'=>$roleid));
          foreach ($ras as $ra) {
              if ($ra->component) {
                  if (strpos($ra->component, 'enrol_') !== 0) {
                      continue;
                  }
                  if (!$plugin = enrol_get_plugin(substr($ra->component, 6))) {
                      continue;
                  }
                  if ($plugin->roles_protected()) {
                      continue;
                  }
              }
              role_unassign($ra->roleid, $ra->userid, $ra->contextid, $ra->component, $ra->itemid);
          }
          return true;
      }
code: public function unassign_role_from_user($userid, $roleid) {
          global $DB;
          // Admins may unassign any role, others only those they could assign.
          if (!is_siteadmin() and !array_key_exists($roleid, $this->get_assignable_roles())) {
              if (defined('AJAX_SCRIPT')) {
                  throw new moodle_exception('invalidrole');
              }
              return false;
          }
          $user = $DB->get_record('user', array('id'=>$userid), '*', MUST_EXIST);
          $ras = $DB->get_records('role_assignments', array('contextid'=>$this->context->id, 'userid'=>$user->id, 'roleid'=>$roleid));
          foreach ($ras as $ra) {
              if ($ra->component) {
                  if (strpos($ra->component, 'enrol_') !== 0) {
                      continue;
                  }
                  if (!$plugin = enrol_get_plugin(substr($ra->component, 6))) {
                      continue;
                  }
                  if ($plugin->roles_protected()) {
                      continue;
                  }
              }
              role_unassign($ra->roleid, $ra->userid, $ra->contextid, $ra->component, $ra->itemid);
          }
          return true;
      }
code_tokens: public function unassign_role_from_user ( $ userid , $ roleid ) { global $ DB ; // Admins may unassign any role, others only those they could assign. if ( ! is_siteadmin ( ) and ! array_key_exists ( $ roleid , $ this -> get_assignable_roles ( ) ) ) { if ( defined ( 'AJAX_SCRIPT' ) ) { throw new moodle_exception ( 'invalidrole' ) ; } return false ; } $ user = $ DB -> get_record ( 'user' , array ( 'id' => $ userid ) , '*' , MUST_EXIST ) ; $ ras = $ DB -> get_records ( 'role_assignments' , array ( 'contextid' => $ this -> context -> id , 'userid' => $ user -> id , 'roleid' => $ roleid ) ) ; foreach ( $ ras as $ ra ) { if ( $ ra -> component ) { if ( strpos ( $ ra -> component , 'enrol_' ) !== 0 ) { continue ; } if ( ! $ plugin = enrol_get_plugin ( substr ( $ ra -> component , 6 ) ) ) { continue ; } if ( $ plugin -> roles_protected ( ) ) { continue ; } } role_unassign ( $ ra -> roleid , $ ra -> userid , $ ra -> contextid , $ ra -> component , $ ra -> itemid ) ; } return true ; }
docstring: Removes an assigned role from a user.
  
  @global moodle_database $DB
  @param int $userid
  @param int $roleid
  @return bool
docstring_tokens: Removes an assigned role from a user .