Skip to:
Content

BuddyPress.org

Ticket #6509: 6509.patch

File 6509.patch, 3.9 KB (added by imath, 6 years ago)
  • src/bp-core/bp-core-filters.php

    diff --git src/bp-core/bp-core-filters.php src/bp-core/bp-core-filters.php
    index b5e857a..80c89d8 100644
    function bp_setup_nav_menu_item( $menu_item ) { 
    848848                return $menu_item;
    849849        }
    850850
     851        // Prevent a notice error when using the customizer
     852        $menu_classes = $menu_item->classes;
     853
     854        if ( is_array( $menu_classes ) ) {
     855                $menu_classes = implode( ' ', $menu_item->classes);
     856        }
     857
    851858        // We use information stored in the CSS class to determine what kind of
    852859        // menu item this is, and how it should be treated
    853         preg_match( '/\sbp-(.*)-nav/', implode( ' ', $menu_item->classes), $matches );
     860        preg_match( '/\sbp-(.*)-nav/', $menu_classes, $matches );
    854861
    855862        // If this isn't a BP menu item, we can stop here
    856863        if ( empty( $matches[1] ) ) {
    function bp_setup_nav_menu_item( $menu_item ) { 
    904911        } else {
    905912                $current = bp_get_requested_url();
    906913                if ( strpos( $current, $menu_item->url ) !== false ) {
    907                         $menu_item->classes[] = 'current_page_item';
     914                        if ( is_array( $menu_item->classes ) ) {
     915                                $menu_item->classes[] = 'current_page_item';
     916                        } else {
     917                                $menu_item->classes = array( 'current_page_item' );
     918                        }
    908919                }
    909920        }
    910921
    function bp_setup_nav_menu_item( $menu_item ) { 
    913924add_filter( 'wp_setup_nav_menu_item', 'bp_setup_nav_menu_item', 10, 1 );
    914925
    915926/**
     927 * Populate BuddyPress item navs for the customizer
     928 *
     929 * NB: this will only work if WP_Customize_Nav_Menus->ajax_load_available_items()
     930 * includes a filter to let plugins get specific item navs.
     931 * @see WordPress ticket https://core.trac.wordpress.org/ticket/32708
     932 *
     933 * @since  BuddyPress (?)
     934 *
     935 * @param  array   $items an empty array
     936 * @param  string  $type  the requested type
     937 * @param  integer $page  the page num being requested
     938 * @return array          a list of bp nav items structured for the customizer
     939 */
     940function bp_customizer_nav_menus_get_items( $items =  array(), $type = '', $page = 0 ) {
     941        if ( 0 !== $page ) {
     942                return $items;
     943        }
     944
     945        if ( 'bp_loggedin_nav' === $type ) {
     946                $bp_items = bp_nav_menu_get_loggedin_pages();
     947        } elseif( 'bp_loggedout_nav' === $type ) {
     948                $bp_items = bp_nav_menu_get_loggedout_pages();
     949        } else {
     950                return $items;
     951        }
     952
     953        foreach( $bp_items as $bp_item ) {
     954                $items[] = array(
     955                        'id'         => "bp-{$bp_item->post_excerpt}",
     956                        'title'      => html_entity_decode( $bp_item->post_title, ENT_QUOTES, get_bloginfo( 'charset' ) ),
     957                        'type'       => 'custom',
     958                        'url'        => esc_url_raw( $bp_item->guid ),
     959                        'classes'    => array( 'bp-menu', "bp-{$bp_item->post_excerpt}-nav" ),
     960                        'type_label' => __( 'BuddyPress nav', 'buddypress' ),
     961                        'object'     => 'bp_nav',
     962                        'object_id'  => -1,
     963                );
     964        }
     965
     966        return $items;
     967}
     968add_filter( 'customizer_nav_menus_bp_nav_get_items', 'bp_customizer_nav_menus_get_items', 10, 3 );
     969
     970/**
     971 * Set BuddyPress item navs for the customizer
     972 *
     973 * NB: this will only work if WP_Customize_Nav_Menus->available_item_types()
     974 * includes a filter to let plugins set specific item navs.
     975 * @see WordPress ticket https://core.trac.wordpress.org/ticket/32708
     976 *
     977 * @since  BuddyPress (?)
     978 *
     979 * @param  array $item_types an associative array structured for the customizer
     980 */
     981function bp_customizer_nav_menus_set_item_types( $item_types = array() ) {
     982        $item_types['bp_nav'] = array(
     983                'bp_loggedin_nav' => array(
     984                        'label' => __( 'BuddyPress (logged-in)', 'buddypress' ),
     985                        'name'  => 'bp_loggedin_nav',
     986                        'type'  => 'bp_nav',
     987                ),
     988                'bp_loggedout_nav' => array(
     989                        'label' => __( 'BuddyPress (logged-out)', 'buddypress' ),
     990                        'name'  => 'bp_loggedout_nav',
     991                        'type'  => 'bp_nav',
     992                ),
     993        );
     994
     995        return $item_types;
     996}
     997add_filter( 'customizer_nav_menus_item_types', 'bp_customizer_nav_menus_set_item_types', 10, 1 );
     998
     999/**
    9161000 * Filter SQL query strings to swap out the 'meta_id' column.
    9171001 *
    9181002 * WordPress uses the meta_id column for commentmeta and postmeta, and so