diff --git src/bp-core/classes/class-bp-invitation-manager.php src/bp-core/classes/class-bp-invitation-manager.php
index e1bc7748e..a8bb047ce 100644
--- src/bp-core/classes/class-bp-invitation-manager.php
+++ src/bp-core/classes/class-bp-invitation-manager.php
@@ -611,7 +611,7 @@ abstract class BP_Invitation_Manager {
 	 * @param int $id The ID of the invitation to mark as sent.
 	 * @return bool True on success, false on failure.
 	 */
-	abstract public function run_acceptance_action( $type = 'invite', $r  );
+	abstract public function run_acceptance_action( $type, $r  );
 
 	/**
 	 * Mark invitation as accepted by invitation ID.
diff --git src/bp-groups/classes/class-bp-groups-invitation-manager.php src/bp-groups/classes/class-bp-groups-invitation-manager.php
index d22cd0977..76d4e13c7 100644
--- src/bp-groups/classes/class-bp-groups-invitation-manager.php
+++ src/bp-groups/classes/class-bp-groups-invitation-manager.php
@@ -67,7 +67,11 @@ class BP_Groups_Invitation_Manager extends BP_Invitation_Manager {
 	 * @param array  $r    Parameters that describe the invitation being accepted.
 	 * @return bool True on success, false on failure.
 	 */
-	public function run_acceptance_action( $type = 'invite', $r  ) {
+	public function run_acceptance_action( $type, $r ) {
+		if ( ! $type || ! in_array( $type, array( 'request', 'invite' ), true ) ) {
+			return false;
+		}
+
 		// If the user is already a member (because BP at one point allowed two invitations to
 		// slip through), return early.
 		if ( groups_is_user_member( $r['user_id'], $r['item_id'] ) ) {
