Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
03/10/2015 03:23:36 PM (10 years ago)
Author:
boonebgorges
Message:

bp_core_get_directory_page_ids() should skip bp_is_active() check in save context.

In [9177], a bp_is_active() check was added to bp_core_get_directory_page_ids()
such that the function would not return page mappings for inactive components.
This change caused problems for custom components, as the bp_is_active()
check didn't always pass for components that didn't manually set themselves in
the active_components array. [9553] and [9555] addressed this problem by only
filtering out packaged components. See #6244. But this fix was not truly
general, as it still resulted in the deletion of bp-pages entries related to
third-party deactivated components when saving the page mapping settings.

This changeset introduces a more general fix, by distinguishing between two
different use "contexts" of bp_core_get_directory_page_ids():

  • Read-only - When pulling up page IDs for display or for URI parsing, deactivated components should be ignored.
  • Save - When modifying the bp-pages array stored in the database, we should be working with raw page data, including deactivated components.

The new $status parameter for bp_core_get_directory_page_ids() addresses
this distinction (possible values 'all' and 'active'). We then pass 'all' as
required in BP - namely, when modifying the bp-pages setting. This change
supercedes the fixes from #6244.

Props dtc7240, boonebgorges.
Fixes #6280.

File:
1 edited

Legend:

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

    r9605 r9608  
    310310    }
    311311
    312     $current_components       = buddypress()->active_components;
    313     $packaged_components      = array_flip( bp_core_get_packaged_component_ids() );
    314     $custom_active_components = array_diff_key( $current_components, $packaged_components );
     312    $current_components = buddypress()->active_components;
    315313
    316314    switch ( $current_action ) {
     
    320318                if ( ! isset( $submitted[ $retired_component ] ) ) {
    321319                    unset( $current_components[ $retired_component ] );
    322 
    323                     // Make sure custom components does not contain a retired component
    324                     if ( isset( $custom_active_components[ $retired_component ] ) ) {
    325                         unset( $custom_active_components[ $retired_component ] );
    326                     }
    327320                }
    328321            }
     
    340333    }
    341334
    342     // Active components is the list of packaged and custom components
    343     return array_merge( $components, $custom_active_components );
     335    return $components;
    344336}
    345337
Note: See TracChangeset for help on using the changeset viewer.