/**
 * Handle saving the Component settings.
 *
 * @since 1.6.0
 *
 * @todo Use settings API when it supports saving network settings
 */
function bp_core_admin_components_settings_handler()
{
    // Bail if not saving settings.
    if (!isset($_POST['bp-admin-component-submit'])) {
        return;
    }
    // Bail if nonce fails.
    if (!check_admin_referer('bp-admin-component-setup')) {
        return;
    }
    // Settings form submitted, now save the settings. First, set active components.
    if (isset($_POST['bp_components'])) {
        // Load up BuddyPress.
        $bp = buddypress();
        // Save settings and upgrade schema.
        require_once ABSPATH . 'wp-admin/includes/upgrade.php';
        require_once $bp->plugin_dir . '/bp-core/admin/bp-core-admin-schema.php';
        $submitted = stripslashes_deep($_POST['bp_components']);
        $bp->active_components = bp_core_admin_get_active_components_from_submitted_settings($submitted);
        bp_core_install($bp->active_components);
        bp_core_add_page_mappings($bp->active_components);
        bp_update_option('bp-active-components', $bp->active_components);
    }
    // Where are we redirecting to?
    $base_url = bp_get_admin_url(add_query_arg(array('page' => 'bp-components', 'updated' => 'true'), 'admin.php'));
    // Redirect.
    wp_redirect($base_url);
    die;
}
示例#2
0
 /**
  * @group BP6244
  * @group bp_core_admin_get_active_components_from_submitted_settings
  */
 public function test_bp_core_admin_get_active_components_from_submitted_settings_should_keep_custom_component_directory_page()
 {
     $bp = buddypress();
     $reset_active_components = $bp->active_components;
     // Create and activate the foo component
     $bp->foo = new BP_Component();
     $bp->foo->id = 'foo';
     $bp->foo->slug = 'foo';
     $bp->foo->name = 'Foo';
     $bp->active_components[$bp->foo->id] = 1;
     $new_page_ids = array($bp->foo->id => $this->factory->post->create(array('post_type' => 'page', 'post_title' => $bp->foo->name, 'post_name' => $bp->foo->slug)));
     $page_ids = array_merge($new_page_ids, (array) bp_core_get_directory_page_ids('all'));
     bp_core_update_directory_page_ids($page_ids);
     $bp->active_components = bp_core_admin_get_active_components_from_submitted_settings($reset_active_components);
     bp_core_add_page_mappings($bp->active_components);
     $this->assertContains($bp->foo->id, array_keys(bp_core_get_directory_page_ids('all')));
     // Reset buddypress() vars
     $bp->active_components = $reset_active_components;
 }