Skip to:
Content

BuddyPress.org

Changeset 13728


Ignore:
Timestamp:
02/16/2024 01:33:24 AM (10 months ago)
Author:
imath
Message:

Improve the BP Site Health debug info panel

  • Make sure empty options are displaying their default values
  • Add a an help tab for the BP Site Health debug info panel
  • Make sure this panel is only generated for the root blog
  • Improve the way the global community setting is handled
  • Add a debug info about whether the current theme supports BuddyPress

Fixes #9093

Location:
trunk/src/bp-core/admin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-core/admin/bp-core-admin-functions.php

    r13722 r13728  
    821821        case 'bp-profile-overview':
    822822            $retval = __( 'Your users will distinguish themselves through their profile page. Create relevant profile fields that will show on each users profile.', 'buddypress' ) . '<br /><br />' . __( 'Note: Drag fields from other groups and drop them on the "Signup Fields" tab to include them into your registration form.', 'buddypress' );
     823            break;
     824
     825        case 'bp-debug-settings':
     826            $retval = __( 'Find all the details about your BuddyPress configuration opening the BuddyPress panel of your Site Health info accordion panels. If you need to ask for support, this information will help the BuddyPress community in giving you the right reply to your issue.', 'buddypress' );
    823827            break;
    824828
  • trunk/src/bp-core/admin/bp-core-admin-tools.php

    r13680 r13728  
    757757function bp_core_admin_debug_information( $debug_info = array() ) {
    758758    global $wp_settings_fields;
    759     $active_components = array_intersect_key( bp_core_get_components(), buddypress()->active_components );
     759
     760    if ( ! bp_is_root_blog() ) {
     761        return $debug_info;
     762    }
     763
     764    $active_components = wp_list_pluck( bp_core_get_active_components( array(), 'objects' ), 'name', 'id' );
    760765    $bp_settings       = array();
     766    $skipped_settings  = array( '_bp_theme_package_id', '_bp_community_visibility' );
    761767    $bp_url_parsers    = array(
    762768        'rewrites' => __( 'BP Rewrites API', 'buddypress' ),
     
    772778    }
    773779
    774 
    775780    foreach ( $wp_settings_fields['buddypress'] as $section => $settings ) {
    776781        $prefix       = '';
    777782        $component_id = str_replace( 'bp_', '', $section );
    778783
    779         if ( isset( $active_components[ $component_id ]['title'] ) ) {
    780             $prefix = $active_components[ $component_id ]['title'] .': ';
     784        if ( isset( $active_components[ $component_id ] ) ) {
     785            $prefix = $active_components[ $component_id ] .': ';
    781786        }
    782787
     
    788793            );
    789794
    790             if ( ! isset( $bp_setting['id'] ) || '_bp_theme_package_id' === $bp_setting['id'] ) {
     795            if ( ! isset( $bp_setting['id'] ) || in_array( $bp_setting['id'], $skipped_settings, true ) ) {
    791796                continue;
    792797            }
    793798
    794             $bp_setting_value = bp_get_option( $bp_setting['id'] );
    795             if ( '0' === $bp_setting_value || '1' === $bp_setting_value ) {
    796                 if ( ( $reverse && '0' === $bp_setting_value ) || ( ! $reverse && '1' === $bp_setting_value ) ) {
    797                     $bp_setting_value = __( 'Yes', 'buddypress' );
     799            $bp_setting_value = bp_get_option( $bp_setting['id'], 0 );
     800
     801            if ( is_array( $bp_setting_value ) ) {
     802                if ( is_numeric( key( $bp_setting_value ) ) ) {
     803                    $bp_setting_value = implode( ', ', $bp_setting_value );
    798804                } else {
    799                     $bp_setting_value = __( 'No', 'buddypress' );
     805                    $setting_array    = $bp_setting_value;
     806                    $bp_setting_value = array();
     807                    foreach ( $setting_array as $setting_array_key => $setting_array_value ) {
     808                        $bp_setting_value[ $setting_array_key ] = implode( ', ', $setting_array_value );
     809                    }
     810                }
     811            } else {
     812                $bp_setting_value = (int) $bp_setting_value;
     813                if ( 0 === $bp_setting_value || 1 === $bp_setting_value ) {
     814                    if ( ( $reverse && 0 === $bp_setting_value ) || ( ! $reverse && 1 === $bp_setting_value ) ) {
     815                        $bp_setting_value = __( 'Yes', 'buddypress' );
     816                    } else {
     817                        $bp_setting_value = __( 'No', 'buddypress' );
     818                    }
    800819                }
    801820            }
     
    814833    }
    815834
     835    $theme_settings = array();
     836    if ( current_theme_supports( 'buddypress' ) ) {
     837        $theme_settings['standalone_bptheme'] = array(
     838            'label' => __( 'BuddyPress standalone theme', 'buddypress' ),
     839            'value' => wp_get_theme()->get( 'Name' ),
     840        );
     841    } else {
     842        $theme_settings['template_pack'] = array(
     843            'label' => __( 'Active template pack', 'buddypress' ),
     844            'value' => bp_get_theme_compat_name() . ' ' . bp_get_theme_compat_version(),
     845        );
     846    }
     847
    816848    $debug_info['buddypress'] = array(
    817849        'label'  => __( 'BuddyPress', 'buddypress' ),
    818850        'fields' => array_merge(
    819851            array(
    820                 'version' => array(
     852                'version'                     => array(
    821853                    'label' => __( 'Version', 'buddypress' ),
    822854                    'value' => bp_get_version(),
    823855                ),
    824                 'active_components' => array(
     856                'active_components'           => array(
    825857                    'label' => __( 'Active components', 'buddypress' ),
    826                     'value' => implode( ', ', wp_list_pluck( $active_components, 'title' ) ),
     858                    'value' => implode( ', ', $active_components ),
    827859                ),
    828                 'template_pack' => array(
    829                     'label' => __( 'Active template pack', 'buddypress' ),
    830                     'value' => bp_get_theme_compat_name() . ' ' . bp_get_theme_compat_version(),
    831                 ),
    832                 'url_parser'    => array(
     860                'url_parser'                  => array(
    833861                    'label' => __( 'URL Parser', 'buddypress' ),
    834862                    'value' => $bp_url_parser,
    835863                ),
     864                'global_community_visibility' => array(
     865                    'label' => __( 'Community visibility', 'buddypress' ),
     866                    'value' => bp_get_community_visibility( 'global' ),
     867                ),
    836868            ),
     869            $theme_settings,
    837870            $bp_settings
    838871        )
     
    842875}
    843876add_filter( 'debug_information', 'bp_core_admin_debug_information' );
     877
     878/**
     879 * Adds a BuddyPress section to the Site Health Info Admin Screen help tabs.
     880 *
     881 * @since 14.0.0
     882 */
     883function bp_core_admin_debug_information_add_help_tab() {
     884    if ( ! bp_is_root_blog() ) {
     885        return;
     886    }
     887
     888    if ( isset( $_REQUEST['tab'] ) && 'debug' === sanitize_key( wp_unslash( $_REQUEST['tab'] ) ) ) {
     889        $screen = get_current_screen();
     890
     891        $screen->add_help_tab(
     892            array(
     893                'id'      => 'bp-debug-settings',
     894                'title'   => esc_html__( 'BuddyPress', 'buddypress' ),
     895                'content' => bp_core_add_contextual_help_content( 'bp-debug-settings' ),
     896            )
     897        );
     898
     899        $help_sidebar = $screen->get_help_sidebar();
     900        $bp_links     = sprintf(
     901            '<p><a href="%1$s" class="bp-help-sidebar-links">%2$s</a></p>',
     902            esc_url( 'https://buddypress.org/support/' ),
     903            esc_html__( 'BuddyPress Support Forums', 'buddypress' )
     904        );
     905
     906        $screen->set_help_sidebar( $help_sidebar . $bp_links );
     907        wp_add_inline_script(
     908            'site-health',
     909            '( function() {
     910                let bpHelpSidebarLinks;
     911
     912                document.onreadystatechange = function()  {
     913                    if ( document.readyState === "complete" ) {
     914                        bpHelpSidebarLinks = document.querySelector( \'.bp-help-sidebar-links\' ).closest( \'p\')
     915                        bpHelpSidebarLinks.style.display = \'none\';
     916                    }
     917                }
     918
     919                document.querySelectorAll( \'.contextual-help-tabs ul li a\' ).forEach(
     920                    function( a ) {
     921                        a.addEventListener( \'click\', function( e ) {
     922                            if ( \'tab-link-bp-debug-settings\' === e.target.parentElement.getAttribute( \'id\' ) ) {
     923                                bpHelpSidebarLinks.style.display = \'block\';
     924                            } else {
     925                                bpHelpSidebarLinks.style.display = \'none\';
     926                            }
     927                        } );
     928                    }
     929                );
     930            } )();'
     931        );
     932    }
     933}
     934add_action( 'admin_head-site-health.php', 'bp_core_admin_debug_information_add_help_tab' );
Note: See TracChangeset for help on using the changeset viewer.