BP_Invitation::get( array $args = array() )

Get invitations, based on provided filter parameters.


Description Description


Parameters Parameters

$args

(Optional) Associative array of arguments. All arguments but $page and $per_page can be treated as filter values for get_where_sql() and get_query_clauses(). All items are optional.

  • 'id'
    (int|array) ID of invitation being fetched. Can be an array of IDs.
  • 'user_id'
    (int|array) ID of user being queried. Can be an Can be an array of IDs.
  • 'inviter_id'
    (int|array) ID of user who created the invitation. Can be an array of IDs.
  • 'invitee_email'
    (string|array) Email address of invited users being queried. Can be an array of addresses.
  • 'class'
    (string|array) Name of the class to filter by. Can be an array of class names.
  • 'item_id'
    (int|array) ID of associated item. Can be an array of multiple item IDs.
  • 'secondary_item_id'
    (int|array) ID of secondary associated item. Can be an array of multiple IDs.
  • 'type'
    (string|array) Type of item. An "invite" is sent from one user to another. A "request" is submitted by a user and no inviter is required. 'all' returns all. Default: 'all'.
  • 'invite_sent'
    (string) Limit to draft, sent or all 'draft' limits to unsent invites, 'sent' returns only sent invites, 'all' returns all. Default: 'all'.
  • 'accepted'
    (bool) Limit to accepted or not-yet-accepted invitations. 'accepted' returns accepted invites, 'pending' returns pending invites, 'all' returns all. Default: 'pending'
  • 'search_terms'
    (string) Term to match against class field.
  • 'order_by'
    (string) Database column to order by.
  • 'sort_order'
    (string) Either 'ASC' or 'DESC'.
  • 'order_by'
    (string) Field to order results by.
  • 'sort_order'
    (string) ASC or DESC.
  • 'page'
    (int) Number of the current page of results. Default: false (no pagination, all items).
  • 'per_page'
    (int) Number of items to show per page. Default: false (no pagination, all items).
  • 'fields'
    (string) Which fields to return. Specify 'item_ids' to fetch a list of Item_IDs. Specify 'ids' to fetch a list of Invitation IDs. Default: 'all' (return BP_Invitation objects).

Default value: array()


Top ↑

Return Return

(array) BP_Invitation objects | IDs of found invite.


Top ↑

Source Source

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

	public static function get( $args = array() ) {
		global $wpdb;
		$invites_table_name = BP_Invitation_Manager::get_table_name();

		// Parse the arguments
		$r  = bp_parse_args( $args, array(
			'id'                => false,
			'user_id'           => false,
			'inviter_id'        => false,
			'invitee_email'     => false,
			'class'             => false,
			'item_id'           => false,
			'secondary_item_id' => false,
			'type'              => 'all',
			'invite_sent'       => 'all',
			'accepted'          => 'pending',
			'search_terms'      => '',
			'order_by'          => false,
			'sort_order'        => false,
			'page'              => false,
			'per_page'          => false,
			'fields'            => 'all',
		), 'bp_invitations_invitation_get' );

		$sql = array(
			'select'     => "SELECT",
			'fields'     => '',
			'from'       => "FROM {$invites_table_name} i",
			'where'      => '',
			'orderby'    => '',
			'pagination' => '',
		);

		if ( 'item_ids' === $r['fields'] ) {
			$sql['fields'] = "DISTINCT i.item_id";
		} else if ( 'user_ids' === $r['fields'] ) {
			$sql['fields'] = "DISTINCT i.user_id";
		} else if ( 'inviter_ids' === $r['fields'] ) {
			$sql['fields'] = "DISTINCT i.inviter_id";
		} else {
			$sql['fields'] = 'DISTINCT i.id';
		}

		// WHERE
		$sql['where'] = self::get_where_sql( array(
			'id'                => $r['id'],
			'user_id'           => $r['user_id'],
			'inviter_id'		=> $r['inviter_id'],
			'invitee_email'     => $r['invitee_email'],
			'class'             => $r['class'],
			'item_id'           => $r['item_id'],
			'secondary_item_id' => $r['secondary_item_id'],
			'type'              => $r['type'],
			'invite_sent'       => $r['invite_sent'],
			'accepted'          => $r['accepted'],
			'search_terms'      => $r['search_terms'],
		) );

		// ORDER BY
		$sql['orderby'] = self::get_order_by_sql( array(
			'order_by'   => $r['order_by'],
			'sort_order' => $r['sort_order']
		) );

		// LIMIT %d, %d
		$sql['pagination'] = self::get_paged_sql( array(
			'page'     => $r['page'],
			'per_page' => $r['per_page'],
		) );

		$paged_invites_sql = "{$sql['select']} {$sql['fields']} {$sql['from']} {$sql['where']} {$sql['orderby']} {$sql['pagination']}";

		/**
		 * Filters the pagination SQL statement.
		 *
		 * @since 5.0.0
		 *
		 * @param string $value Concatenated SQL statement.
		 * @param array  $sql   Array of SQL parts before concatenation.
		 * @param array  $r     Array of parsed arguments for the get method.
		 */
		$paged_invites_sql = apply_filters( 'bp_invitations_get_paged_invitations_sql', $paged_invites_sql, $sql, $r );

		$cached = bp_core_get_incremented_cache( $paged_invites_sql, 'bp_invitations' );
		if ( false === $cached ) {
			$paged_invite_ids = $wpdb->get_col( $paged_invites_sql );
			bp_core_set_incremented_cache( $paged_invites_sql, 'bp_invitations', $paged_invite_ids );
		} else {
			$paged_invite_ids = $cached;
		}

		// Special return format cases.
		if ( in_array( $r['fields'], array( 'ids', 'item_ids', 'user_ids', 'inviter_ids' ), true ) ) {
			// We only want the field that was found.
			return array_map( 'intval', $paged_invite_ids );
		}

		$uncached_ids = bp_get_non_cached_ids( $paged_invite_ids, 'bp_invitations' );
		if ( $uncached_ids ) {
			$ids_sql = implode( ',', array_map( 'intval', $uncached_ids ) );
			$data_objects = $wpdb->get_results( "SELECT i.* FROM {$invites_table_name} i WHERE i.id IN ({$ids_sql})" );
			foreach ( $data_objects as $data_object ) {
				wp_cache_set( $data_object->id, $data_object, 'bp_invitations' );
			}
		}

		$paged_invites = array();
		foreach ( $paged_invite_ids as $paged_invite_id ) {
			$paged_invites[] = new BP_Invitation( $paged_invite_id );
		}

		return $paged_invites;
	}

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.