bbp_is_forum_status( $forum_id, bool $status_name, bool $check_ancestors = true, string $operator = 'AND' )

Check if the forum status is a specific one, also maybe checking ancestors


Description Description


Parameters Parameters

$status_name

(Required) The forum status name to check

$check_ancestors

(Optional) Check the forum ancestors

Default value: true

$operator

(Optional) The logical operation to perform. 'OR' means only one forum from the tree needs to match; 'AND' means all forums must match. The default is 'AND'.

Default value: 'AND'


Top ↑

Return Return

(bool) True if match, false if not


Top ↑

Source Source

File: includes/forums/template.php

function bbp_is_forum_status( $forum_id, $status_name, $check_ancestors = true, $operator = 'AND' ) {

	// Setup some default variables
	$count        = 0;
	$retval       = false;
	$operator     = strtoupper( $operator );
	$forum_id     = bbp_get_forum_id( $forum_id );
	$forum_status = bbp_get_forum_status( $forum_id );

	// Quickly compare statuses of first forum ID
	if ( $status_name === $forum_status ) {
		$retval = true;
		$count++;
	}

	// Let's check the forum's ancestors too
	if ( ! empty( $check_ancestors ) ) {

		// Adjust the ancestor check based on the count
		switch( $operator ) {
			default:
			case 'AND':
				$check_ancestors = ( $count > 0 );
				break;

			case 'OR':
				$check_ancestors = ( $count < 1 );
				break;
		}

		// Ancestor check passed, so continue looping through them
		if ( ! empty( $check_ancestors ) ) {

			// Loop through the forum ancestors
			foreach ( (array) bbp_get_forum_ancestors( $forum_id ) as $ancestor ) {

				// Check if the forum is a category
				if ( bbp_is_forum_category( $ancestor ) ) {

					// Check the ancestor forum status
					$retval = bbp_is_forum_status( $ancestor, $status_name, false );
					if ( true === $retval ) {
						$count++;
					}
				}

				// Break when it reach the max count
				if ( ( $operator === 'OR' ) && ( $count >= 1 ) ) {
					break;
				}
			}
		}
	}

	// Filter & return
	return (bool) apply_filters( 'bbp_is_forum_status', $retval, $count, $forum_id, $status_name, $check_ancestors, $operator );
}

Top ↑

Changelog Changelog

Changelog
Version Description
2.6.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

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