bbp_update_reply_walker( int $reply_id, string $last_active_time = '', int $forum_id, int $topic_id, bool $refresh = true )
Walk up the ancestor tree from the current reply, and update all the counts
Description
Parameters
- $reply_id
-
(Optional) Reply id
- $last_active_time
-
(Optional) Last active time
Default value: ''
- $forum_id
-
(Optional) Forum id
- $topic_id
-
(Optional) Topic id
- $refresh
-
(Optional) If set to true, unsets all the previous parameters. Defaults to true
Default value: true
Source
File: bp-forums/replies/functions.php
function bbp_update_reply_walker( $reply_id, $last_active_time = '', $forum_id = 0, $topic_id = 0, $refresh = true ) { // Verify the reply ID $reply_id = bbp_get_reply_id( $reply_id ); // Reply was passed if ( !empty( $reply_id ) ) { // Get the topic ID if none was passed if ( empty( $topic_id ) ) { $topic_id = bbp_get_reply_topic_id( $reply_id ); } // Get the forum ID if none was passed if ( empty( $forum_id ) ) { $forum_id = bbp_get_reply_forum_id( $reply_id ); } } // Set the active_id based on topic_id/reply_id $active_id = empty( $reply_id ) ? $topic_id : $reply_id; // Setup ancestors array to walk up $ancestors = array_values( array_unique( array_merge( array( $topic_id, $forum_id ), (array) get_post_ancestors( $topic_id ) ) ) ); // If we want a full refresh, unset any of the possibly passed variables if ( true === $refresh ) $forum_id = $topic_id = $reply_id = $active_id = $last_active_time = 0; // Walk up ancestors if ( !empty( $ancestors ) ) { foreach ( $ancestors as $ancestor ) { // Reply meta relating to most recent reply if ( bbp_is_reply( $ancestor ) ) { // @todo - hierarchical replies // Topic meta relating to most recent reply } elseif ( bbp_is_topic( $ancestor ) ) { // Last reply and active ID's bbp_update_topic_last_reply_id ( $ancestor, $reply_id ); bbp_update_topic_last_active_id( $ancestor, $active_id ); // Get the last active time if none was passed $topic_last_active_time = $last_active_time; if ( empty( $last_active_time ) ) { $topic_last_active_time = get_post_field( 'post_date', bbp_get_topic_last_active_id( $ancestor ) ); } // Only update if reply is published if ( bbp_is_reply_published( $reply_id ) ) { bbp_update_topic_last_active_time( $ancestor, $topic_last_active_time ); } // Counts bbp_update_topic_voice_count ( $ancestor ); bbp_update_topic_reply_count ( $ancestor ); bbp_update_topic_reply_count_hidden( $ancestor ); // Forum meta relating to most recent topic } elseif ( bbp_is_forum( $ancestor ) ) { // Last topic and reply ID's bbp_update_forum_last_topic_id( $ancestor, $topic_id ); bbp_update_forum_last_reply_id( $ancestor, $reply_id ); // Last Active bbp_update_forum_last_active_id( $ancestor, $active_id ); // Get the last active time if none was passed $forum_last_active_time = $last_active_time; if ( empty( $last_active_time ) ) { $forum_last_active_time = get_post_field( 'post_date', bbp_get_forum_last_active_id( $ancestor ) ); } // Only update if reply is published if ( bbp_is_reply_published( $reply_id ) ) { bbp_update_forum_last_active_time( $ancestor, $forum_last_active_time ); } // Counts bbp_update_forum_reply_count( $ancestor ); } } } }
Changelog
Version | Description |
---|---|
bbPress (r2884) | 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.