/** * Ensure that forum content associated with a BuddyPress group can only be * viewed via the group URL. * * @since bbPress (r3802) */ public function redirect_canonical() { // Viewing a single forum if (bbp_is_single_forum()) { $forum_id = get_the_ID(); $group_ids = bbp_get_forum_group_ids($forum_id); // Viewing a single topic } elseif (bbp_is_single_topic()) { $topic_id = get_the_ID(); $slug = get_post_field('post_name', $topic_id); $forum_id = bbp_get_topic_forum_id($topic_id); $group_ids = bbp_get_forum_group_ids($forum_id); // Not a forum or topic } else { return; } // Bail if not a group forum if (empty($group_ids)) { return; } // Use the first group ID $group_id = $group_ids[0]; $group = groups_get_group(array('group_id' => $group_id)); $group_link = trailingslashit(bp_get_group_permalink($group)); $redirect_to = trailingslashit($group_link . $this->slug); // Add topic slug to URL if (bbp_is_single_topic()) { $redirect_to = trailingslashit($redirect_to . $this->topic_slug . '/' . $slug); } bp_core_redirect($redirect_to); }
/** * Return true if a forum is a group forum * * @since bbPress (r4571) * * @param int $forum_id * @uses bbp_get_forum_id() To get the forum id * @uses bbp_get_forum_group_ids() To get the forum's group ids * @uses apply_filters() Calls 'bbp_forum_is_group_forum' with the forum id * @return bool True if it is a group forum, false if not */ function bbp_is_forum_group_forum($forum_id = 0) { // Validate $forum_id = bbp_get_forum_id($forum_id); // Check for group ID's $group_ids = bbp_get_forum_group_ids($forum_id); // Check if the forum has groups $retval = (bool) (!empty($group_ids)); return (bool) apply_filters('bbp_is_forum_group_forum', $retval, $forum_id, $group_ids); }
/** * Remove a forum from all groups * * @param type $forum_id * @since bbPress (r3653) */ function bbp_remove_forum_id_from_all_groups($forum_id = 0) { // Validate $forum_id = bbp_get_forum_id($forum_id); $group_ids = bbp_get_forum_group_ids($forum_id); // Loop through groups and remove this forum from each one foreach ((array) $group_ids as $group_id) { bbp_remove_forum_id_from_group($forum_id, $group_id); } }
/** * Ensure that forum content associated with a BuddyPress group can only be * viewed via the group URL. * * @since bbPress (r3802) */ function redirect_canonical() { if (bbp_is_single_forum()) { $forum_id = get_the_ID(); $group_ids = bbp_get_forum_group_ids($forum_id); } elseif (bbp_is_single_topic()) { $topic_id = get_the_ID(); $slug = get_post_field('post_name', $topic_id); $forum_id = bbp_get_topic_forum_id($topic_id); $group_ids = bbp_get_forum_group_ids($forum_id); } if (!empty($group_ids)) { // @todo Multiple group forums/forum groups $group_id = $group_ids[0]; $group = groups_get_group(array('group_id' => $group_id)); $group_permalink = bp_get_group_permalink($group); $redirect_to = trailingslashit($group_permalink . $this->forums_slug); if (!empty($slug)) { $redirect_to = trailingslashit($redirect_to . $this->topic_slug . '/' . $slug); } bp_core_redirect($redirect_to); } }