Skip to:
Content

BuddyPress.org

Changeset 13536


Ignore:
Timestamp:
07/30/2023 07:30:39 AM (3 years ago)
Author:
imath
Message:

Improve BuddyPress 12.0.0 upgrade tasks

  1. Only perform the BP Rewrites API & Legacy Widgets upgrade tasks when the BP Classic plugin is not active.
  2. Add an action hook in case 3rd party plugins need to perform specific tasks once BP has been updated to 12.0.0.

Fixes #8955
Closes https://github.com/buddypress/buddypress/pull/145

File:
1 edited

Legend:

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

    r13533 r13536  
    802802 *
    803803 * - Swith directory page post type from "page" to "buddypress".
     804 * - Remove Legacy Widgets option.
     805 * - Add the default community visibility value.
    804806 *
    805807 * @since 12.0.0
    806808 */
    807809function bp_update_to_12_0() {
    808         $post_type = bp_core_get_directory_post_type();
    809 
    810         if ( 'page' !== $post_type ) {
    811                 $directory_pages   = bp_core_get_directory_pages();
    812                 $nav_menu_item_ids = array();
    813 
    814                 // Do not check post slugs nor post types.
    815                 remove_filter( 'wp_unique_post_slug', 'bp_core_set_unique_directory_page_slug', 10 );
    816 
    817                 // Update Directory pages post types.
    818                 foreach ( $directory_pages as $directory_page ) {
    819                         $nav_menu_item_ids[] = $directory_page->id;
    820 
    821                         // Switch the post type.
    822                         wp_update_post(
    823                                 array(
    824                                         'ID'          => $directory_page->id,
    825                                         'post_type'   => $post_type,
    826                                         'post_status' => 'publish',
    827                                 )
    828                         );
    829                 }
    830 
    831                 // Update nav menu items!
    832                 $nav_menus = wp_get_nav_menus( array( 'hide_empty' => true ) );
    833                 foreach ( $nav_menus as $nav_menu ) {
    834                         $items = wp_get_nav_menu_items( $nav_menu->term_id );
    835                         foreach ( $items as $item ) {
    836                                 if ( 'page' !== $item->object || ! in_array( $item->object_id, $nav_menu_item_ids, true ) ) {
    837                                         continue;
    838                                 }
    839 
    840                                 wp_update_nav_menu_item(
    841                                         $nav_menu->term_id,
    842                                         $item->ID,
     810        /*
     811         * Only perform the BP Rewrites API & Legacy Widgets upgrade tasks
     812         * when the BP Classic plugin is not active.
     813         */
     814        if ( ! function_exists( 'bp_classic' ) ) {
     815                $post_type = bp_core_get_directory_post_type();
     816
     817                if ( 'page' !== $post_type ) {
     818                        $directory_pages   = bp_core_get_directory_pages();
     819                        $nav_menu_item_ids = array();
     820
     821                        // Do not check post slugs nor post types.
     822                        remove_filter( 'wp_unique_post_slug', 'bp_core_set_unique_directory_page_slug', 10 );
     823
     824                        // Update Directory pages post types.
     825                        foreach ( $directory_pages as $directory_page ) {
     826                                $nav_menu_item_ids[] = $directory_page->id;
     827
     828                                // Switch the post type.
     829                                wp_update_post(
    843830                                        array(
    844                                                 'menu-item-db-id'       => $item->db_id,
    845                                                 'menu-item-object-id'   => $item->object_id,
    846                                                 'menu-item-object'      => $post_type,
    847                                                 'menu-item-parent-id'   => $item->menu_item_parent,
    848                                                 'menu-item-position'    => $item->menu_order,
    849                                                 'menu-item-type'        => 'post_type',
    850                                                 'menu-item-title'       => $item->title,
    851                                                 'menu-item-url'         => $item->url,
    852                                                 'menu-item-description' => $item->description,
    853                                                 'menu-item-attr-title'  => $item->attr_title,
    854                                                 'menu-item-target'      => $item->target,
    855                                                 'menu-item-classes'     => implode( ' ', (array) $item->classes ),
    856                                                 'menu-item-xfn'         => $item->xfn,
    857                                                 'menu-item-status'      => 'publish',
     831                                                'ID'          => $directory_page->id,
     832                                                'post_type'   => $post_type,
     833                                                'post_status' => 'publish',
    858834                                        )
    859835                                );
    860836                        }
    861                 }
    862 
    863                 // Finally make sure to rebuilt permalinks at next page load.
    864                 bp_delete_rewrite_rules();
    865         }
    866 
    867         // Widgets.
    868         $widget_options = array(
    869                 'widget_bp_core_login_widget',
    870                 'widget_bp_core_members_widget',
    871                 'widget_bp_core_whos_online_widget',
    872                 'widget_bp_core_recently_active_widget',
    873                 'widget_bp_groups_widget',
    874                 'widget_bp_messages_sitewide_notices_widget',
    875         );
    876 
    877         foreach ( $widget_options as $widget_option ) {
    878                 bp_delete_option( $widget_option );
     837
     838                        // Update nav menu items!
     839                        $nav_menus = wp_get_nav_menus( array( 'hide_empty' => true ) );
     840                        foreach ( $nav_menus as $nav_menu ) {
     841                                $items = wp_get_nav_menu_items( $nav_menu->term_id );
     842                                foreach ( $items as $item ) {
     843                                        if ( 'page' !== $item->object || ! in_array( $item->object_id, $nav_menu_item_ids, true ) ) {
     844                                                continue;
     845                                        }
     846
     847                                        wp_update_nav_menu_item(
     848                                                $nav_menu->term_id,
     849                                                $item->ID,
     850                                                array(
     851                                                        'menu-item-db-id'       => $item->db_id,
     852                                                        'menu-item-object-id'   => $item->object_id,
     853                                                        'menu-item-object'      => $post_type,
     854                                                        'menu-item-parent-id'   => $item->menu_item_parent,
     855                                                        'menu-item-position'    => $item->menu_order,
     856                                                        'menu-item-type'        => 'post_type',
     857                                                        'menu-item-title'       => $item->title,
     858                                                        'menu-item-url'         => $item->url,
     859                                                        'menu-item-description' => $item->description,
     860                                                        'menu-item-attr-title'  => $item->attr_title,
     861                                                        'menu-item-target'      => $item->target,
     862                                                        'menu-item-classes'     => implode( ' ', (array) $item->classes ),
     863                                                        'menu-item-xfn'         => $item->xfn,
     864                                                        'menu-item-status'      => 'publish',
     865                                                )
     866                                        );
     867                                }
     868                        }
     869
     870                        // Finally make sure to rebuilt permalinks at next page load.
     871                        bp_delete_rewrite_rules();
     872                }
     873
     874                // Widgets.
     875                $widget_options = array(
     876                        'widget_bp_core_login_widget',
     877                        'widget_bp_core_members_widget',
     878                        'widget_bp_core_whos_online_widget',
     879                        'widget_bp_core_recently_active_widget',
     880                        'widget_bp_groups_widget',
     881                        'widget_bp_messages_sitewide_notices_widget',
     882                );
     883
     884                foreach ( $widget_options as $widget_option ) {
     885                        bp_delete_option( $widget_option );
     886                }
    879887        }
    880888
    881889        // Community visibility.
    882890        bp_update_option( '_bp_community_visibility', array( 'global' => 'anyone' ) );
     891
     892        /**
     893         * Fires once BuddyPress achieved 12.0 upgrading tasks.
     894         *
     895         * @since 12.0.0
     896         */
     897        do_action( 'bp_updated_to_12_0' );
    883898}
    884899
Note: See TracChangeset for help on using the changeset viewer.