Skip to:
Content

BuddyPress.org

Changeset 4556


Ignore:
Timestamp:
06/24/2011 05:12:13 PM (14 years ago)
Author:
boonebgorges
Message:

Ensures that upgrades from BP 1.2.x are recognized as upgrades, and previous component settings are saved. Fixes #3153. Props cnorris23

Location:
trunk
Files:
4 edited

Legend:

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

    r4487 r4556  
    1515
    1616    function __construct() {
    17         // Look for current DB version
    18         if ( !$this->database_version = get_site_option( 'bp-db-version' ) ) {
    19             if ( $this->database_version = get_option( 'bp-db-version' ) ) {
    20                 $this->is_network_activate = true;
    21             } else {
    22                 if ( !$this->current_step() ) {
    23                     setcookie( 'bp-wizard-step', 0, time() + 60 * 60 * 24, COOKIEPATH );
    24                     $_COOKIE['bp-wizard-step'] = 0;
    25                 }
    26             }
     17        global $bp;
     18
     19        // Ensure that we have access to some utility functions
     20        include( BP_PLUGIN_DIR . '/bp-core/bp-core-functions.php' );
     21
     22        // Get current DB version
     23        $this->database_version = !empty( $bp->database_version ) ? (int) $bp->database_version : 0;
     24
     25        if ( !empty( $bp->is_network_activate ) ) {
     26            $this->is_network_activate = $bp->is_network_activate;
     27
     28        } elseif ( !$this->current_step() ) {
     29            setcookie( 'bp-wizard-step', 0, time() + 60 * 60 * 24, COOKIEPATH );
     30            $_COOKIE['bp-wizard-step'] = 0;
    2731        }
    2832
    2933        $this->new_version  = constant( 'BP_DB_VERSION' );
    30         $this->setup_type   = ( empty( $this->database_version ) && !(int)get_site_option( 'bp-core-db-version' ) ) ? 'install' : 'update';
     34        $this->setup_type   = !empty( $bp->maintenance_mode ) ? $bp->maintenance_mode : '';
    3135        $this->current_step = $this->current_step();
     36
     37        // Remove the admin menu while we update/install
     38        remove_action( bp_core_admin_hook(), 'bp_core_add_admin_menu', 9 );
    3239
    3340        // Call the save method that will save data and modify $current_step
     
    7279                $steps[] = __( 'Multisite Update', 'buddypress' );
    7380
    74             if ( $this->database_version < $this->new_version )
     81            if ( $this->database_version < (int) $this->new_version )
    7582                $steps[] = __( 'Database Update', 'buddypress' );
    7683
    77             if ( $this->database_version < 1225 || !bp_core_get_page_meta() )
     84            if ( $this->database_version < 1801 || !bp_core_get_page_meta() )
    7885                $steps[] = __( 'Pages', 'buddypress' );
    7986
     
    265272
    266273        // Call up old bp-pages to see if a page has been previously linked to Blogs
    267         $page_blog_id       = is_multisite() && defined( 'BP_ENABLE_MULTIBLOG' ) && BP_ENABLE_MULTIBLOG ? get_current_blog_id() : BP_ROOT_BLOG;
    268         $existing_pages_data    = get_blog_option( $page_blog_id, 'bp-pages' );
    269         $existing_pages     = $existing_pages_data[$page_blog_id];
     274        $page_blog_id        = is_multisite() && defined( 'BP_ENABLE_MULTIBLOG' ) && BP_ENABLE_MULTIBLOG ? get_current_blog_id() : BP_ROOT_BLOG;
     275        $existing_pages_data = get_blog_option( $page_blog_id, 'bp-pages' );
     276        $existing_pages      = $existing_pages_data[$page_blog_id];
    270277
    271278        if ( !empty( $existing_pages['blogs'] ) )
     
    719726
    720727    function step_db_update_save() {
     728        global $bp;
     729
    721730        if ( isset( $_POST['submit'] ) ) {
    722731            check_admin_referer( 'bpwizard_db_update' );
     
    725734            bp_core_install();
    726735
    727             if ( $this->database_version < 1225 )
     736            if ( $this->database_version < 1801 )
    728737                $this->update_1_3();
     738
     739            // Update the active components option early if we're updating
     740            if ( 'update' == $this->setup_type )
     741                update_site_option( 'bp-active-components', $bp->active_components );
    729742
    730743            return true;
     
    740753            check_admin_referer( 'bpwizard_ms_update' );
    741754
    742             if ( !$active_components = get_option( 'bp-active-components' ) )
     755            if ( !$active_components = get_site_option( 'bp-active-components' ) )
    743756                $active_components = array();
    744757
    745758            // Transfer important settings from blog options to site options
    746759            $options = array(
    747                 'bp-db-version'     => $this->database_version,
    748                 'bp-active-components'  => $active_components,
    749                 'avatar-default'    => get_option( 'avatar-default' )
     760                'bp-db-version'        => $this->database_version,
     761                'bp-active-components' => $active_components,
     762                'avatar-default'       => get_option( 'avatar-default' )
    750763            );
    751764            bp_core_activate_site_options( $options );
     
    759772
    760773                // Move bp-pages data from the blog options table to site options
    761                 $page_blog_id       = is_multisite() && defined( 'BP_ENABLE_MULTIBLOG' ) && BP_ENABLE_MULTIBLOG ? get_current_blog_id() : BP_ROOT_BLOG;
    762                 $existing_pages_data    = get_blog_option( $page_blog_id, 'bp-pages' );
    763                 $existing_pages     = $existing_pages_data[$page_blog_id];
    764 
    765                 $bp_pages           = $this->setup_pages( (array)$_POST['bp_pages'] );
    766                 $bp_pages           = array_merge( (array)$existing_pages, (array)$bp_pages );
     774                $page_blog_id        = is_multisite() && defined( 'BP_ENABLE_MULTIBLOG' ) && BP_ENABLE_MULTIBLOG ? get_current_blog_id() : BP_ROOT_BLOG;
     775                $existing_pages_data = get_blog_option( $page_blog_id, 'bp-pages' );
     776                $existing_pages      = $existing_pages_data[$page_blog_id];
     777
     778                $bp_pages            = $this->setup_pages( (array)$_POST['bp_pages'] );
     779                $bp_pages            = array_merge( (array)$existing_pages, (array)$bp_pages );
    767780
    768781                $existing_pages_data[$page_blog_id] = $bp_pages;
     
    822835                wp_delete_post( $page_id, true );
    823836
    824             $blog_pages     = $this->setup_pages( (array)$_POST['bp_pages'] );
    825             $page_blog_id   = is_multisite() && defined( 'BP_ENABLE_MULTIBLOG' ) && BP_ENABLE_MULTIBLOG ? get_current_blog_id() : BP_ROOT_BLOG;
    826             $bp_pages   = array( $page_blog_id => $blog_pages );
     837            $blog_pages   = $this->setup_pages( (array)$_POST['bp_pages'] );
     838            $page_blog_id = is_multisite() && defined( 'BP_ENABLE_MULTIBLOG' ) && BP_ENABLE_MULTIBLOG ? get_current_blog_id() : BP_ROOT_BLOG;
     839            $bp_pages     = array( $page_blog_id => $blog_pages );
    827840
    828841            update_site_option( 'bp-pages', $bp_pages );
     
    9951008
    9961009            // Update the DB version in the database
    997             update_site_option( 'bp-db-version', constant( 'BP_DB_VERSION' ) );
     1010            update_site_option( 'bp-db-version', $this->new_version );
    9981011            delete_site_option( 'bp-core-db-version' );
    9991012
     
    11811194 */
    11821195function bp_core_update_add_admin_menu() {
    1183     global $bp, $bp_wizard;
     1196    global $bp_wizard;
    11841197
    11851198    // Only load this version of the menu if this is an upgrade or a new installation
    1186     if ( empty( $bp->maintenence_mode ) )
     1199    if ( empty( $bp_wizard->setup_type ) )
    11871200        return false;
    11881201
     
    11901203        return false;
    11911204
    1192     if ( '' == get_site_option( 'bp-db-version' ) && !(int)get_site_option( 'bp-core-db-version' ) && !$bp_wizard->is_network_activate )
     1205    if ( 'install' == $bp_wizard->setup_type )
    11931206        $status = __( 'Setup', 'buddypress' );
    11941207    else
     
    12781291 */
    12791292function bp_core_update_nag() {
    1280     global $bp, $pagenow;
     1293    global $bp_wizard, $pagenow;
     1294
     1295    if ( empty( $bp_wizard->setup_type ) )
     1296        return;
    12811297
    12821298    if ( !is_super_admin() )
     
    12881304    $url = bp_core_update_do_network_admin() ? network_admin_url( 'admin.php?page=bp-wizard' ) : admin_url( 'admin.php?page=bp-wizard' );
    12891305
    1290     switch( $bp->maintenence_mode ) {
     1306    switch( $bp_wizard->setup_type ) {
    12911307        case 'update':
    12921308            $msg = sprintf( __( 'BuddyPress has been updated! Please run the <a href="%s">update wizard</a>.', 'buddypress' ), $url );
  • trunk/bp-core/bp-core-functions.php

    r4506 r4556  
    308308
    309309    // Don't show these messages during setup or upgrade
    310     if ( isset( $bp->maintenence_mode ) )
     310    if ( isset( $bp->maintenance_mode ) )
    311311        return;
    312312
  • trunk/bp-core/bp-core-loader.php

    r4488 r4556  
    5454        /** Components ********************************************************/
    5555
    56         // Set the included and optional components
    57         $bp->optional_components    = apply_filters( 'bp_optional_components',    array( 'activity', 'blogs', 'forums', 'friends', 'groups', 'messages', 'settings', 'xprofile', ) );
     56        // Set the included and optional components.
     57        $bp->optional_components = array( 'activity', 'forums', 'friends', 'groups', 'messages', 'settings', 'xprofile', );
     58
     59        // Blogs component only available for multisite
     60        if ( is_multisite() )
     61            $bp->optional_components[] = 'blogs';
     62
     63        $bp->optional_components    = apply_filters( 'bp_optional_components', $bp->optional_components );
    5864
    5965        // Set the required components
    60         $bp->required_components    = apply_filters( 'bp_required_components',    array( 'members', ) );
     66        $bp->required_components    = apply_filters( 'bp_required_components', array( 'members' ) );
    6167
    6268        // Get a list of activated components
    6369        if ( $active_components = get_site_option( 'bp-active-components' ) ) {
    64             $bp->active_components      = apply_filters( 'bp_active_components',      $active_components );
     70            $bp->active_components      = apply_filters( 'bp_active_components', $active_components );
    6571            $bp->deactivated_components = apply_filters( 'bp_deactivated_components', array_values( array_diff( array_values( array_merge( $bp->optional_components, $bp->required_components ) ), array_keys( $bp->active_components ) ) ) );
    6672
     
    6874        } elseif ( $deactivated_components = get_site_option( 'bp-deactivated-components' ) ) {
    6975            // Trim off namespace and filename
    70             foreach ( $deactivated_components as $component => $value )
     76            foreach ( (array) $deactivated_components as $component => $value )
    7177                $trimmed[] = str_replace( '.php', '', str_replace( 'bp-', '', $component ) );
    7278
     
    7581
    7682            // Setup the active components
    77             $active_components          = array_flip( array_diff( array_values( array_merge( $bp->optional_components, $bp->required_components ) ), array_values( $bp->deactivated_components ) ) );
     83            $active_components     = array_flip( array_diff( array_values( array_merge( $bp->optional_components, $bp->required_components ) ), array_values( $bp->deactivated_components ) ) );
    7884
    7985            // Loop through active components and set the values
    80             foreach( $active_components as $component => $value )
    81                 $bp->active_components[$component] = 1;
     86            $bp->active_components = array_map( '__return_true', $active_components );
    8287
    8388            // Set the active component global
    84             $bp->active_components      = apply_filters( 'bp_active_components', $bp->active_components );
     89            $bp->active_components = apply_filters( 'bp_active_components', $bp->active_components );
     90
     91        // Default to all components active
     92        } else {
     93            // Set globals
     94            $bp->deactivated_components = array();
     95
     96            // Setup the active components
     97            $active_components     = array_flip( array_values( array_merge( $bp->optional_components, $bp->required_components ) ) );
     98
     99            // Loop through active components and set the values
     100            $bp->active_components = array_map( '__return_true', $active_components );
     101
     102            // Set the active component global
     103            $bp->active_components = apply_filters( 'bp_active_components', $bp->active_components );
    85104        }
    86105
  • trunk/bp-loader.php

    r4444 r4556  
    6060if ( !$bp->database_version = get_site_option( 'bp-db-version' ) ) {
    6161    if ( $bp->database_version = get_option( 'bp-db-version' ) ) {
    62         $bp->is_ms_activate = 1;
     62        $bp->is_network_activate = 1;
    6363    } else {
    6464        $bp->database_version = get_site_option( 'bp-core-db-version' );  // BP 1.2 option
     
    6868// This is a new installation.
    6969if ( empty( $bp->database_version ) ) {
    70     $bp->maintenence_mode = 'install';
     70    $bp->maintenance_mode = 'install';
    7171    require_once( WP_PLUGIN_DIR . '/buddypress/bp-core/admin/bp-core-update.php' );
    7272
     
    7777
    7878    // Check if an update is required
    79     if ( (int)$bp->database_version < (int)constant( 'BP_DB_VERSION' ) || isset( $bp->is_ms_activate ) ) {
    80         $bp->maintenence_mode = 'update';
     79    if ( (int)$bp->database_version < (int)constant( 'BP_DB_VERSION' ) || isset( $bp->is_network_activate ) ) {
     80        $bp->maintenance_mode = 'update';
    8181        require_once( WP_PLUGIN_DIR . '/buddypress/bp-core/admin/bp-core-update.php' );
    8282    }
Note: See TracChangeset for help on using the changeset viewer.