Changeset 13437 for trunk/src/bp-groups/bp-groups-functions.php
- Timestamp:
- 03/18/2023 09:42:31 AM (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bp-groups/bp-groups-functions.php
r13395 r13437 3334 3334 array( 3335 3335 'name' => __( 'Group URL', 'buddypress' ), 3336 'value' => bp_get_group_ permalink( $group ),3336 'value' => bp_get_group_url( $group ), 3337 3337 ), 3338 3338 ); … … 3423 3423 array( 3424 3424 'name' => __( 'Group URL', 'buddypress' ), 3425 'value' => bp_get_group_ permalink( $group ),3425 'value' => bp_get_group_url( $group ), 3426 3426 ), 3427 3427 array( … … 3489 3489 array( 3490 3490 'name' => __( 'Group URL', 'buddypress' ), 3491 'value' => bp_get_group_ permalink( $group ),3491 'value' => bp_get_group_url( $group ), 3492 3492 ), 3493 3493 array( … … 3559 3559 array( 3560 3560 'name' => __( 'Group URL', 'buddypress' ), 3561 'value' => bp_get_group_ permalink( $group ),3561 'value' => bp_get_group_url( $group ), 3562 3562 ), 3563 3563 array( … … 3725 3725 } 3726 3726 } 3727 3728 /** 3729 * Returns the Group restricted screens. 3730 * 3731 * @since 12.0.0 3732 * 3733 * @return array The list of the Group restricted screens. 3734 */ 3735 function bp_get_group_restricted_screens() { 3736 return array( 3737 'bp_group_create' => array( 3738 'rewrite_id' => 'bp_group_create', 3739 'slug' => 'create', 3740 'name' => _x( 'Create Group root slug', 'Group create restricted rewrite id', 'buddypress' ), 3741 'context' => 'create', 3742 ), 3743 'bp_group_create_step' => array( 3744 'rewrite_id' => 'bp_group_create_step', 3745 'slug' => 'step', 3746 'name' => _x( 'Create step slug', 'Group create restricted rewrite id', 'buddypress' ), 3747 'context' => 'create', 3748 ), 3749 ); 3750 } 3751 3752 /** 3753 * Returns all registered Group Extension front-end screens. 3754 * 3755 * @since 12.0.0 3756 * 3757 * @param string $context The display context. Required. Defaults to `read`. 3758 * @return array The list of registered Group Extension screens. 3759 */ 3760 function bp_get_group_extension_screens( $context = 'read' ) { 3761 $bp = buddypress(); 3762 3763 $group_extension_screens = array( 3764 'create' => array(), 3765 'manage' => array(), 3766 'read' => array(), 3767 ); 3768 3769 if ( $bp->groups->group_extensions ) { 3770 foreach ( $bp->groups->group_extensions as $extension_screens ) { 3771 if ( ! is_array( $extension_screens ) ) { 3772 continue; 3773 } 3774 3775 foreach ( $extension_screens as $ctext => $extension_screen ) { 3776 $group_extension_screens[ $ctext ] = array_merge( $group_extension_screens[ $ctext ], $extension_screen ); 3777 } 3778 } 3779 } 3780 3781 if ( ! array_filter( $group_extension_screens ) || ! isset( $group_extension_screens[ $context ] ) ) { 3782 return array(); 3783 } 3784 3785 return $group_extension_screens[ $context ]; 3786 } 3787 3788 /** 3789 * Returns all potential Group screens. 3790 * 3791 * @since 12.0.0 3792 * 3793 * @param string $context The display context. Required. Defaults to `read`. 3794 * @return array The list of potential Group screens. 3795 */ 3796 function bp_get_group_screens( $context = 'read' ) { 3797 $screens = array( 3798 'create' => array( 3799 'group-details' => array( 3800 'rewrite_id' => 'bp_group_create_group_details', 3801 'slug' => 'group-details', 3802 'name' => _x( 'Details', 'Group create screen', 'buddypress' ), 3803 'position' => 0, 3804 ), 3805 'group-settings' => array( 3806 'rewrite_id' => 'bp_group_create_group_settings', 3807 'slug' => 'group-settings', 3808 'name' => _x( 'Settings', 'Group create screen', 'buddypress' ), 3809 'position' => 10, 3810 ), 3811 'group-avatar' => array( 3812 'rewrite_id' => 'bp_group_create_group_avatar', 3813 'slug' => 'group-avatar', 3814 'name' => _x( 'Photo', 'Group create screen', 'buddypress' ), 3815 'position' => 20, 3816 ), 3817 'group-cover-image' => array( 3818 'rewrite_id' => 'bp_group_create_group_cover_image', 3819 'slug' => 'group-cover-image', 3820 'name' => _x( 'Cover Image', 'Group create screen', 'buddypress' ), 3821 'position' => 25, 3822 ), 3823 'group-invites' => array( 3824 'rewrite_id' => 'bp_group_create_group_invites', 3825 'slug' => 'group-invites', 3826 'name' => _x( 'Invites', 'Group create screen', 'buddypress' ), 3827 'position' => 30, 3828 ), 3829 ), 3830 'read' => array( 3831 'home' => array( 3832 'rewrite_id' => 'bp_group_read_home', 3833 'slug' => 'home', 3834 'name' => _x( 'Home', 'Group read screen', 'buddypress' ), 3835 'screen_function' => 'groups_screen_group_home', 3836 'position' => 10, 3837 'item_css_id' => 'home', 3838 ), 3839 'request-membership' => array( 3840 'rewrite_id' => 'bp_group_read_request_membership', 3841 'slug' => 'request-membership', 3842 'name' => _x( 'Request Membership', 'Group read screen', 'buddypress' ), 3843 'screen_function' => 'groups_screen_group_request_membership', 3844 'position' => 30, 3845 ), 3846 'members' => array( 3847 'rewrite_id' => 'bp_group_read_members', 3848 'slug' => 'members', 3849 /* translators: %s: total member count */ 3850 'name' => _x( 'Members %s', 'Group read screen', 'buddypress' ), 3851 'screen_function' => 'groups_screen_group_members', 3852 'position' => 60, 3853 'user_has_access' => false, 3854 'no_access_url' => '', 3855 'item_css_id' => 'members', 3856 ), 3857 'send-invites' => array( 3858 'rewrite_id' => 'bp_group_read_send_invites', 3859 'slug' => 'send-invites', 3860 'name' => _x( 'Send Invites', 'Group read screen', 'buddypress' ), 3861 'screen_function' => 'groups_screen_group_invite', 3862 'position' => 70, 3863 'user_has_access' => false, 3864 'no_access_url' => '', 3865 'item_css_id' => 'invite', 3866 ), 3867 'admin' => array( 3868 'rewrite_id' => 'bp_group_read_admin', 3869 'slug' => 'admin', 3870 'name' => _x( 'Manage', 'Group read screen', 'buddypress' ), 3871 'screen_function' => 'groups_screen_group_admin', 3872 'position' => 1000, 3873 'user_has_access' => false, 3874 'no_access_url' => '', 3875 'item_css_id' => 'admin', 3876 ), 3877 ), 3878 'manage' => array( 3879 'edit-details' => array( 3880 'rewrite_id' => 'bp_group_manage_edit_details', 3881 'slug' => 'edit-details', 3882 'name' => _x( 'Details', 'Group manage screen', 'buddypress' ), 3883 'screen_function' => 'groups_screen_group_admin', 3884 'position' => 0, 3885 'user_has_access' => false, 3886 'show_in_admin_bar' => true, 3887 ), 3888 'group-settings' => array( 3889 'rewrite_id' => 'bp_group_manage_group_settings', 3890 'slug' => 'group-settings', 3891 'name' => _x( 'Settings', 'Group manage screen', 'buddypress' ), 3892 'screen_function' => 'groups_screen_group_admin', 3893 'position' => 10, 3894 'user_has_access' => false, 3895 'show_in_admin_bar' => true, 3896 ), 3897 'group-avatar' => array( 3898 'rewrite_id' => 'bp_group_manage_group_avatar', 3899 'slug' => 'group-avatar', 3900 'name' => _x( 'Photo', 'Group manage screen', 'buddypress' ), 3901 'screen_function' => 'groups_screen_group_admin', 3902 'position' => 20, 3903 'user_has_access' => false, 3904 'show_in_admin_bar' => true, 3905 ), 3906 'group-cover-image' => array( 3907 'rewrite_id' => 'bp_group_manage_group_cover_image', 3908 'slug' => 'group-cover-image', 3909 'name' => _x( 'Cover Image', 'Group manage screen', 'buddypress' ), 3910 'screen_function' => 'groups_screen_group_admin', 3911 'position' => 25, 3912 'user_has_access' => false, 3913 'show_in_admin_bar' => true, 3914 ), 3915 'manage-members' => array( 3916 'rewrite_id' => 'bp_group_manage_manage_members', 3917 'slug' => 'manage-members', 3918 'name' => _x( 'Members', 'Group manage screen', 'buddypress' ), 3919 'screen_function' => 'groups_screen_group_admin', 3920 'position' => 30, 3921 'user_has_access' => false, 3922 'show_in_admin_bar' => true, 3923 ), 3924 'membership-requests' => array( 3925 'rewrite_id' => 'bp_group_manage_membership_requests', 3926 'slug' => 'membership-requests', 3927 'name' => _x( 'Requests', 'Group manage screen', 'buddypress' ), 3928 'screen_function' => 'groups_screen_group_admin', 3929 'position' => 40, 3930 'user_has_access' => false, 3931 'show_in_admin_bar' => true, 3932 ), 3933 'delete-group' => array( 3934 'rewrite_id' => 'bp_group_manage_delete_group', 3935 'slug' => 'delete-group', 3936 'name' => _x( 'Delete', 'Group manage screen', 'buddypress' ), 3937 'screen_function' => 'groups_screen_group_admin', 3938 'position' => 1000, 3939 'user_has_access' => false, 3940 'show_in_admin_bar' => true, 3941 ), 3942 ), 3943 ); 3944 3945 if ( ! isset( $screens[ $context ] ) ) { 3946 return array(); 3947 } 3948 3949 $context_screens = array(); 3950 $custom_screens = apply_filters( 'bp_get_group_custom_' . $context . '_screens', $context_screens ); 3951 $group_extension_screens = bp_get_group_extension_screens( $context ); 3952 3953 if ( $group_extension_screens ) { 3954 $custom_screens = array_merge( $custom_screens, $group_extension_screens ); 3955 } 3956 3957 if ( $custom_screens && ! wp_is_numeric_array( $custom_screens ) ) { 3958 // The screen key (used as default slug) and `rewrite_id` prop need to be unique. 3959 $valid_custom_screens = array_diff_key( $custom_screens, $screens[ $context ] ); 3960 $existing_rewrite_ids = array_column( $screens[ $context ], 'rewrite_id' ); 3961 $existing_rewrite_ids = array_merge( 3962 $existing_rewrite_ids, 3963 // BP Group Reserved rewrite IDs. 3964 array_keys( bp_get_group_restricted_screens() ) 3965 ); 3966 3967 foreach ( $valid_custom_screens as $key_screen => $screen ) { 3968 if ( ! isset( $screen['rewrite_id'] ) || ! in_array( $screen['rewrite_id'], $existing_rewrite_ids, true ) ) { 3969 continue; 3970 } 3971 3972 unset( $valid_custom_screens[ $key_screen ] ); 3973 } 3974 3975 $context_screens = array_merge( $screens[ $context ], $valid_custom_screens ); 3976 } else { 3977 $context_screens = $screens[ $context ]; 3978 } 3979 3980 return $context_screens; 3981 }
Note: See TracChangeset
for help on using the changeset viewer.