HEX
Server: LiteSpeed
System: Linux node612.namehero.net 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: dfwparty (1186)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //home/dfwparty/dfwchat.net/wp-content/plugins/buddyboss-platform/bp-groups/bp-groups-admin.php
<?php
/**
 * BuddyBoss Groups component admin screen.
 *
 * Legacy Groups admin (listing, create, edit, delete) has been replaced
 * by Settings 2.0 React UI. This file now only registers the admin menu
 * item so that existing links (e.g. from LearnDash) still resolve.
 * Visits to ?page=bp-groups are redirected to Settings 2.0 by
 * {@see bb_redirect_legacy_settings_to_settings_2()}.
 *
 * @package BuddyBoss\Groups
 * @since BuddyPress 1.7.0
 */

// Exit if accessed directly.
defined( 'ABSPATH' ) || exit;

/**
 * Register the Groups menu item — link points directly at Settings 2.0.
 *
 * Pushed onto `$submenu` directly (no `add_submenu_page` call) so the slug
 * stays unregistered — WP's menu renderer uses the URL verbatim as the
 * link's `href`. Direct visits to the legacy `?page=bp-groups` (LearnDash,
 * bookmarks, third-party links) are caught upstream by
 * `bb_redirect_bp_settings_before_permission_check()` at
 * `admin_menu @ PHP_INT_MAX` — fires before WP's permission check, so
 * unregistered slug visits don't 403.
 *
 * @since BuddyPress 1.7.0
 */
function bp_groups_add_admin_menu() {
	global $submenu;

	$settings_url = function_exists( 'bb_get_feature_settings_url' )
		? bb_get_feature_settings_url( 'groups', 'all_groups' )
		: admin_url( 'admin.php?page=bb-settings&tab=groups&panel=all_groups' );

	$submenu['buddyboss-platform'][] = array(
		__( 'Groups', 'buddyboss' ),
		'bp_moderate',
		$settings_url,
	);
}
add_action( bp_core_admin_hook(), 'bp_groups_add_admin_menu', 60 );

/**
 * Add groups component to custom menus array.
 *
 * This ensures that the Groups menu item appears in the proper order on the
 * main Dashboard menu.
 *
 * @since BuddyPress 1.7.0
 *
 * @param array $custom_menus Array of BP top-level menu items.
 *
 * @return array Menu item array, with Groups added.
 */
function bp_groups_admin_menu_order( $custom_menus = array() ) {
	array_push( $custom_menus, 'bp-groups' );
	return $custom_menus;
}
add_filter( 'bp_admin_menu_order', 'bp_groups_admin_menu_order' );