BP_Messages_Message::get_existing_thread( array $recipient_ids, integer $sender )

Get existsing thread which matches the recipients

Description

Parameters

$recipient_ids

(array) (Required)

$sender

(integer) (Required)

Source

File: bp-messages/classes/class-bp-messages-message.php

	public static function get_existing_thread( $recipient_ids, $sender = 0 ) {
		global $wpdb;

		$bp = buddypress();

		// add the sender into the recipient list and order by id ascending
		$recipient_ids[] = $sender;
		$recipient_ids = array_filter(array_unique(array_values($recipient_ids)));
		sort($recipient_ids);

		$results = $wpdb->get_results( $sql = $wpdb->prepare(
			"SELECT
				r.thread_id as thread_id,
				GROUP_CONCAT(DISTINCT user_id ORDER BY user_id separator ',') as recipient_list,
				MAX(m.date_sent) AS date_sent
			FROM {$bp->messages->table_name_recipients} r
			INNER JOIN {$bp->messages->table_name_messages} m ON m.thread_id = r.thread_id
			GROUP BY r.thread_id
			HAVING recipient_list = %s
			ORDER BY date_sent DESC
			LIMIT 1
			",
			implode(',', $recipient_ids)
		) );

        if ( ! $results ) {
            return null;
        }

        $thread_id = $results[0]->thread_id;

        if ( ! $is_active_recipient = BP_Messages_Thread::is_thread_recipient( $thread_id, $sender ) ) {
            return null;
        }

        return $thread_id;
	}

Changelog

Changelog
Version Description
BuddyBoss 1.0.0 Introduced.

Questions?

We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.