BP_Invitation_Manager::add_invitation( array $args = array() )

Add an invitation to a specific user, from a specific user, related to a specific class.


Parameters Parameters

$args

(array) (Optional) Array of arguments describing the invitation. All are optional.

  • 'user_id'
    (int) ID of the invited user.
  • 'inviter_id'
    (int) ID of the user who created the invitation.
  • 'invitee_email'
    (string) Email address of the invited user.
  • 'item_id'
    (int) ID associated with the invitation and class.
  • 'secondary_item_id'
    (int) Secondary ID associated with the invitation and class.
  • 'type'
    (string) Type of record this is: 'invite' or 'request'.
  • 'content'
    (string) Extra information provided by the requester or inviter.
  • 'date_modified'
    (string) Date the invitation was last modified.
  • 'send_invite'
    (int) Should the invitation also be sent, or is it a draft invite?

Default value: array()


Top ↑

Return Return

(int|bool) ID of the newly created invitation on success, false on failure.


Source Source

File: bp-core/classes/class-bp-invitation-manager.php

	public function add_invitation( $args = array() ) {

		$r = bp_parse_args( $args, array(
			'user_id'           => 0,
			'invitee_email'     => '',
			'inviter_id'        => 0,
			'item_id'           => 0,
			'secondary_item_id' => 0,
			'type'              => 'invite',
			'content'           => '',
			'date_modified'     => bp_core_current_time(),
			'send_invite'       => 0,
			'accepted'          => 0
		), 'add_invitation' );

		// Invitations must have an invitee and inviter.
		if ( ! ( ( $r['user_id'] || $r['invitee_email'] ) && $r['inviter_id'] ) ) {
			return false;
		}

		// If an email address is specified, it must be a valid email address.
		if ( $r['invitee_email'] && ! is_email( $r['invitee_email'] ) ) {
			return false;
		}

		/**
		 * Is this user allowed to extend invitations in this situation?
		 *
		 * @since 5.0.0
		 *
		 * @param array $r Describes the invitation to be added.
		 */
		if ( ! $this->allow_invitation( $r ) ) {
			return false;
		}

		// Avoid creating duplicate invitations.
		$invite_id = $this->invitation_exists( array(
			'user_id'           => $r['user_id'],
			'invitee_email'     => $r['invitee_email'],
			'inviter_id'        => $r['inviter_id'],
			'item_id'           => $r['item_id'],
			'secondary_item_id' => $r['secondary_item_id'],
		) );

		if ( ! $invite_id ) {
			// Set up the new invitation as a draft.
			$invitation                    = new BP_Invitation;
			$invitation->user_id           = $r['user_id'];
			$invitation->inviter_id        = $r['inviter_id'];
			$invitation->invitee_email     = $r['invitee_email'];
			$invitation->class             = $this->class_name;
			$invitation->item_id           = $r['item_id'];
			$invitation->secondary_item_id = $r['secondary_item_id'];
			$invitation->type              = $r['type'];
			$invitation->content           = $r['content'];
			$invitation->date_modified     = $r['date_modified'];
			$invitation->invite_sent       = 0;
			$invitation->accepted          = 0;

			$invite_id = $invitation->save();
		}

		// "Send" the invite if necessary.
		if ( $invite_id && $r['send_invite'] ) {
			$sent = $this->send_invitation_by_id( $invite_id, $r );
			if ( ! $sent ) {
				return false;
			}
		}

		return $invite_id;
	}


Top ↑

Changelog Changelog

Changelog
Version Description
5.0.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

You must log in before being able to contribute a note or feedback.