BBP_Forums_Group_Extension::validate_topic_forum_id( int $topic_id )

Validate the forum ID for a topic in a group forum.


Description Description

This method ensures that when a topic is saved, it is only allowed to be saved to a forum that is either:

  • A forum in the current group
  • A forum the current user can moderate outside of this group

If all checks fail, an error gets added to prevent the topic from saving.


Parameters Parameters

$topic_id

(Required)


Top ↑

Source Source

File: includes/extend/buddypress/groups.php

	public function validate_topic_forum_id( $topic_id = 0 ) {

		// Bail if no topic
		if ( empty( $topic_id ) ) {
			return;
		}

		// Get current forum ID
		$forum_id = bbp_get_topic_forum_id( $topic_id );

		// Bail if not a group forum
		if ( ! bbp_is_forum_group_forum( $forum_id ) ) {
			return;
		}

		// Get current group ID
		$group_id = bp_get_current_group_id();

		// Bail if unknown group ID
		if ( empty( $group_id ) ) {
			return;
		}

		// Get group forum IDs
		$forum_ids = bbp_get_group_forum_ids( $group_id );

		// Get posted forum ID
		$new_forum_id = ! empty( $_POST['bbp_forum_id'] )
			? absint( $_POST['bbp_forum_id'] )
			: 0;

		// Bail if new forum ID is a forum in this group
		if ( in_array( $new_forum_id, $forum_ids, true ) ) {
			return;
		}

		// Get the current user ID
		$user_id = bbp_get_current_user_id();

		// Bail if current user can moderate the new forum ID
		if ( bbp_is_user_forum_moderator( $user_id, $new_forum_id ) ) {
			return;
		}

		// If everything else has failed, then something is wrong and we need
		// to add an error to prevent this topic from saving.
		bbp_add_error( 'bbp_topic_forum_id', __( '<strong>ERROR</strong>: Forum ID is invalid.', 'bbpress' ) );
	}

Top ↑

Changelog Changelog

Changelog
Version Description
2.6.14 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

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