Sid Gifari File Manager
🏠 Root
/
home
/
genremedia08
/
thepassage.overlookedtracks.com
/
wp-content9
/
plugins
/
buddypress
/
bp-core
/
admin
/
Editing: bp-core-admin-components.php
<?php /** * BuddyPress Admin Component Functions. * * @package BuddyPress * @subpackage CoreAdministration * @since 2.3.0 */ // Exit if accessed directly. defined( 'ABSPATH' ) || exit; /** * Renders the Component Setup admin panel. * * @since 1.6.0 */ function bp_core_admin_components_settings() { bp_core_admin_tabbed_screen_header( __( 'BuddyPress Settings', 'buddypress' ), __( 'Components', 'buddypress' ) ); ?> <div class="buddypress-body"> <form action="" method="post" id="bp-admin-component-form"> <?php bp_core_admin_components_options(); ?> <p class="submit clear"> <input class="button-primary" type="submit" name="bp-admin-component-submit" id="bp-admin-component-submit" value="<?php esc_attr_e( 'Save Settings', 'buddypress' ); ?>"/> </p> <?php wp_nonce_field( 'bp-admin-component-setup' ); ?> </form> </div> <?php } /** * Creates reusable markup for component setup on the Components and Pages dashboard panel. * * @since 1.6.0 * * @todo Use settings API */ function bp_core_admin_components_options() { // Declare local variables. $deactivated_components = array(); /** * Filters the array of available components. * * @since 1.5.0 * * @param mixed $active_components Active components. */ $active_components = apply_filters( 'bp_active_components', bp_get_option( 'bp-active-components' ) ); // The default components (if none are previously selected). $default_components = array( 'xprofile' => array( 'title' => __( 'Extended Profiles', 'buddypress' ), 'description' => __( 'Customize your community with fully editable profile fields that allow your users to describe themselves.', 'buddypress' ), ), 'settings' => array( 'title' => __( 'Account Settings', 'buddypress' ), 'description' => __( 'Allow your users to modify their account and notification settings directly from within their profiles.', 'buddypress' ), ), 'notifications' => array( 'title' => __( 'Notifications', 'buddypress' ), 'description' => __( 'Notify members of relevant activity with a toolbar bubble and/or via email, and allow them to customize their notification settings.', 'buddypress' ), ), ); $optional_components = bp_core_admin_get_components( 'optional' ); $required_components = bp_core_admin_get_components( 'required' ); $retired_components = bp_core_admin_get_components( 'retired' ); // Merge optional and required together. $all_components = $optional_components + $required_components; // If this is an upgrade from before BuddyPress 1.5, we'll have to convert // deactivated components into activated ones. if ( empty( $active_components ) ) { $deactivated_components = bp_get_option( 'bp-deactivated-components' ); if ( ! empty( $deactivated_components ) ) { // Trim off namespace and filename. $trimmed = array(); foreach ( array_keys( (array) $deactivated_components ) as $component ) { $trimmed[] = str_replace( '.php', '', str_replace( 'bp-', '', $component ) ); } // Loop through the optional components to create an active component array. foreach ( array_keys( (array) $optional_components ) as $ocomponent ) { if ( ! in_array( $ocomponent, $trimmed, true ) ) { $active_components[ $ocomponent ] = 1; } } } } // On new install, set active components to default. if ( empty( $active_components ) ) { $active_components = $default_components; } // Core component is always active. $active_components['core'] = $all_components['core']; $inactive_components = array_diff( array_keys( $all_components ), array_keys( $active_components ) ); /** Display ************************************************************** */ // Get the total count of all plugins. $all_count = count( $all_components ); $page = bp_core_do_network_admin() ? 'settings.php' : 'options-general.php'; $action = ! empty( $_GET['action'] ) ? $_GET['action'] : 'all'; switch ( $action ) { case 'all': $current_components = $all_components; break; case 'active': foreach ( array_keys( $active_components ) as $component ) { $current_components[ $component ] = $all_components[ $component ]; } break; case 'inactive': foreach ( $inactive_components as $component ) { $current_components[ $component ] = $all_components[ $component ]; } break; case 'mustuse': $current_components = $required_components; break; case 'retired': $current_components = $retired_components; break; } $component_views = array( array( 'action' => 'all', 'view' => sprintf( /* translators: %s: the number of installed components */ _nx( 'All <span class="count">(%s)</span>', 'All <span class="count">(%s)</span>', $all_count, 'plugins', 'buddypress' ), number_format_i18n( $all_count ) ), ), array( 'action' => 'active', 'view' => sprintf( /* translators: %s: the number of active components */ _n( 'Active <span class="count">(%s)</span>', 'Active <span class="count">(%s)</span>', count( $active_components ), 'buddypress' ), number_format_i18n( count( $active_components ) ) ), ), array( 'action' => 'inactive', 'view' => sprintf( /* translators: %s: the number of inactive components */ _n( 'Inactive <span class="count">(%s)</span>', 'Inactive <span class="count">(%s)</span>', count( $inactive_components ), 'buddypress' ), number_format_i18n( count( $inactive_components ) ) ), ), array( 'action' => 'mustuse', 'view' => sprintf( /* translators: %s: the number of must-Use components */ _n( 'Must-Use <span class="count">(%s)</span>', 'Must-Use <span class="count">(%s)</span>', count( $required_components ), 'buddypress' ), number_format_i18n( count( $required_components ) ) ), ), array( 'action' => 'retired', 'view' => sprintf( /* translators: %s: the number of retired components */ _n( 'Retired <span class="count">(%s)</span>', 'Retired <span class="count">(%s)</span>', count( $retired_components ), 'buddypress' ), number_format_i18n( count( $retired_components ) ) ), ), ); $component_anchor_url = function ( $component_action, $component_view ) use ( $page, $action ) { $component_url = add_query_arg( array( 'page' => 'bp-components', 'action' => $component_action, ), bp_get_admin_url( $page ) ); $css = $component_action === $action ? 'class="current"' : ''; return sprintf( '<a href="%s" %s>%s</a>', esc_url( $component_url ), $css, wp_kses( $component_view, array( 'span' => array( 'class' => true ) ) ) ); } ?> <h3 class="screen-reader-text"> <?php esc_html_e( 'Filter components list', 'buddypress' ); ?> </h3> <ul class="subsubsub"> <?php foreach ( $component_views as $component_view ) : ?> <li> <?php echo $component_anchor_url( $component_view['action'], $component_view['view'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> <?php echo 'retired' !== $component_view['action'] ? ' |' : ''; ?> </li> <?php endforeach; ?> </ul> <h3 class="screen-reader-text"> <?php esc_html_e( 'Components list', 'buddypress' ); ?> </h3> <table class="wp-list-table widefat plugins"> <thead> <tr> <td id="cb" class="manage-column column-cb check-column"><input id="cb-select-all-1" type="checkbox" <?php checked( empty( $inactive_components ) ); ?>> <label class="screen-reader-text" for="cb-select-all-1"> <?php /* translators: accessibility text */ esc_html_e( 'Enable or disable all optional components in bulk', 'buddypress' ); ?> </label> </td> <th scope="col" id="name" class="manage-column column-title column-primary"><?php esc_html_e( 'Component', 'buddypress' ); ?></th> <th scope="col" id="description" class="manage-column column-description"><?php esc_html_e( 'Description', 'buddypress' ); ?></th> </tr> </thead> <tbody id="the-list"> <?php if ( ! empty( $current_components ) ) : ?> <?php foreach ( $current_components as $name => $labels ) : ?> <?php if ( ! in_array( $name, array( 'core', 'members' ), true ) ) { $class = isset( $active_components[ esc_attr( $name ) ] ) ? 'active' : 'inactive'; } else { $class = 'active'; } ?> <tr id="<?php echo esc_attr( $name ); ?>" class="<?php echo esc_attr( $name ) . ' ' . esc_attr( $class ); ?>"> <th scope="row" class="check-column"> <?php if ( ! in_array( $name, array( 'core', 'members' ), true ) ) : ?> <input type="checkbox" id="<?php echo esc_attr( "bp_components[$name]" ); ?>" name="<?php echo esc_attr( "bp_components[$name]" ); ?>" value="1"<?php checked( isset( $active_components[ esc_attr( $name ) ] ) ); ?> /> <label for="<?php echo esc_attr( "bp_components[$name]" ); ?>" class="screen-reader-text"> <?php /* translators: accessibility text */ printf( esc_html__( 'Select %s', 'buddypress' ), esc_html( $labels['title'] ) ); ?> </label> <?php endif; ?> </th> <td class="plugin-title column-primary"> <label for="<?php echo esc_attr( "bp_components[$name]" ); ?>"> <span aria-hidden="true"></span> <strong><?php echo esc_html( $labels['title'] ); ?></strong> </label> </td> <td class="column-description desc"> <div class="plugin-description"> <p> <?php echo wp_kses( $labels['description'], array( 'a' => array( 'href' => true, ), 'del' => true, 'span' => array( 'class' => true, ), ) ); ?> </p> </div> </td> </tr> <?php endforeach ?> <?php else : ?> <tr class="no-items"> <td class="colspanchange" colspan="3"><?php esc_html_e( 'No components found.', 'buddypress' ); ?></td> </tr> <?php endif; ?> </tbody> <tfoot> <tr> <td class="manage-column column-cb check-column"><input id="cb-select-all-2" type="checkbox" <?php checked( empty( $inactive_components ) ); ?>> <label class="screen-reader-text" for="cb-select-all-2"> <?php /* translators: accessibility text */ esc_html_e( 'Enable or disable all optional components in bulk', 'buddypress' ); ?> </label> </td> <th class="manage-column column-title column-primary"><?php esc_html_e( 'Component', 'buddypress' ); ?></th> <th class="manage-column column-description"><?php esc_html_e( 'Description', 'buddypress' ); ?></th> </tr> </tfoot> </table> <input type="hidden" name="bp_components[members]" value="1" /> <?php } /** * 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 ); // Force permalinks to be refreshed at next page load if one of the components is using a directory page. if ( array_intersect_key( $bp->active_components, bp_core_get_directory_page_ids( 'active' ) ) ) { bp_delete_rewrite_rules(); } } // Where are we redirecting to? $base_url = bp_get_admin_url( add_query_arg( array( 'page' => 'bp-components', 'updated' => 'true', ), 'admin.php' ) ); // Redirect. wp_safe_redirect( $base_url ); exit; } add_action( 'bp_admin_init', 'bp_core_admin_components_settings_handler' ); /** * Calculates the components that should be active after save, based on submitted settings. * * The way that active components must be set after saving your settings must * be calculated differently depending on which of the Components subtabs you * are coming from: * - When coming from All or Active, the submitted checkboxes accurately * reflect the desired active components, so we simply pass them through * - When coming from Inactive, components can only be activated - already * active components will not be passed in the $_POST global. Thus, we must * parse the newly activated components with the already active components * saved in the $bp global * - When activating a Retired component, the situation is similar to Inactive. * - When deactivating a Retired component, no value is passed in the $_POST * global (because the component settings are checkboxes). So, in order to * determine whether a retired component is being deactivated, we retrieve a * list of retired components, and check each one to ensure that its checkbox * is not present, before merging the submitted components with the active * ones. * * @since 1.7.0 * * @param array $submitted This is the array of component settings coming from the POST * global. You should stripslashes_deep() before passing to this function. * @return array The calculated list of component settings */ function bp_core_admin_get_active_components_from_submitted_settings( $submitted ) { $current_action = 'all'; if ( isset( $_GET['action'] ) && in_array( $_GET['action'], array( 'active', 'inactive', 'retired' ), true ) ) { $current_action = $_GET['action']; } $current_components = buddypress()->active_components; switch ( $current_action ) { case 'retired': $retired_components = bp_core_admin_get_components( 'retired' ); foreach ( array_keys( $retired_components ) as $retired_component ) { if ( ! isset( $submitted[ $retired_component ] ) ) { unset( $current_components[ $retired_component ] ); } } // Fall through. case 'inactive': $components = array_merge( $submitted, $current_components ); break; case 'all': case 'active': default: $components = $submitted; break; } return $components; } /** * Return a list of component information. * * We use this information both to build the markup for the admin screens, as * well as to do some processing on settings data submitted from those screens. * * @since 1.7.0 * * @param string $type Optional; Component type to fetch. Defaults to 'all'. * Possible values include 'all', 'optional', 'retired', and 'required'. * @return array Requested components' data. */ function bp_core_admin_get_components( $type = 'all' ) { $components = bp_core_get_components( $type ); /** * Filters the list of component information. * * @since 2.0.0 * * @param array $components Array of component information. * @param string $type Type of component list requested. * Possible values include 'all', 'optional', * 'retired', and 'required'. */ return apply_filters( 'bp_core_admin_get_components', $components, $type ); }
Save
Cancel