bbp_update_topic( int $topic_id, int $forum_id, bool|array $anonymous_data = false, int $author_id, bool $is_edit = false )
Handle all the extra meta stuff from posting a new topic
Description
Parameters
- $topic_id
-
(Optional) Topic id
- $forum_id
-
(Optional) Forum id
- $anonymous_data
-
(Optional) logged-out user data.
Default value: false
- $author_id
-
(Optional) Author id
- $is_edit
-
(Optional) Is the post being edited? Defaults to false.
Default value: false
Source
File: bp-forums/topics/functions.php
function bbp_update_topic( $topic_id = 0, $forum_id = 0, $anonymous_data = false, $author_id = 0, $is_edit = false ) {
// Validate the ID's passed from 'bbp_new_topic' action
$topic_id = bbp_get_topic_id( $topic_id );
$forum_id = bbp_get_forum_id( $forum_id );
// Bail if there is no topic
if ( empty( $topic_id ) )
return;
// Check author_id
if ( empty( $author_id ) )
$author_id = bbp_get_current_user_id();
// Check forum_id
if ( empty( $forum_id ) )
$forum_id = bbp_get_topic_forum_id( $topic_id );
// If anonymous post, store name, email, website and ip in post_meta.
// It expects anonymous_data to be sanitized.
// Check bbp_filter_anonymous_post_data() for sanitization.
if ( !empty( $anonymous_data ) && is_array( $anonymous_data ) ) {
// Parse arguments against default values
$r = bbp_parse_args( $anonymous_data, array(
'bbp_anonymous_name' => '',
'bbp_anonymous_email' => '',
'bbp_anonymous_website' => '',
), 'update_topic' );
// Update all anonymous metas
foreach ( $r as $anon_key => $anon_value ) {
update_post_meta( $topic_id, '_' . $anon_key, (string) $anon_value, false );
}
// Set transient for throttle check (only on new, not edit)
if ( empty( $is_edit ) ) {
set_transient( '_bbp_' . bbp_current_author_ip() . '_last_posted', time() );
}
} else {
if ( empty( $is_edit ) && !current_user_can( 'throttle' ) ) {
bbp_update_user_last_posted( $author_id );
}
}
// Handle Subscription Checkbox
if ( bbp_is_subscriptions_active() && !empty( $author_id ) ) {
$subscribed = bbp_is_user_subscribed( $author_id, $topic_id );
$subscheck = ( !empty( $_POST['bbp_topic_subscription'] ) && ( 'bbp_subscribe' === $_POST['bbp_topic_subscription'] ) ) ? true : false;
// Subscribed and unsubscribing
if ( true === $subscribed && false === $subscheck ) {
bbp_remove_user_subscription( $author_id, $topic_id );
// Subscribing
} elseif ( false === $subscribed && true === $subscheck ) {
bbp_add_user_subscription( $author_id, $topic_id );
}
}
// Forum topic meta
bbp_update_topic_forum_id( $topic_id, $forum_id );
bbp_update_topic_topic_id( $topic_id, $topic_id );
// Update associated topic values if this is a new topic
if ( empty( $is_edit ) ) {
// Update poster IP if not editing
update_post_meta( $topic_id, '_bbp_author_ip', bbp_current_author_ip(), false );
// Last active time
$last_active = current_time( 'mysql' );
// Reply topic meta
bbp_update_topic_last_reply_id ( $topic_id, 0 );
bbp_update_topic_last_active_id ( $topic_id, $topic_id );
bbp_update_topic_last_active_time ( $topic_id, $last_active );
bbp_update_topic_reply_count ( $topic_id, 0 );
bbp_update_topic_reply_count_hidden ( $topic_id, 0 );
bbp_update_topic_voice_count ( $topic_id );
// Walk up ancestors and do the dirty work
bbp_update_topic_walker( $topic_id, $last_active, $forum_id, 0, false );
}
}
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.