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'
Return Return
(bool) True if match, false if not
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 );
}
Changelog Changelog
| Version | Description |
|---|---|
| 2.6.0 | Introduced. |