original_string: public static function delete_group_members($members) {
          global $CFG, $DB;
          require_once("$CFG->dirroot/group/lib.php");
  
          $params = self::validate_parameters(self::delete_group_members_parameters(), array('members'=>$members));
  
          $transaction = $DB->start_delegated_transaction();
  
          foreach ($params['members'] as $member) {
              // validate params
              $groupid = $member['groupid'];
              $userid = $member['userid'];
  
              $group = groups_get_group($groupid, '*', MUST_EXIST);
              $user = $DB->get_record('user', array('id'=>$userid, 'deleted'=>0, 'mnethostid'=>$CFG->mnet_localhost_id), '*', MUST_EXIST);
  
              // now security checks
              $context = context_course::instance($group->courseid, IGNORE_MISSING);
              try {
                  self::validate_context($context);
              } catch (Exception $e) {
                  $exceptionparam = new stdClass();
                  $exceptionparam->message = $e->getMessage();
                  $exceptionparam->courseid = $group->courseid;
                  throw new moodle_exception('errorcoursecontextnotvalid' , 'webservice', '', $exceptionparam);
              }
              require_capability('moodle/course:managegroups', $context);
  
              if (!groups_remove_member_allowed($group, $user)) {
                  throw new moodle_exception('errorremovenotpermitted', 'group', '', fullname($user));
              }
              groups_remove_member($group, $user);
          }
  
          $transaction->allow_commit();
      }
code: public static function delete_group_members($members) {
          global $CFG, $DB;
          require_once("$CFG->dirroot/group/lib.php");
  
          $params = self::validate_parameters(self::delete_group_members_parameters(), array('members'=>$members));
  
          $transaction = $DB->start_delegated_transaction();
  
          foreach ($params['members'] as $member) {
              // validate params
              $groupid = $member['groupid'];
              $userid = $member['userid'];
  
              $group = groups_get_group($groupid, '*', MUST_EXIST);
              $user = $DB->get_record('user', array('id'=>$userid, 'deleted'=>0, 'mnethostid'=>$CFG->mnet_localhost_id), '*', MUST_EXIST);
  
              // now security checks
              $context = context_course::instance($group->courseid, IGNORE_MISSING);
              try {
                  self::validate_context($context);
              } catch (Exception $e) {
                  $exceptionparam = new stdClass();
                  $exceptionparam->message = $e->getMessage();
                  $exceptionparam->courseid = $group->courseid;
                  throw new moodle_exception('errorcoursecontextnotvalid' , 'webservice', '', $exceptionparam);
              }
              require_capability('moodle/course:managegroups', $context);
  
              if (!groups_remove_member_allowed($group, $user)) {
                  throw new moodle_exception('errorremovenotpermitted', 'group', '', fullname($user));
              }
              groups_remove_member($group, $user);
          }
  
          $transaction->allow_commit();
      }
code_tokens: public static function delete_group_members ( $ members ) { global $ CFG , $ DB ; require_once ( "$CFG->dirroot/group/lib.php" ) ; $ params = self :: validate_parameters ( self :: delete_group_members_parameters ( ) , array ( 'members' => $ members ) ) ; $ transaction = $ DB -> start_delegated_transaction ( ) ; foreach ( $ params [ 'members' ] as $ member ) { // validate params $ groupid = $ member [ 'groupid' ] ; $ userid = $ member [ 'userid' ] ; $ group = groups_get_group ( $ groupid , '*' , MUST_EXIST ) ; $ user = $ DB -> get_record ( 'user' , array ( 'id' => $ userid , 'deleted' => 0 , 'mnethostid' => $ CFG -> mnet_localhost_id ) , '*' , MUST_EXIST ) ; // now security checks $ context = context_course :: instance ( $ group -> courseid , IGNORE_MISSING ) ; try { self :: validate_context ( $ context ) ; } catch ( Exception $ e ) { $ exceptionparam = new stdClass ( ) ; $ exceptionparam -> message = $ e -> getMessage ( ) ; $ exceptionparam -> courseid = $ group -> courseid ; throw new moodle_exception ( 'errorcoursecontextnotvalid' , 'webservice' , '' , $ exceptionparam ) ; } require_capability ( 'moodle/course:managegroups' , $ context ) ; if ( ! groups_remove_member_allowed ( $ group , $ user ) ) { throw new moodle_exception ( 'errorremovenotpermitted' , 'group' , '' , fullname ( $ user ) ) ; } groups_remove_member ( $ group , $ user ) ; } $ transaction -> allow_commit ( ) ; }
docstring: Delete group members
  
  @param array $members of arrays with keys userid, groupid
  @since Moodle 2.2
docstring_tokens: Delete group members