original_string: public static function create_contact_request(int $userid, int $requesteduserid) {
          global $CFG, $USER;
  
          // Check if messaging is enabled.
          if (empty($CFG->messaging)) {
              throw new moodle_exception('disabled', 'message');
          }
  
          // Validate context.
          $context = context_system::instance();
          self::validate_context($context);
  
          $params = ['userid' => $userid, 'requesteduserid' => $requesteduserid];
          $params = self::validate_parameters(self::create_contact_request_parameters(), $params);
  
          $capability = 'moodle/site:manageallmessaging';
          if (($USER->id != $params['userid']) && !has_capability($capability, $context)) {
              throw new required_capability_exception($context, $capability, 'nopermissions', '');
          }
  
          $result = [
              'warnings' => []
          ];
  
          if (!\core_message\api::can_create_contact($params['userid'], $params['requesteduserid'])) {
              $result['warnings'][] = [
                  'item' => 'user',
                  'itemid' => $params['requesteduserid'],
                  'warningcode' => 'cannotcreatecontactrequest',
                  'message' => 'You are unable to create a contact request for this user'
              ];
          } else {
              if ($requests = \core_message\api::get_contact_requests_between_users($params['userid'], $params['requesteduserid'])) {
                  // There should only ever be one but just in case there are multiple then we can return the first.
                  $result['request'] = array_shift($requests);
              } else {
                  $result['request'] = \core_message\api::create_contact_request($params['userid'], $params['requesteduserid']);
              }
          }
  
          return $result;
      }
code: public static function create_contact_request(int $userid, int $requesteduserid) {
          global $CFG, $USER;
  
          // Check if messaging is enabled.
          if (empty($CFG->messaging)) {
              throw new moodle_exception('disabled', 'message');
          }
  
          // Validate context.
          $context = context_system::instance();
          self::validate_context($context);
  
          $params = ['userid' => $userid, 'requesteduserid' => $requesteduserid];
          $params = self::validate_parameters(self::create_contact_request_parameters(), $params);
  
          $capability = 'moodle/site:manageallmessaging';
          if (($USER->id != $params['userid']) && !has_capability($capability, $context)) {
              throw new required_capability_exception($context, $capability, 'nopermissions', '');
          }
  
          $result = [
              'warnings' => []
          ];
  
          if (!\core_message\api::can_create_contact($params['userid'], $params['requesteduserid'])) {
              $result['warnings'][] = [
                  'item' => 'user',
                  'itemid' => $params['requesteduserid'],
                  'warningcode' => 'cannotcreatecontactrequest',
                  'message' => 'You are unable to create a contact request for this user'
              ];
          } else {
              if ($requests = \core_message\api::get_contact_requests_between_users($params['userid'], $params['requesteduserid'])) {
                  // There should only ever be one but just in case there are multiple then we can return the first.
                  $result['request'] = array_shift($requests);
              } else {
                  $result['request'] = \core_message\api::create_contact_request($params['userid'], $params['requesteduserid']);
              }
          }
  
          return $result;
      }
code_tokens: public static function create_contact_request ( int $ userid , int $ requesteduserid ) { global $ CFG , $ USER ; // Check if messaging is enabled. if ( empty ( $ CFG -> messaging ) ) { throw new moodle_exception ( 'disabled' , 'message' ) ; } // Validate context. $ context = context_system :: instance ( ) ; self :: validate_context ( $ context ) ; $ params = [ 'userid' => $ userid , 'requesteduserid' => $ requesteduserid ] ; $ params = self :: validate_parameters ( self :: create_contact_request_parameters ( ) , $ params ) ; $ capability = 'moodle/site:manageallmessaging' ; if ( ( $ USER -> id != $ params [ 'userid' ] ) && ! has_capability ( $ capability , $ context ) ) { throw new required_capability_exception ( $ context , $ capability , 'nopermissions' , '' ) ; } $ result = [ 'warnings' => [ ] ] ; if ( ! \ core_message \ api :: can_create_contact ( $ params [ 'userid' ] , $ params [ 'requesteduserid' ] ) ) { $ result [ 'warnings' ] [ ] = [ 'item' => 'user' , 'itemid' => $ params [ 'requesteduserid' ] , 'warningcode' => 'cannotcreatecontactrequest' , 'message' => 'You are unable to create a contact request for this user' ] ; } else { if ( $ requests = \ core_message \ api :: get_contact_requests_between_users ( $ params [ 'userid' ] , $ params [ 'requesteduserid' ] ) ) { // There should only ever be one but just in case there are multiple then we can return the first. $ result [ 'request' ] = array_shift ( $ requests ) ; } else { $ result [ 'request' ] = \ core_message \ api :: create_contact_request ( $ params [ 'userid' ] , $ params [ 'requesteduserid' ] ) ; } } return $ result ; }
docstring: Creates a contact request.
  
  @param int $userid The id of the user who is creating the contact request
  @param int $requesteduserid The id of the user being requested
docstring_tokens: Creates a contact request .