/** * 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; }
/** * @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; }