bbp_recalculate_topic_engagements( int $topic_id, bool $force = false )
Recalculate all of the users who have engaged in a topic.
Description Description
This happens when permanently deleting a reply, because that reply author may have authored other replies to that same topic, or the topic itself.
You may need to do this manually on heavily active forums where engagement count accuracy is important.
Parameters Parameters
- $topic_id
-
(Required)
- $force
-
(Optional)
Default value: false
Return Return
(boolean) True if any engagements are added, false otherwise
Source Source
File: includes/users/engagements.php
function bbp_recalculate_topic_engagements( $topic_id = 0, $force = false ) { // Default return value $retval = false; // Check post type $topic_id = bbp_is_reply( $topic_id ) ? bbp_get_reply_topic_id( $topic_id ) : bbp_get_topic_id( $topic_id ); // Bail if no topic ID if ( empty( $topic_id ) ) { return $retval; } // Query for engagements $old_engagements = bbp_get_topic_engagements( $topic_id ); $new_engagements = bbp_get_topic_engagements_raw( $topic_id ); // Sort arrays sort( $old_engagements, SORT_NUMERIC ); sort( $new_engagements, SORT_NUMERIC ); // Only recalculate on change if ( ( true === $force ) || ( $old_engagements !== $new_engagements ) ) { // Delete all engagements bbp_remove_object_from_all_users( $topic_id, '_bbp_engagement' ); // Update the voice count for this topic id foreach ( $new_engagements as $user_id ) { $retval = bbp_add_user_engagement( $user_id, $topic_id ); } } // Filter & return return (bool) apply_filters( 'bbp_recalculate_user_engagements', $retval, $topic_id ); }
Changelog Changelog
Version | Description |
---|---|
2.6.0 | Introduced. |