Skip to:
Content

BuddyPress.org

Changeset 6558


Ignore:
Timestamp:
12/04/2012 12:16:42 PM (14 years ago)
Author:
johnjamesjacoby
Message:

See #4671:

  • Round one changes...
  • Remove the cumbersome update wizard and associated CSS and images.
  • Copy "About" and "Credits" pages from bbPress.
  • First pass at default components array.
  • Deprecate some functions, consolidate others.
  • Introduce bp-core/admin/bp-core-actions.php to handle admin sub-actions.
  • More to do here (update script, testing, css/images, etc...)
Location:
trunk
Files:
1 added
5 deleted
10 edited

Legend:

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

    r6343 r6558  
    4444 * Creates reusable markup for component setup on the Components and Pages dashboard panel.
    4545 *
    46  * This markup has been abstracted so that it can be used both during the setup wizard as well as
    47  * when BP has been fully installed.
    48  *
    4946 * @package BuddyPress
    5047 * @since BuddyPress (1.6)
     
    5956        // Declare local variables
    6057        $deactivated_components = array();
    61         $required_components    = array();
    6258        $active_components      = apply_filters( 'bp_active_components', bp_get_option( 'bp-active-components' ) );
     59
     60        // The default components (if none are previously selected)
     61        $default_components = array(
     62                'xprofile' => array(
     63                        'title'       => __( 'Extended Profiles', 'buddypress' ),
     64                        'description' => __( 'Customize your community with fully editable profile fields that allow your users to describe themselves.', 'buddypress' )
     65                )
     66        );
     67
     68        // Required components
     69        $required_components = array(
     70                'core' => array(
     71                        'title'       => __( 'BuddyPress Core', 'buddypress' ),
     72                        'description' => __( 'It&#8216;s what makes <del>time travel</del> BuddyPress possible!', 'buddypress' )
     73                ),
     74                'members' => array(
     75                        'title'       => __( 'Community Members', 'buddypress' ),
     76                        'description' => __( 'Everything in a BuddyPress community revolves around its members.', 'buddypress' )
     77                ),
     78        );
    6379
    6480        // Optional core components
     
    103119        }
    104120
    105         // Required components
    106         $required_components = array(
    107                 'core' => array(
    108                         'title'       => __( 'BuddyPress Core', 'buddypress' ),
    109                         'description' => __( 'It&#8216;s what makes <del>time travel</del> BuddyPress possible!', 'buddypress' )
    110                 ),
    111                 'members' => array(
    112                         'title'       => __( 'Community Members', 'buddypress' ),
    113                         'description' => __( 'Everything in a BuddyPress community revolves around its members.', 'buddypress' )
    114                 ),
    115         );
    116 
    117121        // Merge optional and required together
    118122        $all_components = $optional_components + $required_components;
     
    139143        }
    140144
    141         // On new install, set all components to be active by default
    142         if ( empty( $active_components ) && ( bp_get_maintenance_mode() == 'install' ) ) {
    143                 $active_components = $optional_components;
     145        // On new install, set active components to default
     146        if ( empty( $active_components ) ) {
     147                $active_components = $default_components;
    144148        }
    145149
     
    172176                        $current_components = $required_components;
    173177                        break;
    174         }
    175        
    176         if ( ! bp_get_maintenance_mode() ) : ?>
     178        } ?>
    177179
    178180        <ul class="subsubsub">
     
    182184                <li><a href="<?php echo add_query_arg( array( 'page' => 'bp-components', 'action' => 'mustuse'  ), bp_get_admin_url( $page ) ); ?>" <?php if ( $action === 'mustuse'  ) : ?>class="current"<?php endif; ?>><?php printf( _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 ) ) ); ?></a></li>
    183185        </ul>
    184 
    185         <?php endif; ?>
    186186
    187187        <table class="widefat fixed plugins" cellspacing="0">
     
    291291        }
    292292}
    293 add_action( 'admin_init', 'bp_core_admin_components_settings_handler' );
     293add_action( 'bp_admin_init', 'bp_core_admin_components_settings_handler' );
  • trunk/bp-core/admin/bp-core-functions.php

    r6499 r6558  
    3737function bp_core_admin_backpat_menu() {
    3838        global $_parent_pages, $_registered_pages, $submenu;
    39 
    40         // Don't do anything if a BP upgrade is in progress, or if the bp-wizard is in progress.
    41         if ( defined( 'BP_IS_UPGRADE' ) && BP_IS_UPGRADE || empty( $submenu['bp-general-settings'] ) )
    42                 return;
    4339
    4440        /**
     
    4743         * 'bp-general-settings' menu, it will only contain one item. Kill it.
    4844         */
    49         if ( 1 == count( $submenu['bp-general-settings'] ) ) {
    50 
    51                 // This removes the top-level menu
    52                 remove_submenu_page( 'bp-general-settings', 'bp-general-settings' );
    53                 remove_menu_page( 'bp-general-settings' );
    54 
    55                 // These stop people accessing the URL directly
    56                 unset( $_parent_pages['bp-general-settings'] );
    57                 unset( $_registered_pages['toplevel_page_bp-general-settings'] );
    58         }
     45        if ( 1 != count( $submenu['bp-general-settings'] ) )
     46                remove;
     47
     48        // This removes the top-level menu
     49        remove_submenu_page( 'bp-general-settings', 'bp-general-settings' );
     50        remove_menu_page( 'bp-general-settings' );
     51
     52        // These stop people accessing the URL directly
     53        unset( $_parent_pages['bp-general-settings'] );
     54        unset( $_registered_pages['toplevel_page_bp-general-settings'] );
    5955}
    6056add_action( bp_core_admin_hook(), 'bp_core_admin_backpat_menu', 999 );
    61 
    62 /**
    63  * Tweak the Settings subnav menu to show only one BuddyPress menu item (Settings > BuddyPress).
    64  *
    65  * @since BuddyPress (1.6)
    66  */
    67 function bp_core_modify_admin_menu() {
    68         $page  = bp_core_do_network_admin()  ? 'settings.php' : 'options-general.php';
    69 
    70         remove_submenu_page( $page, 'bb-forums-setup' );
    71         remove_submenu_page( $page, 'bp-page-settings' );
    72         remove_submenu_page( $page, 'bp-settings'     );
    73 }
    74 add_action( 'admin_head', 'bp_core_modify_admin_menu', 999 );
    7557
    7658/**
     
    180162
    181163/**
    182  * Verify that some BP prerequisites are set up properly, and notify the admin if not
    183  *
    184  * On every Dashboard page, this function checks the following:
    185  *   - that pretty permalinks are enabled
    186  *   - that a BP-compatible theme is activated
    187  *   - that every BP component that needs a WP page for a directory has one
    188  *   - that no WP page has multiple BP components associated with it
    189  * The administrator will be shown a notice for each check that fails.
    190  *
    191  * @package BuddyPress Core
    192  */
    193 function bp_core_activation_notice() {
    194         global $wp_rewrite, $wpdb;
    195 
    196         $bp = buddypress();
    197 
    198         // Only the super admin gets warnings
    199         if ( !bp_current_user_can( 'bp_moderate' ) )
    200                 return;
    201 
    202         // On multisite installs, don't load on a non-root blog, unless do_network_admin is
    203         // overridden
    204         if ( is_multisite() && bp_core_do_network_admin() && !bp_is_root_blog() )
    205                 return;
    206 
    207         // Don't show these messages during setup or upgrade
    208         if ( !empty( $bp->maintenance_mode ) )
    209                 return;
    210 
    211         /**
    212          * Check to make sure that the blog setup routine has run. This can't happen during the
    213          * wizard because of the order which the components are loaded. We check for multisite here
    214          * on the off chance that someone has activated the blogs component and then disabled MS
    215          */
    216         if ( bp_is_active( 'blogs' ) ) {
    217                 $count = $wpdb->get_var( "SELECT COUNT(*) FROM {$bp->blogs->table_name}" );
    218 
    219                 if ( empty( $count ) ) {
    220                         bp_blogs_record_existing_blogs();
    221                 }
    222         }
    223 
    224         /**
    225          * Are pretty permalinks enabled?
    226          */
    227         if ( isset( $_POST['permalink_structure'] ) )
    228                 return false;
    229 
    230         if ( empty( $wp_rewrite->permalink_structure ) ) {
    231                 bp_core_add_admin_notice( sprintf( __( '<strong>BuddyPress is almost ready</strong>. You must <a href="%s">update your permalink structure</a> to something other than the default for it to work.', 'buddypress' ), admin_url( 'options-permalink.php' ) ) );
    232         }
    233 
    234         /**
    235          * Check for orphaned BP components (BP component is enabled, no WP page exists)
    236          */
    237         $orphaned_components = array();
    238         $wp_page_components  = array();
    239 
    240         // Only components with 'has_directory' require a WP page to function
    241         foreach( array_keys( $bp->loaded_components ) as $component_id ) {
    242                 if ( !empty( $bp->{$component_id}->has_directory ) ) {
    243                         $wp_page_components[] = array(
    244                                 'id'   => $component_id,
    245                                 'name' => isset( $bp->{$component_id}->name ) ? $bp->{$component_id}->name : ucwords( $bp->{$component_id}->id )
    246                         );
    247                 }
    248         }
    249 
    250         // Activate and Register are special cases. They are not components but they need WP pages.
    251         // If user registration is disabled, we can skip this step.
    252         if ( bp_get_signup_allowed() ) {
    253                 $wp_page_components[] = array(
    254                         'id'   => 'activate',
    255                         'name' => __( 'Activate', 'buddypress' )
    256                 );
    257 
    258                 $wp_page_components[] = array(
    259                         'id'   => 'register',
    260                         'name' => __( 'Register', 'buddypress' )
    261                 );
    262         }
    263 
    264         foreach( $wp_page_components as $component ) {
    265                 if ( !isset( $bp->pages->{$component['id']} ) ) {
    266                         $orphaned_components[] = $component['name'];
    267                 }
    268         }
    269 
    270         // Special case: If the Forums component is orphaned, but the bbPress 1.x installation is
    271         // not correctly set up, don't show a nag. (In these cases, it's probably the case that the
    272         // user is using bbPress 2.x; see https://buddypress.trac.wordpress.org/ticket/4292
    273         if ( isset( $bp->forums->name ) && in_array( $bp->forums->name, $orphaned_components ) && !bp_forums_is_installed_correctly() ) {
    274                 $forum_key = array_search( $bp->forums->name, $orphaned_components );
    275                 unset( $orphaned_components[$forum_key] );
    276                 $orphaned_components = array_values( $orphaned_components );
    277         }
    278 
    279         if ( !empty( $orphaned_components ) ) {
    280                 $admin_url = bp_get_admin_url( add_query_arg( array( 'page' => 'bp-page-settings' ), 'admin.php' ) );
    281                 $notice    = sprintf( __( 'The following active BuddyPress Components do not have associated WordPress Pages: %2$s. <a href="%1$s" class="button-secondary">Repair</a>', 'buddypress' ), $admin_url, '<strong>' . implode( '</strong>, <strong>', $orphaned_components ) . '</strong>' );
    282 
    283                 bp_core_add_admin_notice( $notice );
    284         }
    285 
    286         /**
    287          * BP components cannot share a single WP page. Check for duplicate assignments, and post
    288          * a message if found.
    289          */
    290         $dupe_names = array();
    291         $page_ids   = (array)bp_core_get_directory_page_ids();
    292         $dupes      = array_diff_assoc( $page_ids, array_unique( $page_ids ) );
    293 
    294         if ( !empty( $dupes ) ) {
    295                 foreach( array_keys( $dupes ) as $dupe_component ) {
    296                         $dupe_names[] = $bp->pages->{$dupe_component}->title;
    297                 }
    298 
    299                 // Make sure that there are no duplicate duplicates :)
    300                 $dupe_names = array_unique( $dupe_names );
    301         }
    302 
    303         // If there are duplicates, post a message about them
    304         if ( !empty( $dupe_names ) ) {
    305                 $admin_url = bp_get_admin_url( add_query_arg( array( 'page' => 'bp-page-settings' ), 'admin.php' ) );
    306                 $notice    = sprintf( __( 'Each BuddyPress Component needs its own WordPress page. The following WordPress Pages have more than one component associated with them: %2$s. <a href="%1$s" class="button-secondary">Repair</a>', 'buddypress' ), $admin_url, '<strong>' . implode( '</strong>, <strong>', $dupe_names ) . '</strong>' );
    307 
    308                 bp_core_add_admin_notice( $notice );
    309         }
    310 }
    311 add_action( 'admin_init', 'bp_core_activation_notice' );
    312 
    313 /**
    314  * Add an extra update message to the update plugin notification.
    315  *
    316  * @package BuddyPress Core
    317  */
    318 function bp_core_update_message() {
    319         echo '<p style="color: red; margin: 3px 0 0 0; border-top: 1px solid #ddd; padding-top: 3px">' . __( 'IMPORTANT: <a href="http://codex.buddypress.org/buddypress-site-administration/upgrading-buddypress/">Read this before attempting to update BuddyPress</a>', 'buddypress' ) . '</p>';
    320 }
    321 add_action( 'in_plugin_update_message-buddypress/bp-loader.php', 'bp_core_update_message' );
     164 * Redirect user to bbPress's What's New page on activation
     165 *
     166 * @since bbPress (r4389)
     167 *
     168 * @internal Used internally to redirect bbPress to the about page on activation
     169 *
     170 * @uses get_transient() To see if transient to redirect exists
     171 * @uses delete_transient() To delete the transient if it exists
     172 * @uses is_network_admin() To bail if being network activated
     173 * @uses wp_safe_redirect() To redirect
     174 * @uses add_query_arg() To help build the URL to redirect to
     175 * @uses admin_url() To get the admin URL to index.php
     176 *
     177 * @return If no transient, or in network admin, or is bulk activation
     178 */
     179function bp_do_activation_redirect() {
     180
     181        // Bail if no activation redirect
     182    if ( ! get_transient( '_bp_activation_redirect' ) )
     183                return;
     184
     185        // Delete the redirect transient
     186        delete_transient( '_bp_activation_redirect' );
     187
     188        // Bail if activating from network, or bulk
     189        if ( is_network_admin() || isset( $_GET['activate-multi'] ) )
     190                return;
     191
     192        // Redirect to bbPress about page
     193        wp_safe_redirect( add_query_arg( array( 'page' => 'bp-about' ), admin_url( 'index.php' ) ) );
     194}
    322195
    323196/** UI/Styling ****************************************************************/
     
    373246        do_action( 'bp_admin_tabs' );
    374247}
    375 
    376 /**
    377  * Add the confirmation inline javascript in the WP admin dashboard.
    378  *
    379  * Only add it if we're not in BP maintenance mode.
    380  *
    381  * @since BuddyPress (1.7)
    382  * @uses bp_get_maintenance_mode() To see if we're in BP maintenance mode.
    383  * @uses bp_core_confirmation_js() To output our inline JS.
    384  */
    385 function bp_core_admin_add_confirm_js() {
    386         if ( ! bp_get_maintenance_mode() )
    387                 bp_core_confirmation_js();
    388 }
    389 add_action( 'admin_head', 'bp_core_admin_add_confirm_js' );
  • trunk/bp-core/admin/bp-core-slugs.php

    r6456 r6558  
    4343/**
    4444 * Creates reusable markup for page setup on the Components and Pages dashboard panel.
    45  *
    46  * This markup has been abstracted so that it can be used both during the setup wizard as well as
    47  * when BP has been fully installed.
    4845 *
    4946 * @package BuddyPress
     
    224221        }
    225222}
    226 add_action( 'admin_init', 'bp_core_admin_slugs_setup_handler' );
     223add_action( 'bp_admin_init', 'bp_core_admin_slugs_setup_handler' );
  • trunk/bp-core/admin/bp-core-update.php

    r6344 r6558  
    44if ( !defined( 'ABSPATH' ) ) exit;
    55
    6 class BP_Core_Setup_Wizard {
    7 
    8         /**
    9          * @var int The current step of the updater
    10          */
    11         var $current_step;
    12 
    13         /**
    14          *
    15          * @var array The total steps to be completed
    16          */
    17         var $steps;
    18 
    19         /** Methods ***************************************************************/
    20 
    21         function __construct() {
    22 
    23                 // Set/reset the wizard cookie
    24                 setcookie( 'bp-wizard-step', 0, time() + 60 * 60 * 24, COOKIEPATH );
    25                 $_COOKIE['bp-wizard-step'] = 0;
    26 
    27                 // Call the save method that will save data and modify $current_step
    28                 if ( isset( $_POST['save'] ) )
    29                         $this->save( $_POST['save'] );
    30 
    31                 // Build the steps needed for update or new installations
    32                 $this->steps = $this->add_steps();
    33         }
    34 
    35         function current_step() {
    36                 if ( isset( $_POST['step'] ) ) {
    37                         $current_step = (int) $_POST['step'] + 1;
    38                 } else {
    39                         if ( !empty( $_COOKIE['bp-wizard-step'] ) ) {
    40                                 $current_step = $_COOKIE['bp-wizard-step'];
    41                         } else {
    42                                 $current_step = 0;
    43                         }
    44                 }
    45 
    46                 return $current_step;
    47         }
    48 
    49         function add_steps() {
    50 
    51                 // Setup wizard steps
    52                 $steps = array();
    53 
    54                 // This is a first time installation
    55                 if ( bp_get_maintenance_mode() == 'install' ) {
    56                         $steps = array(
    57                                 __( 'Components', 'buddypress' ),
    58                                 __( 'Pages',      'buddypress' ),
    59                                 __( 'Permalinks', 'buddypress' ),
    60                                 __( 'Finish',     'buddypress' )
    61                         );
    62 
    63                 // This is an update to an existing install
    64                 } else {
    65 
    66                         // New for BP 1.5
    67                         if ( bp_get_db_version_raw() < 1801 || !bp_core_get_directory_page_ids() ) {
    68                                 $steps[] = __( 'Components', 'buddypress' );
    69                                 $steps[] = __( 'Pages',      'buddypress' );
    70                         }
    71 
    72                         // New for BP 1.6
    73                         if ( bp_get_db_version_raw() < 5222 && !defined( 'BP_USE_WP_ADMIN_BAR' ) )
    74                                 $steps[] = __( 'Toolbar', 'buddypress' );
    75 
    76                         if ( bp_get_db_version_raw() < (int) bp_get_db_version() )
    77                                 $steps[] = __( 'Database Update', 'buddypress' );
    78 
    79                         $steps[] = __( 'Finish', 'buddypress' );
    80                 }
    81 
    82                 return $steps;
    83         }
    84 
    85         function save( $step_name ) {
    86 
    87                 // Bail if user is not capable of being here
    88                 if ( ! bp_current_user_can( 'activate_plugins' ) )
    89                         wp_die( 'Uh... No.' );
    90 
    91                 // Save any posted values
    92                 switch ( $step_name ) {
    93                         case 'db_update':
    94                                 $result = $this->step_db_update_save();
    95                                 break;
    96 
    97                         case 'components':
    98                                 $result = $this->step_components_save();
    99                                 break;
    100 
    101                         case 'pages':
    102                                 $result = $this->step_pages_save();
    103                                 break;
    104 
    105                         case 'permalinks':
    106                                 $result = $this->step_permalinks_save();
    107                                 break;
    108 
    109                         case 'admin_bar':
    110                                 $result = $this->step_admin_bar_save();
    111                                 break;
    112 
    113                         case 'finish':
    114                         default:
    115                                 $result = $this->step_finish_save();
    116                                 break;
    117                 }
    118 
    119                 if ( 'finish' != $step_name )
    120                         setcookie( 'bp-wizard-step', (int) $this->current_step(), time() + 60 * 60 * 24, COOKIEPATH );
    121         }
    122 
    123         function html() {
    124 
    125                 // Bail if user is not capable of being here
    126                 if ( ! bp_current_user_can( 'activate_plugins' ) )
    127                         wp_die( 'You do not have sufficient permissions to access this page.' );
    128                 ?>
    129 
    130                 <div class="wrap" id="bp-wizard">
    131 
    132                         <?php screen_icon( 'buddypress' ); ?>
    133 
    134                         <h2>
    135                                 <?php
    136                                 if ( 'update' == bp_get_maintenance_mode() )
    137                                         _e( 'BuddyPress Update', 'buddypress' );
    138                                 else
    139                                         _e( 'BuddyPress Setup', 'buddypress' );
    140                                 ?>
    141                         </h2>
    142 
    143                         <?php
    144                                 do_action( 'bp_admin_notices' );
    145 
    146                                 $step_count  = count( $this->steps ) - 1;
    147                                 $wiz_or_set  = $this->current_step() >= $step_count ? 'bp-components' : 'bp-wizard';
    148                                 $form_action = bp_core_do_network_admin() ? network_admin_url( add_query_arg( array( 'page' => $wiz_or_set ), 'admin.php' ) ) : admin_url( add_query_arg( array( 'page' => $wiz_or_set ), 'index.php' ) );
    149                         ?>
    150 
    151                         <form action="<?php echo $form_action; ?>" method="post" id="bp-wizard-form">
    152                                 <div id="bp-wizard-nav">
    153                                         <ol>
    154 
    155                                                 <?php foreach( (array) $this->steps as $i => $name ) : ?>
    156 
    157                                                         <li<?php if ( $this->current_step() == $i ) : ?> class="current"<?php endif; ?>>
    158                                                                 <?php if ( $this->current_step() > $i ) : ?>
    159 
    160                                                                         <span class="complete">&nbsp;</span>
    161 
    162                                                                 <?php else :
    163 
    164                                                                         echo $i + 1 . '. ';
    165 
    166                                                                 endif;
    167 
    168                                                                 echo esc_attr( $name ) ?>
    169 
    170                                                         </li>
    171 
    172                                                 <?php endforeach; ?>
    173 
    174                                         </ol>
    175 
    176                                         <?php if ( __( 'Finish', 'buddypress' ) == $this->steps[$this->current_step()] ) : ?>
    177 
    178                                                 <div class="prev-next submit clear">
    179                                                         <input type="submit" value="<?php _e( 'Finish &amp; Activate', 'buddypress' ); ?>" name="submit" />
    180                                                 </div>
    181 
    182                                         <?php else : ?>
    183 
    184                                                 <div class="prev-next submit clear">
    185                                                         <input type="submit" value="<?php _e( 'Save &amp; Next', 'buddypress' ); ?>" name="submit" />
    186                                                 </div>
    187 
    188                                         <?php endif; ?>
    189 
    190                                 </div>
    191 
    192                                 <div id="bp-wizard-content">
    193 
    194                                         <?php switch ( $this->steps[$this->current_step()] ) {
    195                                                 case __( 'Database Update', 'buddypress') :
    196                                                         $this->step_db_update();
    197                                                         break;
    198 
    199                                                 case __( 'Components', 'buddypress') :
    200                                                         $this->step_components();
    201                                                         break;
    202 
    203                                                 case __( 'Pages', 'buddypress') :
    204                                                         $this->step_pages();
    205                                                         break;
    206 
    207                                                 case __( 'Permalinks', 'buddypress') :
    208                                                         $this->step_permalinks();
    209                                                         break;
    210 
    211                                                 case __( 'Toolbar', 'buddypress' ) :
    212                                                         $this->step_admin_bar();
    213                                                         break;
    214 
    215                                                 case __( 'Finish', 'buddypress') :
    216                                                         $this->step_finish();
    217                                                         break;
    218                                         } ?>
    219 
    220                                 </div>
    221                         </form>
    222                 </div>
    223 
    224         <?php
    225         }
    226 
    227         /** Screen methods ********************************************************/
    228 
    229         function step_db_update() {
    230         ?>
    231 
    232                 <p><?php _e( 'To complete the update, a few changes need to be made to your database. These changes are not destructive and will not remove or change any existing settings.', 'buddypress' ); ?></p>
    233 
    234                 <div class="submit clear">
    235                         <input type="hidden" name="save" value="db_update" />
    236                         <input type="hidden" name="step" value="<?php echo esc_attr( $this->current_step() ); ?>" />
    237 
    238                         <?php wp_nonce_field( 'bpwizard_db_update' ) ?>
    239 
    240                 </div>
    241 
    242         <?php
    243         }
    244 
    245         function step_components() {
    246 
    247                 if ( !function_exists( 'bp_core_admin_components_options' ) )
    248                         require ( BP_PLUGIN_DIR . 'bp-core/admin/bp-core-components.php' );
    249 
    250                 bp_core_admin_components_options(); ?>
    251 
    252                 <div class="submit clear">
    253                         <input type="hidden" name="save" value="components" />
    254                         <input type="hidden" name="step" value="<?php echo esc_attr( $this->current_step() ); ?>" />
    255 
    256                         <?php wp_nonce_field( 'bpwizard_components' ); ?>
    257 
    258                 </div>
    259 
    260         <?php
    261         }
    262 
    263         function step_pages() {
    264                 global $wpdb;
    265 
    266                 // Get BuddyPress once in this scope
    267                 $bp = buddypress();
    268 
    269                 // Make sure that page info is pulled from bp_get_root_blog_id() (except when in
    270                 // multisite mode)
    271                 if ( !empty( $wpdb->blogid ) && ( $wpdb->blogid != bp_get_root_blog_id() ) && ( !defined( 'BP_ENABLE_MULTIBLOG' ) ) )
    272                         switch_to_blog( bp_get_root_blog_id() );
    273 
    274                 $existing_pages = bp_core_get_directory_page_ids();
    275 
    276                 // Provide empty indexes to avoid PHP errors with wp_dropdown_pages()
    277                 $indexes = array( 'members', 'activity', 'groups', 'forums', 'blogs', 'register', 'activate' );
    278                 foreach ( $indexes as $index ) {
    279                         if ( !isset( $existing_pages[$index] ) ) {
    280                                 $existing_pages[$index] = '';
    281                         }
    282                 }
    283 
    284                 if ( !empty( $existing_pages['blogs'] ) )
    285                         $existing_blog_page = '&selected=' . $existing_pages['blogs'];
    286                 else
    287                         $existing_blog_page = '';
    288 
    289                 // Get active components
    290                 $active_components = apply_filters( 'bp_active_components', bp_get_option( 'bp-active-components' ) );
    291 
    292                 // Check for defined slugs
    293                 $members_slug    = !empty( $bp->members->slug    ) ? $bp->members->slug    : __( 'members',  'buddypress' );
    294 
    295                 // Groups
    296                 $groups_slug     = !empty( $bp->groups->slug     ) ? $bp->groups->slug     : __( 'groups',   'buddypress' );
    297 
    298                 // Activity
    299                 $activity_slug   = !empty( $bp->activity->slug   ) ? $bp->activity->slug   : __( 'activity', 'buddypress' );
    300 
    301                 // Forums
    302                 $forums_slug     = !empty( $bp->forums->slug     ) ? $bp->forums->slug     : __( 'forums',   'buddypress' );
    303 
    304                 // Blogs
    305                 $blogs_slug      = !empty( $bp->blogs->slug      ) ? $bp->blogs->slug      : __( 'blogs',    'buddypress' );
    306 
    307                 // Register
    308                 $register_slug   = !empty( $bp->register->slug   ) ? $bp->register->slug   : __( 'register', 'buddypress' );
    309 
    310                 // Activation
    311                 $activation_slug = !empty( $bp->activation->slug ) ? $bp->activation->slug : __( 'activate', 'buddypress' );
    312 
    313                 ?>
    314 
    315                 <script type="text/javascript">
    316                         jQuery( document ).ready( function() {
    317                                 jQuery( 'select' ).change( function() {
    318                                         jQuery( this ).siblings( 'input[type=radio]' ).click();
    319                                 });
    320                         });
    321                 </script>
    322 
    323                 <?php if ( bp_get_maintenance_mode() ) : ?>
    324 
    325                         <p><?php _e( 'BuddyPress uses WordPress pages to display directories. This allows you to easily change their titles and relocate them.', 'buddypress' ); ?></p>
    326                         <p><?php _e( 'Choose an existing page, have one auto-created, or create them manually and come back here once you are finished.', 'buddypress' ); ?></p>
    327 
    328                 <?php endif; ?>
    329 
    330                 <table class="form-table">
    331 
    332                         <tr valign="top">
    333                                 <th scope="row">
    334                                         <h5><?php _e( 'Members', 'buddypress' ); ?></h5>
    335                                         <p><?php _e( 'Displays member profiles, and a directory of all site members.', 'buddypress' ); ?></p>
    336                                 </th>
    337                                 <td>
    338                                         <p><label><input type="radio" name="bp_pages[members]" <?php checked( empty( $existing_pages['members'] ) ); ?>  value="<?php echo $members_slug; ?>" /> <?php _e( 'Automatically create a page at:', 'buddypress' ) ?> <?php echo home_url( $members_slug ); ?>/</label></p>
    339 
    340                                         <?php if ( $members_page_dropdown = wp_dropdown_pages( "name=bp-members-page&echo=0&selected={$existing_pages['members']}&show_option_none=" . __( '- Select -', 'buddypress' ) ) ) : ?>
    341 
    342                                                 <p><label><input type="radio" name="bp_pages[members]" <?php checked( !empty( $existing_pages['members'] ) ); ?> value="<?php echo get_post_field( 'post_name', $existing_pages['members'] ); ?>" /> <?php _e( 'Use an existing page:', 'buddypress' ); ?> <?php echo $members_page_dropdown ?></label></p>
    343 
    344                                         <?php endif ?>
    345                                 </td>
    346                         </tr>
    347 
    348                         <?php if ( isset( $active_components['groups'] ) ) : ?>
    349 
    350                                 <tr valign="top">
    351                                         <th scope="row">
    352                                                 <h5><?php _e( 'Groups', 'buddypress' ); ?></h5>
    353                                                 <p><?php _e( 'Displays individual groups as well as a directory of groups.', 'buddypress' ); ?></p>
    354                                         </th>
    355                                         <td>
    356                                                 <p><label><input type="radio" name="bp_pages[groups]" <?php checked( empty( $existing_pages['groups'] ) ); ?>  value="<?php echo $groups_slug; ?>" /> <?php _e( 'Automatically create a page at:', 'buddypress' ); ?> <?php echo home_url( $groups_slug ); ?>/</label></p>
    357 
    358                                                 <?php if ( $groups_page_dropdown = wp_dropdown_pages( "name=bp-groups-page&echo=0&selected={$existing_pages['groups']}&show_option_none=" . __( '- Select -', 'buddypress' ) ) ) : ?>
    359                                                         <p><label><input type="radio" name="bp_pages[groups]" <?php checked( !empty( $existing_pages['groups'] ) ); ?> value="<?php echo get_post_field( 'post_name', $existing_pages['groups'] ); ?>" /> <?php _e( 'Use an existing page:', 'buddypress' ); ?> <?php echo $groups_page_dropdown ?></label></p>
    360                                                 <?php endif ?>
    361                                         </td>
    362                                 </tr>
    363 
    364                         <?php endif; ?>
    365 
    366                         <?php /* The Blogs component only needs a directory page when Multisite is enabled */ ?>
    367                         <?php if ( is_multisite() && isset( $active_components['blogs'] ) ) : ?>
    368 
    369                                 <tr valign="top">
    370                                         <th scope="row">
    371                                                 <h5><?php _e( 'Blogs', 'buddypress' ); ?></h5>
    372                                                 <p><?php _e( 'Displays a directory of the blogs in your network.', 'buddypress' ); ?></p>
    373                                         </th>
    374                                         <td>
    375                                                 <p><label><input type="radio" name="bp_pages[blogs]" <?php checked( empty( $existing_pages['blogs'] ) ); ?>  value="<?php echo $blogs_slug; ?>" /> <?php _e( 'Automatically create a page at:', 'buddypress' ); ?> <?php echo home_url( $blogs_slug ); ?>/</label></p>
    376 
    377                                                 <?php if ( $blogs_page_dropdown = wp_dropdown_pages( "name=bp-blogs-page&echo=0&selected={$existing_pages['blogs']}&show_option_none=" . __( '- Select -', 'buddypress' ) ) ) : ?>
    378                                                         <p><label><input type="radio" name="bp_pages[blogs]" <?php checked( !empty( $existing_pages['blogs'] ) ); ?> value="<?php echo get_post_field( 'post_name', $existing_pages['blogs'] ); ?>" /> <?php _e( 'Use an existing page:', 'buddypress' ); ?> <?php echo $blogs_page_dropdown ?></label></p>
    379                                                 <?php endif ?>
    380                                         </td>
    381                                 </tr>
    382 
    383                         <?php endif; ?>
    384 
    385                         <?php if ( isset( $active_components['activity'] ) ) : ?>
    386 
    387                                 <tr valign="top">
    388                                         <th scope="row">
    389                                                 <h5><?php _e( 'Activity', 'buddypress' ); ?></h5>
    390                                                 <p><?php _e( "Displays the activity for the entire site, a member's friends, groups and @mentions.", 'buddypress' ); ?></p>
    391                                         </th>
    392                                         <td>
    393                                                 <p><label><input type="radio" name="bp_pages[activity]" <?php checked( empty( $existing_pages['activity'] ) ); ?>  value="<?php echo $activity_slug; ?>" /> <?php _e( 'Automatically create a page at:', 'buddypress' ); ?> <?php echo home_url( $activity_slug ); ?>/</label></p>
    394 
    395                                                 <?php if ( $activity_page_dropdown = wp_dropdown_pages( "name=bp-activity-page&echo=0&selected={$existing_pages['activity']}&show_option_none=" . __( '- Select -', 'buddypress' ) ) ) : ?>
    396                                                         <p><label><input type="radio" name="bp_pages[activity]" <?php checked( !empty( $existing_pages['activity'] ) ); ?> value="<?php echo get_post_field( 'post_name', $existing_pages['activity'] ); ?>" /> <?php _e( 'Use an existing page:', 'buddypress' ); ?> <?php echo $activity_page_dropdown ?></label></p>
    397                                                 <?php endif ?>
    398                                         </td>
    399                                 </tr>
    400 
    401                         <?php endif; ?>
    402 
    403                         <?php if ( isset( $active_components['forums'] ) ) : ?>
    404 
    405                                 <tr valign="top">
    406                                         <th scope="row">
    407                                                 <h5><?php _e( 'Forums', 'buddypress' ); ?></h5>
    408                                                 <p><?php _e( 'Displays a directory of public forum topics.', 'buddypress' ); ?></p>
    409                                         </th>
    410                                         <td>
    411                                                 <p><label><input type="radio" name="bp_pages[forums]" <?php checked( empty( $existing_pages['forums'] ) ); ?>  value="<?php echo $forums_slug; ?>" /> <?php _e( 'Automatically create a page at:', 'buddypress' ); ?> <?php echo home_url( $forums_slug ); ?>/</label></p>
    412 
    413                                                 <?php if ( $forums_page_dropdown = wp_dropdown_pages( "name=bp-forums-page&echo=0&selected={$existing_pages['forums']}&show_option_none=" . __( '- Select -', 'buddypress' ) ) ) : ?>
    414                                                         <p><label><input type="radio" name="bp_pages[forums]" <?php checked( !empty( $existing_pages['forums'] ) ); ?> value="<?php echo get_post_field( 'post_name', $existing_pages['forums'] ); ?>" /> <?php _e( 'Use an existing page:', 'buddypress' ); ?> <?php echo $forums_page_dropdown ?></label></p>
    415                                                 <?php endif ?>
    416                                         </td>
    417                                 </tr>
    418 
    419                         <?php endif; ?>
    420 
    421                         <tr valign="top">
    422                                 <th scope="row">
    423                                         <h5><?php _e( 'Register', 'buddypress' ); ?></h5>
    424                                         <p><?php _e( 'Displays a site registration page where users can create new accounts.', 'buddypress' ); ?></p>
    425                                 </th>
    426                                 <td>
    427                                         <p><label><input type="radio" name="bp_pages[register]" <?php checked( empty( $existing_pages['register'] ) ); ?>  value="<?php echo $register_slug; ?>" /> <?php _e( 'Automatically create a page at:', 'buddypress' ) ?> <?php echo home_url( $register_slug ) ?>/</label></p>
    428 
    429                                         <?php if ( $register_page_dropdown = wp_dropdown_pages( "name=bp-register-page&echo=0&selected={$existing_pages['register']}&show_option_none=" . __( '- Select -', 'buddypress' ) ) ) : ?>
    430                                                 <p><label><input type="radio" name="bp_pages[register]" <?php checked( !empty( $existing_pages['register'] ) ); ?> value="<?php echo get_post_field( 'post_name', $existing_pages['register'] ); ?>" /> <?php _e( 'Use an existing page:', 'buddypress' ); ?> <?php echo $register_page_dropdown ?></label></p>
    431                                         <?php endif ?>
    432                                 </td>
    433                         </tr>
    434 
    435                         <tr valign="top">
    436                                 <th scope="row">
    437                                         <h5><?php _e( 'Activate', 'buddypress' ); ?></h5>
    438                                         <p><?php _e( 'The page users will visit to activate their account once they have registered.', 'buddypress' ); ?></p>
    439                                 </th>
    440                                 <td>
    441                                         <p><label><input type="radio" name="bp_pages[activate]" <?php checked( empty( $existing_pages['activate'] ) ); ?>  value="<?php echo $activation_slug; ?>" /> <?php _e( 'Automatically create a page at:', 'buddypress' ); ?> <?php echo home_url( $activation_slug ); ?>/</label></p>
    442 
    443                                         <?php if ( $activate_page_dropdown = wp_dropdown_pages( "name=bp-activate-page&echo=0&selected={$existing_pages['activate']}&show_option_none=" . __( '- Select -', 'buddypress' ) ) ) : ?>
    444                                                 <p><label><input type="radio" name="bp_pages[activate]" <?php checked( !empty( $existing_pages['activate'] ) ); ?> value="<?php echo get_post_field( 'post_name', $existing_pages['activate'] ); ?>" /> <?php _e( 'Use an existing page:', 'buddypress' ); ?> <?php echo $activate_page_dropdown ?></label></p>
    445                                         <?php endif ?>
    446                                 </td>
    447                         </tr>
    448                 </table>
    449 
    450                 <div class="submit clear">
    451                         <input type="hidden" name="save" value="pages" />
    452                         <input type="hidden" name="step" value="<?php echo esc_attr( $this->current_step() ); ?>" />
    453 
    454                         <?php wp_nonce_field( 'bpwizard_pages' ); ?>
    455 
    456                 </div>
    457 
    458                 <?php
    459 
    460                 restore_current_blog();
    461         }
    462 
    463         function step_permalinks() {
    464 
    465                 $prefix              = '';
    466                 $permalink_structure = bp_get_option( 'permalink_structure' );
    467                 $structures          = array( '', $prefix . '/%year%/%monthnum%/%day%/%postname%/', $prefix . '/%year%/%monthnum%/%postname%/', $prefix . '/archives/%post_id%' );
    468 
    469                 if ( !got_mod_rewrite() && !iis7_supports_permalinks() )
    470                         $prefix = '/index.php'; ?>
    471 
    472                 <p><?php
    473 
    474                         // If we're using permalinks already, adjust text accordingly
    475                         if ( !empty( $permalink_structure ) ) {
    476                                 _e( 'Your permalink settings are compatible with BuddyPress.', 'buddypress' );
    477                         } else {
    478                                 _e( 'Pretty permalinks must be active on your site.', 'buddypress' );
    479                         }
    480 
    481                 ?></p>
    482                 <p><?php printf( __( 'For more advanced options please visit the <a href="%s">permalink settings page</a> now and come back here later.', 'buddypress' ), admin_url( 'options-permalink.php' ) ); ?>
    483 
    484                 <table class="form-table">
    485                        
    486                         <?php if ( !empty( $permalink_structure ) && ! in_array( $permalink_structure, $structures ) ) : ?>
    487                                 <tr>
    488                                         <th><label><input name="permalink_structure" type="radio" checked="checked" value="<?php echo esc_attr( $permalink_structure ); ?>" class="tog" <?php checked( true ); ?> />&nbsp;<?php _e( 'Current' ); ?></label></th>
    489                                         <td><code><?php echo get_home_url() . $prefix . $permalink_structure; ?></code></td>
    490                                 </tr>
    491                         <?php endif; ?>
    492 
    493                         <tr>
    494                                 <th><label><input name="permalink_structure" type="radio"<?php if ( empty( $permalink_structure ) || false != strpos( $permalink_structure, $structures[1] ) ) : ?> checked="checked" <?php endif; ?>value="<?php echo esc_attr( $structures[1] ); ?>" class="tog" <?php checked( $structures[1], $permalink_structure ); ?> />&nbsp;<?php _e( 'Day and name' ); ?></label></th>
    495                                 <td><code><?php echo get_home_url() . $prefix . '/' . date('Y') . '/' . date('m') . '/' . date('d') . '/sample-post/'; ?></code></td>
    496                         </tr>
    497                         <tr>
    498                                 <th><label><input name="permalink_structure" type="radio"<?php if ( empty( $permalink_structure ) || false != strpos( $permalink_structure, $structures[2] ) ) : ?> checked="checked" <?php endif; ?> value="<?php echo esc_attr( $structures[2] ); ?>" class="tog" <?php checked( $structures[2], $permalink_structure ); ?> />&nbsp;<?php _e( 'Month and name' ); ?></label></th>
    499                                 <td><code><?php echo get_home_url() . $prefix . '/' . date('Y') . '/' . date('m') . '/sample-post/'; ?></code></td>
    500                         </tr>
    501                         <tr>
    502                                 <th><label><input name="permalink_structure" type="radio"<?php if ( empty( $permalink_structure ) || false != strpos( $permalink_structure, $structures[3] ) ) : ?> checked="checked" <?php endif; ?> value="<?php echo esc_attr( $structures[3] ); ?>" class="tog" <?php checked( $structures[3], $permalink_structure ); ?> />&nbsp;<?php _e( 'Numeric' ); ?></label></th>
    503                                 <td><code><?php echo get_home_url() . $prefix ?>/archives/123</code></td>
    504                         </tr>
    505                 </table>
    506 
    507                 <div class="submit clear">
    508                         <input type="hidden" name="save" value="permalinks" />
    509                         <input type="hidden" name="step" value="<?php echo esc_attr( $this->current_step() ); ?>" />
    510 
    511                         <?php if ( 'post' == strtolower( $_SERVER['REQUEST_METHOD'] ) && empty( $_POST['skip-htaccess'] ) ) : ?>
    512 
    513                                 <input type="hidden" name="skip-htaccess" value="skip-htaccess" />
    514 
    515                         <?php endif; ?>
    516 
    517                         <?php wp_nonce_field( 'bpwizard_permalinks' ); ?>
    518 
    519                 </div>
    520 
    521         <?php
    522         }
    523 
    524         /**
    525          * When upgrading to BP 1.6, prompt the admin to switch to WordPress' Toolbar.
    526          *
    527          * @since BuddyPress (1.6)
    528          */
    529         function step_admin_bar() {
    530         ?>
    531 
    532                 <p><?php _e( "BuddyPress now uses the WordPress Toolbar; we've turbo-charged it by adding social items to help your users explore your site and manage their content.", 'buddypress' ); ?></p>
    533 
    534                 <p><?php _e( "We've noticed that your site uses the old bar from earlier versions of BuddyPress.", 'buddypress' ); ?></p>
    535 
    536                 <p>
    537                         <label>
    538                                 <input type="checkbox" name="keep_buddybar" value="1" />
    539                                 <?php _e( "If you'd prefer to not switch to the WordPress Toolbar just yet, check this box. Don't worry, you can change your mind later.", 'buddypress' ); ?>
    540                         </label>
    541                 </p>
    542 
    543                 <div class="submit clear">
    544                         <input type="hidden" name="save" value="admin_bar" />
    545                         <input type="hidden" name="step" value="<?php echo esc_attr( $this->current_step() ); ?>" />
    546 
    547                         <?php wp_nonce_field( 'bpwizard_admin_bar' ) ?>
    548 
    549                 </div>
    550 
    551                 <?php
    552         }
    553 
    554         function step_finish() {
    555         ?>
    556                 <p>
    557                         <?php
    558                         if ( 'update' == bp_get_maintenance_mode() )
    559                                 _e( "The BuddyPress update is complete, and your site is ready to go!", 'buddypress' );
    560                         else
    561                                 _e( "The BuddyPress setup is complete, and your site is ready to go!", 'buddypress' );
    562                         ?>
    563                 </p>
    564 
    565                 <div class="submit clear">
    566                         <input type="hidden" name="save" value="finish" />
    567                         <input type="hidden" name="step" value="<?php echo esc_attr( $this->current_step() ); ?>" />
    568 
    569                         <?php wp_nonce_field( 'bpwizard_finish' ); ?>
    570 
    571                 </div>
    572 
    573         <?php
    574         }
    575 
    576         /** Save Step Methods *****************************************************/
    577 
    578         function step_db_update_save() {
    579 
    580                 if ( ! isset( $_POST['submit'] ) )
    581                         return false;
    582 
    583                 check_admin_referer( 'bpwizard_db_update' );
    584 
    585                 // Run the schema install to update tables
    586                 bp_core_install();
    587 
    588                 // Update to 1.5
    589                 if ( bp_get_db_version_raw() < 1801 )
    590                         $this->update_1_5();
    591 
    592                 // Update to 1.6
    593                 if ( bp_get_db_version_raw() < bp_get_db_version() )
    594                         $this->update_1_6();
    595 
    596                 return true;
    597         }
    598 
    599         function step_components_save() {
    600 
    601                 if ( ! isset( $_POST['submit'] ) || ! isset( $_POST['bp_components'] ) )
    602                         return false;
    603 
    604                 check_admin_referer( 'bpwizard_components' );
    605 
    606                 $active_components = array();
    607 
    608                 // Settings form submitted, now save the settings.
    609                 foreach ( (array) $_POST['bp_components'] as $key => $value ) {
    610                         $active_components[$key] = 1;
    611                 }
    612 
    613                 bp_update_option( 'bp-active-components', $active_components );
    614 
    615                 wp_cache_flush();
    616                 bp_core_install();
    617 
    618                 return true;
    619         }
    620 
    621         function step_pages_save() {
    622 
    623                 if ( ! isset( $_POST['submit'] ) || ! isset( $_POST['bp_pages'] ) )
    624                         return false;
    625 
    626                 check_admin_referer( 'bpwizard_pages' );
    627 
    628                 // Make sure that the pages are created on the bp_get_root_blog_id()
    629                 //no matter which Dashboard the setup is being run on.
    630                 if ( !defined( 'BP_ENABLE_MULTIBLOG' ) )
    631                         switch_to_blog( bp_get_root_blog_id() );
    632 
    633                 $blog_pages = $this->setup_pages( (array) $_POST['bp_pages'] );
    634                 bp_update_option( 'bp-pages', $blog_pages );
    635 
    636                 if ( !defined( 'BP_ENABLE_MULTIBLOG' ) )
    637                         restore_current_blog();
    638 
    639                 return true;
    640         }
    641 
    642         function step_permalinks_save() {
    643                 global $wp_rewrite, $current_site, $current_blog;
    644 
    645                 // Prevent debug notices
    646                 $iis7_permalinks = $usingpi = $writable = false;
    647 
    648                 if ( ! isset( $_POST['submit'] ) )
    649                         return false;
    650 
    651                 check_admin_referer( 'bpwizard_permalinks' );
    652 
    653                 $home_path       = get_home_path();
    654                 $iis7_permalinks = iis7_supports_permalinks();
    655 
    656                 if ( isset( $_POST['permalink_structure'] ) ) {
    657                         $permalink_structure = $_POST['permalink_structure'];
    658 
    659                         if ( !empty( $permalink_structure ) )
    660                                 $permalink_structure = preg_replace( '#/+#', '/', '/' . $_POST['permalink_structure'] );
    661 
    662                         if ( ( defined( 'VHOST' ) && constant( 'VHOST' ) == 'no' ) && $permalink_structure != '' && $current_site->domain . $current_site->path == $current_blog->domain . $current_blog->path )
    663                                 $permalink_structure = '/blog' . $permalink_structure;
    664 
    665                         $wp_rewrite->set_permalink_structure( $permalink_structure );
    666                 }
    667 
    668                 if ( !empty( $iis7_permalinks ) ) {
    669                         if ( ( !file_exists( $home_path . 'web.config' ) && win_is_writable( $home_path ) ) || win_is_writable( $home_path . 'web.config' ) ) {
    670                                 $writable = true;
    671                         }
    672                 } else {
    673                         if ( ( !file_exists( $home_path . '.htaccess' ) && is_writable( $home_path ) ) || is_writable( $home_path . '.htaccess' ) ) {
    674                                 $writable = true;
    675                         }
    676                 }
    677 
    678                 if ( $wp_rewrite->using_index_permalinks() )
    679                         $usingpi = true;
    680 
    681                 $wp_rewrite->flush_rules();
    682 
    683                 if ( !empty( $iis7_permalinks ) || ( empty( $usingpi ) && empty( $writable ) ) ) {
    684 
    685                         function _bp_core_wizard_step_permalinks_message() {
    686                                 global $wp_rewrite; ?>
    687 
    688                                 <div id="message" class="updated fade"><p>
    689 
    690                                         <?php
    691                                                 _e( 'Oops, there was a problem creating a configuration file. ', 'buddypress' );
    692 
    693                                                 if ( !empty( $iis7_permalinks ) ) {
    694 
    695                                                         if ( !empty( $permalink_structure ) && empty( $usingpi ) && empty( $writable ) ) {
    696 
    697                                                                 _e( 'If your <code>web.config</code> file were <a href="http://codex.wordpress.org/Changing_File_Permissions">writable</a>, we could do this automatically, but it isn&#8217;t so this is the url rewrite rule you should have in your <code>web.config</code> file. Click in the field and press <kbd>CTRL + a</kbd> to select all. Then insert this rule inside of the <code>/&lt;configuration&gt;/&lt;system.webServer&gt;/&lt;rewrite&gt;/&lt;rules&gt;</code> element in <code>web.config</code> file.' ); ?>
    698 
    699                                                                 <br /><br />
    700 
    701                                                                 <textarea rows="9" class="large-text readonly" style="background: #fff;" name="rules" id="rules" readonly="readonly"><?php echo esc_html( $wp_rewrite->iis7_url_rewrite_rules() ); ?></textarea>
    702 
    703                                                         <?php
    704 
    705                                                         } else if ( !empty( $permalink_structure ) && empty( $usingpi ) && !empty( $writable ) ); {
    706                                                                 _e( 'Permalink structure updated. Remove write access on web.config file now!' );
    707                                                         }
    708 
    709                                                 } else {
    710 
    711                                                         _e( 'If your <code>.htaccess</code> file were <a href="http://codex.wordpress.org/Changing_File_Permissions">writable</a>, we could do this automatically, but it isn&#8217;t so these are the mod_rewrite rules you should have in your <code>.htaccess</code> file. Click in the field and press <kbd>CTRL + a</kbd> to select all.' ); ?>
    712 
    713                                                         <br /><br />
    714 
    715                                                         <textarea rows="6" class="large-text readonly" style="background: #fff;" name="rules" id="rules" readonly="readonly"><?php echo esc_html( $wp_rewrite->mod_rewrite_rules() ); ?></textarea>
    716 
    717                                                 <?php } ?>
    718 
    719                                         <br /><br />
    720 
    721                                         <?php
    722                                                 if ( empty( $iis7_permalinks ) )
    723                                                         _e( 'Paste all these rules into a new <code>.htaccess</code> file in the root of your WordPress installation and save the file. Once you\'re done, please hit the "Save and Next" button to continue.', 'buddypress' );
    724                                         ?>
    725 
    726                                 </p></div>
    727 
    728                         <?php
    729                         }
    730 
    731                         if ( 'post' == strtolower( $_SERVER['REQUEST_METHOD'] ) && !empty( $_POST['skip-htaccess'] ) ) {
    732                                 return true;
    733                         } else {
    734                                 add_action( 'bp_admin_notices', '_bp_core_wizard_step_permalinks_message' );
    735                                 return false;
    736                         }
    737                 }
    738 
    739                 return true;
    740         }
    741 
    742         /**
    743          * When upgrading to BP 1.6, the admin is prompted to switch to WordPress' Toolbar.
    744          * If they choose not to, record that preference in the options table.
    745          *
    746          * @since BuddyPress (1.6)
    747          */
    748         function step_admin_bar_save() {
    749                 if ( ! isset( $_POST['submit'] ) )
    750                         return false;
    751 
    752                 check_admin_referer( 'bpwizard_admin_bar' );
    753 
    754                 if ( !empty( $_POST['keep_buddybar'] ) )
    755                         bp_update_option( '_bp_force_buddybar', 1 );
    756 
    757                 return true;
    758         }
    759 
    760         function step_finish_save() {
    761 
    762                 if ( ! isset( $_POST['submit'] ) )
    763                         return false;
    764 
    765                 check_admin_referer( 'bpwizard_finish' );
    766 
    767                 // Update the DB version in the database
    768                 bp_version_bump();
    769 
    770                 // Delete the setup cookie
    771                 @setcookie( 'bp-wizard-step', '', time() - 3600, COOKIEPATH );
    772 
    773                 // Redirect to the BuddyPress dashboard
    774                 $redirect = bp_core_do_network_admin() ? network_admin_url( 'settings.php' ) : admin_url( 'options-general.php' );
    775                 $redirect = add_query_arg( array( 'page' => 'bp-components' ), $redirect  );
    776 
    777                 wp_safe_redirect( $redirect );
    778 
    779                 // That's all!
    780                 exit();
    781         }
    782 
    783         function setup_pages( $pages ) {
    784 
    785                 $bp_pages = array();
    786 
    787                 // Delete any existing pages
    788                 foreach ( (array) bp_core_get_directory_page_ids() as $page_id ) {
    789                         wp_delete_post( $page_id, true );
    790                 }
    791                 bp_delete_option( 'bp-pages' );
    792 
    793                 foreach ( $pages as $key => $value ) {
    794 
    795                         // Check for the selected page
    796                         if ( 'page' == $value ) {
    797                                 if ( !empty( $_POST['bp-' . $key . '-page'] ) ) {
    798                                         $bp_pages[$key] = (int) $_POST['bp-' . $key . '-page'];
    799                                 } else {
    800                                         $bp_pages[$key] = wp_insert_post( array( 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_title' => ucwords( $key ), 'post_status' => 'publish', 'post_type' => 'page' ) );
    801                                 }
    802 
    803                         // Create a new page
    804                         } else {
    805                                 $bp_pages[$key] = wp_insert_post( array( 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_title' => ucwords( $value ), 'post_status' => 'publish', 'post_type' => 'page' ) );
    806                         }
    807                 }
    808 
    809                 return $bp_pages;
    810         }
    811 
    812         // Database update methods based on version numbers
    813         function update_1_5() {
    814                 delete_site_option( 'bp-activity-db-version' );
    815                 delete_site_option( 'bp-blogs-db-version'    );
    816                 delete_site_option( 'bp-friends-db-version'  );
    817                 delete_site_option( 'bp-groups-db-version'   );
    818                 delete_site_option( 'bp-messages-db-version' );
    819                 delete_site_option( 'bp-xprofile-db-version' );
    820         }
    821 
    822         // Database update methods based on version numbers
    823         function update_1_6() {
    824 
    825                 // Delete possible site options
    826                 delete_site_option( 'bp-db-version'       );
    827                 delete_site_option( '_bp_db_version'      );
    828                 delete_site_option( 'bp-core-db-version'  );
    829                 delete_site_option( '_bp-core-db-version' );
    830 
    831                 // Delete possible blog options
    832                 delete_blog_option( bp_get_root_blog_id(), 'bp-db-version'       );
    833                 delete_blog_option( bp_get_root_blog_id(), 'bp-core-db-version'  );
    834                 delete_site_option( bp_get_root_blog_id(), '_bp-core-db-version' );
    835                 delete_site_option( bp_get_root_blog_id(), '_bp_db_version'      );
    836         }
    837 
    838         /**
    839          * Reset the cookie so the install script starts over
    840          */
    841         function reset_cookie() {
    842                 @setcookie( 'bp-wizard-step', '', time() - 3600, COOKIEPATH );
    843         }
    844 }
    845 
    846 /**
    847  * Get the wizard
    848  *
    849  * @return boolean
    850  */
    851 function bp_get_wizard() {
    852         $bp = buddypress();
    853 
    854         if ( !empty( $bp->admin->wizard ) )
    855                 return $bp->admin->wizard;
    856 
    857         return false;
    858 }
  • trunk/bp-core/admin/css/common.css

    r6293 r6558  
    2222/* Menu Icons
    2323------------------------------------------------------------------------------*/
    24 
    25 /* Wizard */
    26 ul#adminmenu li.toplevel_page_bp-wizard .wp-menu-image {
    27         background-image: url('../images/menu.png') !important;
    28         background-position: -178px -34px;
    29 }
    30 ul#adminmenu li.toplevel_page_bp-wizard:hover .wp-menu-image,
    31 ul#adminmenu li.toplevel_page_bp-wizard.wp-has-current-submenu .wp-menu-image {
    32         background-position: -178px -2px;
    33 }
    3424
    3525/* Backpat */
     
    179169    vertical-align: top;
    180170}
     171
     172/* Version Badge */
     173
     174.bp-badge {
     175        padding-top: 142px;
     176        height: 50px;
     177        width: 173px;
     178        color: #fafafa;
     179        font-weight: bold;
     180        font-size: 14px;
     181        text-align: center;
     182        margin: 0 -5px;
     183        background: #f00 no-repeat;
     184}
     185
     186.about-wrap .bp-badge {
     187        position: absolute;
     188        top: 0;
     189        right: 0;
     190}
     191        body.rtl .about-wrap .bp-badge {
     192                right: auto;
     193                left: 0;
     194        }
  • trunk/bp-core/bp-core-admin.php

    r6422 r6558  
    2121class BP_Admin {
    2222
    23         /**
    24          * Instance of the setup wizard
    25          *
    26          * @since BuddyPress (1.6)
    27          * @var BP_Core_Setup_Wizard
    28          */
    29         public $wizard;
    30 
    3123        /** Directory *************************************************************/
    3224
     
    9890         */
    9991        private function includes() {
    100 
    101                 // If in maintenance mode, only include updater and schema
    102                 if ( bp_get_maintenance_mode() ) {
    103                         require( $this->admin_dir . 'bp-core-schema.php' );
    104                         require( $this->admin_dir . 'bp-core-update.php' );
    105 
    106                 // No update needed so proceed with loading everything
    107                 } else {
    108                         require( $this->admin_dir . 'bp-core-settings.php'   );
    109                         require( $this->admin_dir . 'bp-core-functions.php'  );
    110                         require( $this->admin_dir . 'bp-core-components.php' );
    111                         require( $this->admin_dir . 'bp-core-slugs.php'      );
    112                 }
     92                require( $this->admin_dir . 'bp-core-actions.php'    );
     93                require( $this->admin_dir . 'bp-core-settings.php'   );
     94                require( $this->admin_dir . 'bp-core-functions.php'  );
     95                require( $this->admin_dir . 'bp-core-components.php' );
     96                require( $this->admin_dir . 'bp-core-slugs.php'      );
    11397        }
    11498
     
    124108        private function setup_actions() {
    125109
    126                 // Start the wizard if in maintenance mode
    127                 if ( bp_get_maintenance_mode() ) {
    128                         add_action( bp_core_admin_hook(), array( $this, 'start_wizard' ), 2 );
    129                 }
    130 
    131110                /** General Actions ***************************************************/
    132111
    133                 // Attach the BuddyPress admin_init action to the WordPress admin_init action.
    134                 add_action( 'admin_init',            array( $this, 'admin_init'  ) );
    135 
    136112                // Add some page specific output to the <head>
    137                 add_action( 'admin_head',            array( $this, 'admin_head'  ) );
     113                add_action( 'bp_admin_head',            array( $this, 'admin_head'  ), 999 );
    138114
    139115                // Add menu item to settings menu
    140                 add_action( bp_core_admin_hook(),    array( $this, 'admin_menus' ), 5 );
    141 
    142                 // Add notice if an update is needed
    143                 add_action( 'admin_notices',         array( $this, 'admin_notices' ) );
    144                 add_action( 'network_admin_notices', array( $this, 'admin_notices' ) );
     116                add_action( bp_core_admin_hook(),       array( $this, 'admin_menus' ), 5 );
    145117
    146118                // Enqueue all admin JS and CSS
    147                 add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts'  ) );
     119                add_action( 'bp_admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
    148120
    149121                /** BuddyPress Actions ************************************************/
    150122
    151123                // Add settings
    152                 add_action( 'bp_admin_init',      array( $this, 'register_admin_settings' ) );
     124                add_action( 'bp_register_admin_settings', array( $this, 'register_admin_settings' ) );
    153125
    154126                /** Filters ***********************************************************/
    155127
    156128                // Add link to settings page
    157                 add_filter( 'plugin_action_links', array( $this, 'add_settings_link' ), 10, 2 );
    158         }
    159 
    160         public function start_wizard() {
    161                 $this->wizard = new BP_Core_Setup_Wizard;
     129                add_filter( 'plugin_action_links', array( $this, 'modify_plugin_action_links' ), 10, 2 );
    162130        }
    163131
     
    173141        public function admin_menus() {
    174142
    175                 // In maintenance mode
    176                 if ( bp_get_maintenance_mode() ) {
    177 
    178                         if ( !current_user_can( 'manage_options' ) ) {
    179                                 return;
    180                         }
    181 
    182                         if ( bp_get_maintenance_mode() == 'install' ) {
    183                                 $status = __( 'BuddyPress Setup', 'buddypress' );
    184                         } else {
    185                                 $status = __( 'Update BuddyPress',  'buddypress' );
    186                         }
    187 
    188                         if ( bp_get_wizard() ) {
    189                                 if ( ! is_multisite() || bp_is_multiblog_mode() ) {
    190                                         $hook = add_dashboard_page( $status, $status, 'manage_options', 'bp-wizard', array( bp_get_wizard(), 'html' ) );
    191                                 } else {
    192                                         $hook = add_submenu_page( 'update-core.php', $status, $status, 'manage_options', 'bp-wizard', array( bp_get_wizard(), 'html' ) );
    193                                 }
    194                         }
    195 
    196                 // Not in maintenance mode
    197                 } else {
    198 
    199                         // Bail if user cannot moderate
    200                         if ( ! bp_current_user_can( 'manage_options' ) ) {
    201                                 return;
    202                         }
    203 
    204                         $hooks = array();
    205                         $page  = bp_core_do_network_admin()  ? 'settings.php' : 'options-general.php';
    206 
    207                         // Changed in BP 1.6 . See bp_core_admin_backpat_menu()
    208                         $hooks[] = add_menu_page(
    209                                 __( 'BuddyPress', 'buddypress' ),
    210                                 __( 'BuddyPress', 'buddypress' ),
    211                                 'manage_options',
    212                                 'bp-general-settings',
    213                                 'bp_core_admin_backpat_menu',
    214                                 'div'
    215                         );
    216 
    217                         $hooks[] = add_submenu_page(
    218                                 'bp-general-settings',
    219                                 __( 'BuddyPress Help', 'buddypress' ),
    220                                 __( 'Help', 'buddypress' ),
    221                                 'manage_options',
    222                                 'bp-general-settings',
    223                                 'bp_core_admin_backpat_page'
    224                         );
    225 
    226                         // Add the option pages
    227                         $hooks[] = add_submenu_page(
    228                                 $page,
    229                                 __( 'BuddyPress Components', 'buddypress' ),
    230                                 __( 'BuddyPress', 'buddypress' ),
    231                                 'manage_options',
    232                                 'bp-components',
    233                                 'bp_core_admin_components_settings'
    234                         );
    235 
    236                         $hooks[] = add_submenu_page(
    237                                 $page,
    238                                 __( 'BuddyPress Pages', 'buddypress' ),
    239                                 __( 'BuddyPress Pages', 'buddypress' ),
    240                                 'manage_options',
    241                                 'bp-page-settings',
    242                                 'bp_core_admin_slugs_settings'
    243                         );
    244 
    245                         $hooks[] = add_submenu_page(
    246                                 $page,
    247                                 __( 'BuddyPress Settings', 'buddypress' ),
    248                                 __( 'BuddyPress Settings', 'buddypress' ),
    249                                 'manage_options',
    250                                 'bp-settings',
    251                                 'bp_core_admin_settings'
    252                         );
    253 
    254                         // Fudge the highlighted subnav item when on a BuddyPress admin page
    255                         foreach( $hooks as $hook ) {
    256                                 add_action( "admin_head-$hook", 'bp_core_modify_admin_menu_highlight' );
    257                         }
     143                // Bail if user cannot moderate
     144                if ( ! bp_current_user_can( 'manage_options' ) )
     145                        return;
     146
     147                // About
     148                add_dashboard_page(
     149                        __( 'Welcome to BuddyPress',  'buddypress' ),
     150                        __( 'Welcome to BuddyPress',  'buddypress' ),
     151                        'manage_options',
     152                        'bp-about',
     153                        array( $this, 'about_screen' )
     154                );
     155
     156                // Credits
     157                add_dashboard_page(
     158                        __( 'Welcome to BuddyPress',  'buddypress' ),
     159                        __( 'Welcome to BuddyPress',  'buddypress' ),
     160                        'manage_options',
     161                        'bp-credits',
     162                        array( $this, 'credits_screen' )
     163                );
     164
     165                $hooks = array();
     166                $page  = bp_core_do_network_admin()  ? 'settings.php' : 'options-general.php';
     167
     168                // Changed in BP 1.6 . See bp_core_admin_backpat_menu()
     169                $hooks[] = add_menu_page(
     170                        __( 'BuddyPress', 'buddypress' ),
     171                        __( 'BuddyPress', 'buddypress' ),
     172                        'manage_options',
     173                        'bp-general-settings',
     174                        'bp_core_admin_backpat_menu',
     175                        'div'
     176                );
     177
     178                $hooks[] = add_submenu_page(
     179                        'bp-general-settings',
     180                        __( 'BuddyPress Help', 'buddypress' ),
     181                        __( 'Help', 'buddypress' ),
     182                        'manage_options',
     183                        'bp-general-settings',
     184                        'bp_core_admin_backpat_page'
     185                );
     186
     187                // Add the option pages
     188                $hooks[] = add_submenu_page(
     189                        $page,
     190                        __( 'BuddyPress Components', 'buddypress' ),
     191                        __( 'BuddyPress', 'buddypress' ),
     192                        'manage_options',
     193                        'bp-components',
     194                        'bp_core_admin_components_settings'
     195                );
     196
     197                $hooks[] = add_submenu_page(
     198                        $page,
     199                        __( 'BuddyPress Pages', 'buddypress' ),
     200                        __( 'BuddyPress Pages', 'buddypress' ),
     201                        'manage_options',
     202                        'bp-page-settings',
     203                        'bp_core_admin_slugs_settings'
     204                );
     205
     206                $hooks[] = add_submenu_page(
     207                        $page,
     208                        __( 'BuddyPress Settings', 'buddypress' ),
     209                        __( 'BuddyPress Settings', 'buddypress' ),
     210                        'manage_options',
     211                        'bp-settings',
     212                        'bp_core_admin_settings'
     213                );
     214
     215                // Fudge the highlighted subnav item when on a BuddyPress admin page
     216                foreach( $hooks as $hook ) {
     217                        add_action( "admin_head-$hook", 'bp_core_modify_admin_menu_highlight' );
    258218                }
    259219        }
     
    267227         * @uses add_settings_field() To add various settings fields
    268228         * @uses register_setting() To register various settings
    269          * @uses do_action() Calls 'bp_register_admin_settings'
    270229         */
    271230        public function register_admin_settings() {
     
    347306                        }
    348307                }
    349 
    350                 do_action( 'bp_register_admin_settings' );
    351308        }
    352309
     
    360317         * @return array Processed links
    361318         */
    362         public function add_settings_link( $links, $file ) {
    363                 if ( buddypress()->basename == $file ) {
    364                         $page = 'bp-components';
    365                         $text = __( 'Settings', 'buddypress' );
    366                         $url  = bp_core_do_network_admin() ? network_admin_url( 'settings.php' ) : admin_url( 'options-general.php' );
    367 
    368                         // If we're in install mode then the link needs to show "Wizard" and link
    369                         // to the wizard. Otherwise we can show the BuddyPress settings page link.
    370                         if ( 'install' == bp_get_maintenance_mode() ) {
    371                                 $page = 'bp-wizard';
    372                                 $text = __( 'Setup Wizard', 'buddypress' );
    373                                 $url  = bp_core_do_network_admin() ? network_admin_url( 'admin.php?page=' . $page ) : admin_url( 'index.php?page=' . $page );
    374                         }
    375 
    376                         $settings_link  = '<a href="' . add_query_arg( array( 'page' => $page ), $url ) . '">' . $text . '</a>';
    377 
    378                         array_unshift( $links, $settings_link );
    379                 }
    380 
    381                 return $links;
    382         }
    383 
    384         /**
    385          * BuddyPress's dedicated admin init action
    386          *
    387          * @since BuddyPress (1.6)
    388          *
    389          * @uses do_action() Calls 'bp_admin_init'
    390          */
    391         public function admin_init() {
    392                 do_action( 'bp_admin_init' );
     319        public function modify_plugin_action_links( $links, $file ) {
     320
     321                // Return normal links if not BuddyPress
     322                if ( plugin_basename( buddypress()->file ) != $file )
     323                        return $links;
     324
     325                $page = 'bp-components';
     326                $text = __( 'Settings', 'buddypress' );
     327                $url  = bp_core_do_network_admin() ? network_admin_url( 'settings.php' ) : admin_url( 'options-general.php' );
     328
     329                // Add a few links to the existing links array
     330                return array_merge( $links, array(
     331                        'settings' => '<a href="' . add_query_arg( array( 'page' => $page      ), $url                      ) . '">' . $text                               . '</a>',
     332                        'about'    => '<a href="' . add_query_arg( array( 'page' => 'bp-about' ), admin_url( 'index.php'  ) ) . '">' . esc_html__( 'About', 'buddypress' ) . '</a>'
     333                ) );
    393334        }
    394335
     
    398339         * @since BuddyPress (1.6)
    399340         */
    400         public function admin_head() { }
     341        public function admin_head() {
     342                $settings_page  = bp_core_do_network_admin()  ? 'settings.php' : 'options-general.php';
     343
     344                // Settings pages
     345                remove_submenu_page( $settings_page, 'bb-forums-setup'  );
     346                remove_submenu_page( $settings_page, 'bp-page-settings' );
     347                remove_submenu_page( $settings_page, 'bp-settings'      );
     348
     349                // About and Credits pages
     350                remove_submenu_page( 'index.php', 'bp-about'   );
     351                remove_submenu_page( 'index.php', 'bp-credits' );
     352        }
    401353
    402354        /**
     
    412364                $file = apply_filters( 'bp_core_admin_common_css', $file );
    413365                wp_enqueue_style( 'bp-admin-common-css', $file, array(), bp_get_version() );
    414 
    415                 // Extra bits for the installation wizard
    416                 if ( bp_get_maintenance_mode() ) {
    417 
    418                         // Styling
    419                         $file = $this->css_url . "wizard{$min}.css";
    420                         $file = apply_filters( 'bp_core_admin_wizard_css', $file );
    421                         wp_enqueue_style( 'bp-admin-wizard-css', $file, array(), bp_get_version() );
    422 
    423                         // JS
    424                         $file = $this->js_url . "wizard{$min}.js";
    425                         $file = apply_filters( 'bp_core_admin_wizard_js', $file );
    426                         wp_enqueue_script( 'bp-admin-wizard-js', $file, array(), bp_get_version() );
    427 
    428                         // We'll need the thickbox too
    429                         wp_enqueue_script( 'thickbox' );
    430                         wp_enqueue_style( 'thickbox' );
    431                 }
    432 
    433                 do_action( 'bp_admin_head' );
    434         }
    435 
    436         /**
    437          * Add any admin notices we might need, mostly for update or new installs
    438          *
    439          * @since BuddyPress (1.6)
    440          *
    441          * @global string $pagenow
    442          * @return If no notice is needed
    443          */
    444         public function admin_notices() {
    445                 global $pagenow;
    446 
    447                 // Bail if not in maintenance mode
    448                 if ( ! bp_get_maintenance_mode() )
    449                         return;
    450 
    451                 // Bail if user cannot manage options
    452                 if ( ! current_user_can( 'manage_options' ) )
    453                         return;
    454 
    455                 // Are we looking at a network?
    456                 if ( bp_core_do_network_admin() ) {
    457 
    458                         // Bail if looking at wizard page
    459                         if ( ( 'admin.php' == $pagenow ) && ( !empty( $_GET['page'] ) && ( 'bp-wizard' == $_GET['page'] ) ) ) {
    460                                 return;
    461                         }
    462 
    463                         // Set the url for the nag
    464                         $url = network_admin_url( 'admin.php?page=bp-wizard' );
    465 
    466                 // Single site
    467                 } else {
    468 
    469                         // Bail if looking at wizard page
    470                         if ( ( 'index.php' == $pagenow ) && ( !empty( $_GET['page'] ) && ( 'bp-wizard' == $_GET['page'] ) ) ) {
    471                                 return;
    472                         }
    473 
    474                         // Set the url for the nag
    475                         $url = admin_url( 'index.php?page=bp-wizard' );
    476                 }
    477 
    478                 // What does the nag say?
    479                 switch ( bp_get_maintenance_mode() ) {
    480 
    481                         // Update text
    482                         case 'update' :
    483                                 $msg = sprintf( __( 'BuddyPress has been updated! Please run the <a href="%s">update wizard</a>.', 'buddypress' ), esc_url( $url ) );
    484                                 break;
    485 
    486                         // First install text
    487                         case 'install' : default :
    488                                 $msg = sprintf( __( 'BuddyPress was successfully activated! Please run the <a href="%s">installation wizard</a>.', 'buddypress' ), esc_url( $url ) );
    489                                 break;
    490                 } ?>
    491 
    492                 <div class="update-nag"><?php echo $msg; ?></div>
     366        }
     367       
     368        /** About *****************************************************************/
     369
     370        /**
     371         * Output the about screen
     372         *
     373         * @since BuddyPress (1.7)
     374         */
     375        public function about_screen() {
     376
     377                list( $display_version ) = explode( '-', bp_get_version() ); ?>
     378
     379                <div class="wrap about-wrap">
     380                        <h1><?php printf( __( 'Welcome to BuddyPress %s' ), $display_version ); ?></h1>
     381                        <div class="about-text"><?php printf( __( 'Thank you for updating to the latest version! BuddyPress %s is ready to make your community a safer, faster, and better looking place to hang out!' ), $display_version ); ?></div>
     382                        <div class="bp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
     383
     384                        <h2 class="nav-tab-wrapper">
     385                                <a class="nav-tab nav-tab-active" href="<?php echo esc_url( bp_get_admin_url( add_query_arg( array( 'page' => 'bp-about' ), 'index.php' ) ) ); ?>">
     386                                        <?php _e( 'What&#8217;s New' ); ?>
     387                                </a><a class="nav-tab" href="<?php echo esc_url( bp_get_admin_url( add_query_arg( array( 'page' => 'bp-credits' ), 'index.php' ) ) ); ?>">
     388                                        <?php _e( 'Credits' ); ?>
     389                                </a>
     390                        </h2>
     391
     392                        <div class="changelog">
     393                                <h3><?php _e( 'Some neat thing', 'buddypress' ); ?></h3>
     394
     395                                <div class="feature-section">
     396                                        <h4><?php _e( 'Whoa', 'buddypress' ); ?></h4>
     397                                        <p><?php _e( 'Nice!', 'buddypress' ); ?></p>
     398
     399                                        <h4><?php _e( 'Wow', 'buddypress' ); ?></h4>
     400                                        <p><?php _e( 'Amazing!', 'buddypress' ); ?></p>
     401                                </div>
     402                        </div>
     403
     404                        <div class="changelog">
     405                                <h3><?php _e( 'Another neat thing', 'buddypress' ); ?></h3>
     406
     407                                <div class="feature-section">
     408                                        <h4><?php _e( 'No way', 'buddypress' ); ?></h4>
     409                                        <p><?php _e( 'Yes way.', 'buddypress' ); ?></p>
     410                                </div>
     411                        </div>
     412
     413                        <div class="changelog">
     414                                <h3><?php _e( 'Under the Hood', 'buddypress' ); ?></h3>
     415
     416                                <div class="feature-section three-col">
     417                                        <div>
     418                                                <h4><?php _e( 'One', 'buddypress' ); ?></h4>
     419                                                <p><?php _e( 'Uh huh.', 'buddypress' ); ?></p>
     420
     421                                                <h4><?php _e( 'Two', 'buddypress' ); ?></h4>
     422                                                <p><?php _e( 'Yeah.', 'buddypress' ); ?></p>
     423                                        </div>
     424
     425                                        <div>
     426                                                <h4><?php _e( 'Three', 'buddypress' ); ?></h4>
     427                                                <p><?php _e( 'I hear ya.', 'buddypress' ); ?></p>
     428
     429                                                <h4><?php _e( 'Four', 'buddypress' ); ?></h4>
     430                                                <p><?php _e( 'Tell me more.', 'buddypress' ); ?></p>
     431                                        </div>
     432
     433                                        <div class="last-feature">
     434                                                <h4><?php _e( 'Five', 'buddypress' ); ?></h4>
     435                                                <p><?php _e( 'Well, shucks.', 'buddypress' ); ?></p>
     436
     437                                                <h4><?php _e( 'Six', 'buddypress' ); ?></h4>
     438                                                <p><?php _e( ' Whoopie!', 'buddypress' ); ?></p>
     439                                        </div>
     440                                </div>
     441                        </div>
     442
     443                        <div class="return-to-dashboard">
     444                                <a href="<?php echo esc_url( bp_get_admin_url( add_query_arg( array( 'page' => 'buddypress' ), 'options-general.php' ) ) ); ?>"><?php _e( 'Go to Community Settings' ); ?></a>
     445                        </div>
     446
     447                </div>
     448
     449                <?php
     450        }
     451
     452        /**
     453         * Output the credits screen
     454         *
     455         * Hardcoding this in here is pretty janky. It's fine for 2.2, but we'll
     456         * want to leverage api.wordpress.org eventually.
     457         *
     458         * @since BuddyPress (1.7)
     459         */
     460        public function credits_screen() {
     461
     462                list( $display_version ) = explode( '-', bp_get_version() ); ?>
     463
     464                <div class="wrap about-wrap">
     465                        <h1><?php printf( __( 'Welcome to BuddyPress %s' ), $display_version ); ?></h1>
     466                        <div class="about-text"><?php printf( __( 'Thank you for updating to the latest version! BuddyPress %s is ready to make your community a safer, faster, and better looking place to hang out!' ), $display_version ); ?></div>
     467                        <div class="bp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
     468
     469                        <h2 class="nav-tab-wrapper">
     470                                <a href="<?php echo esc_url( bp_get_admin_url( add_query_arg( array( 'page' => 'bp-about' ), 'index.php' ) ) ); ?>" class="nav-tab">
     471                                        <?php _e( 'What&#8217;s New' ); ?>
     472                                </a><a href="<?php echo esc_url( bp_get_admin_url( add_query_arg( array( 'page' => 'bp-credits' ), 'index.php' ) ) ); ?>" class="nav-tab nav-tab-active">
     473                                        <?php _e( 'Credits' ); ?>
     474                                </a>
     475                        </h2>
     476
     477                        <p class="about-description"><?php _e( 'BuddyPress is created by a worldwide network of friendly folks.', 'buddypress' ); ?></p>
     478
     479                        <h4 class="wp-people-group"><?php _e( 'Project Leaders', 'buddypress' ); ?></h4>
     480                        <ul class="wp-people-group " id="wp-people-group-project-leaders">
     481                                <li class="wp-person" id="wp-person-apeatling">
     482                                        <a href="http://profiles.wordpress.org/apeatling"><img src="http://0.gravatar.com/avatar/767fc9c115a1b989744c755db47feb60?s=60" class="gravatar" alt="Andy Peatling" /></a>
     483                                        <a class="web" href="http://profiles.wordpress.org/apeatling">Andy Peatling</a>
     484                                        <span class="title"><?php _e( 'Founding Developer', 'buddypress' ); ?></span>
     485                                </li>
     486                                <li class="wp-person" id="wp-person-johnjamesjacoby">
     487                                        <a href="http://profiles.wordpress.org/johnjamesjacoby"><img src="http://0.gravatar.com/avatar/81ec16063d89b162d55efe72165c105f?s=60" class="gravatar" alt="John James Jacoby" /></a>
     488                                        <a class="web" href="http://profiles.wordpress.org/johnjamesjacoby">John James Jacoby</a>
     489                                        <span class="title"><?php _e( 'Project Lead', 'buddypress' ); ?></span>
     490                                </li>
     491                                <li class="wp-person" id="wp-person-boonebgorges">
     492                                        <a href="http://profiles.wordpress.org/boonebgorges"><img src="http://0.gravatar.com/avatar/6a7c997edea340616bcc6d0fe03f65dd?s=60" class="gravatar" alt="Boone B. Gorges" /></a>
     493                                        <a class="web" href="http://profiles.wordpress.org/boonebgorges">Boone B. Gorges</a>
     494                                        <span class="title"><?php _e( 'Lead Developer', 'buddypress' ); ?></span>
     495                                </li>
     496                                <li class="wp-person" id="wp-person-djpaul">
     497                                        <a href="http://profiles.wordpress.org/djpaul"><img src="http://0.gravatar.com/avatar/e341eca9e1a85dcae7127044301b4363?s=60" class="gravatar" alt="Paul Gibbs" /></a>
     498                                        <a class="web" href="http://profiles.wordpress.org/djpaul">Paul Gibbs</a>
     499                                        <span class="title"><?php _e( 'Lead Developer', 'buddypress' ); ?></span>
     500                                </li>
     501                        </ul>
     502
     503                        <h4 class="wp-people-group"><?php _e( 'Contributing Developers', 'buddypress' ); ?></h4>
     504                        <ul class="wp-people-group " id="wp-people-group-contributing-developers">
     505                                <li class="wp-person" id="wp-person-jmdodd">
     506                                        <a href="http://profiles.wordpress.org/jmdodd"><img src="http://0.gravatar.com/avatar/6a7c997edea340616bcc6d0fe03f65dd?s=60" class="gravatar" alt="Jennifer M. Dodd" /></a>
     507                                        <a class="web" href="http://profiles.wordpress.org/jmdodd">Jennifer M. Dodd</a>
     508                                        <span class="title"></span>
     509                                </li>
     510                                <li class="wp-person" id="wp-person-jaredatch">
     511                                        <a href="http://profiles.wordpress.org/jaredatch"><img src="http://0.gravatar.com/avatar/e341eca9e1a85dcae7127044301b4363?s=60" class="gravatar" alt="Jared Atchison" /></a>
     512                                        <a class="web" href="http://profiles.wordpress.org/jaredatch">Jared Atchison</a>
     513                                        <span class="title"></span>
     514                                </li>
     515                                <li class="wp-person" id="wp-person-gautamgupta">
     516                                        <a href="http://profiles.wordpress.org/gautamgupta"><img src="http://0.gravatar.com/avatar/b0810422cbe6e4eead4def5ae7a90b34?s=60" class="gravatar" alt="Gautam Gupta" /></a>
     517                                        <a class="web" href="http://profiles.wordpress.org/gautamgupta">Gautam Gupta</a>
     518                                        <span class="title"></span>
     519                                </li>
     520                        </ul>
     521
     522                        <h4 class="wp-people-group"><?php _e( 'Codex Rockstars', 'buddypress' ); ?></h4>
     523                        <ul class="wp-people-group " id="wp-people-group-codex-rockstars">
     524                                <li class="wp-person" id="wp-person-masonjames">
     525                                        <a href="http://profiles.wordpress.org/masonjames"><img src="http://0.gravatar.com/avatar/99dee4d5287d0f9e26ff72e7228d97ac?s=60" class="gravatar" alt="Mason James" /></a>
     526                                        <a class="web" href="http://profiles.wordpress.org/masonjames">Mason James</a>
     527                                        <span class="title"></span>
     528                                </li>
     529                                <li class="wp-person" id="wp-person-wordsforwp">
     530                                        <a href="http://profiles.wordpress.org/wordsforwp"><img src="http://0.gravatar.com/avatar/5437119b446adad1af813c44944e6c9c?s=60" class="gravatar" alt="Siobhan McKeown" /></a>
     531                                        <a class="web" href="http://profiles.wordpress.org/wordsforwp">Siobhan McKeown</a>
     532                                        <span class="title"></span>
     533                                </li>
     534                                <li class="wp-person" id="wp-person-JarretC">
     535                                        <a href="http://profiles.wordpress.org/JarretC"><img src="http://0.gravatar.com/avatar/e00501bf782b42d5db19ff75fca14f6a?s=60" class="gravatar" alt="Jarret Cade" /></a>
     536                                        <a class="web" href="http://profiles.wordpress.org/JarretC">Jarret Cade</a>
     537                                        <span class="title"></span>
     538                                </li>
     539                        </ul>
     540
     541                        <h4 class="wp-people-group"><?php _e( 'Core Contributors to BuddyPress 1.7', 'buddypress' ); ?></h4>
     542                        <p class="wp-credits-list">
     543                                <a href="http://profiles.wordpress.org/alexvorn2">alexvorn2</a>,
     544                                <a href="http://profiles.wordpress.org/anointed">anointed</a>,
     545                                <a href="http://profiles.wordpress.org/chexee">chexee</a>,
     546                                <a href="http://profiles.wordpress.org/cnorris23">cnorris23</a>,
     547                                <a href="http://profiles.wordpress.org/DanielJuhl">DanielJuhl</a>,
     548                                <a href="http://profiles.wordpress.org/daveshine">daveshine</a>,
     549                                <a href="http://profiles.wordpress.org/dimadin">dimadin</a>,
     550                                <a href="http://profiles.wordpress.org/gawain">gawain</a>,
     551                                <a href="http://profiles.wordpress.org/iamzippy">iamzippy</a>,
     552                                <a href="http://profiles.wordpress.org/isaacchapman">isaacchapman</a>,
     553                                <a href="http://profiles.wordpress.org/jane">jane</a>,
     554                                <a href="http://profiles.wordpress.org/jkudish">jkudish</a>,
     555                                <a href="http://profiles.wordpress.org/mamaduka">mamaduka</a>,
     556                                <a href="http://profiles.wordpress.org/mercime">mercime</a>,
     557                                <a href="http://profiles.wordpress.org/mesayre">mesayre</a>,
     558                                <a href="http://profiles.wordpress.org/mordauk">mordauk</a>,
     559                                <a href="http://profiles.wordpress.org/MZAWeb">MZAWeb</a>,
     560                                <a href="http://profiles.wordpress.org/netweb">netweb</a>,
     561                                <a href="http://profiles.wordpress.org/nexia">nexia</a>,
     562                                <a href="http://profiles.wordpress.org/Omicron7">Omicron7</a>,
     563                                <a href="http://profiles.wordpress.org/otto42">otto42</a>,
     564                                <a href="http://profiles.wordpress.org/pavelevap">pavelevap</a>,
     565                                <a href="http://profiles.wordpress.org/plescheff">plescheff</a>,
     566                                <a href="http://profiles.wordpress.org/scribu">scribu</a>,
     567                                <a href="http://profiles.wordpress.org/sorich87">sorich87</a>,
     568                                <a href="http://profiles.wordpress.org/SteveAtty">SteveAtty</a>,
     569                                <a href="http://profiles.wordpress.org/tmoorewp">tmoorewp</a>,
     570                                <a href="http://profiles.wordpress.org/tott">tott</a>,
     571                                <a href="http://profiles.wordpress.org/tungdo">tungdo</a>,
     572                                <a href="http://profiles.wordpress.org/vibol">vibol</a>,
     573                                <a href="http://profiles.wordpress.org/wonderboymusic">wonderboymusic</a>,
     574                                <a href="http://profiles.wordpress.org/westi">westi</a>,
     575                                <a href="http://profiles.wordpress.org/xiosen">xiosen</a>,
     576                        </p>
     577
     578                        <div class="return-to-dashboard">
     579                                <a href="<?php echo esc_url( bp_get_admin_url( add_query_arg( array( 'page' => 'buddypress' ), 'options-general.php' ) ) ); ?>"><?php _e( 'Go to Community Settings' ); ?></a>
     580                        </div>
     581
     582                </div>
    493583
    494584                <?php
  • trunk/bp-core/bp-core-cssjs.php

    r6342 r6558  
    44
    55function bp_core_confirmation_js() {
    6         global $wpdb;
    76
    8         if ( is_multisite() && $wpdb->blogid != bp_get_root_blog_id() )
     7        if ( is_multisite() && ! bp_is_root_blog() )
    98                return false;
    109
     
    1918<?php
    2019}
    21 add_action( 'wp_head', 'bp_core_confirmation_js', 100 );
     20add_action( 'wp_head',    'bp_core_confirmation_js', 100 );
     21add_action( 'admin_head', 'bp_core_confirmation_js', 100 );
    2222
    2323/**
  • trunk/bp-core/bp-core-functions.php

    r6492 r6558  
    7979
    8080                return $retval;
    81         }
    82 
    83 /**
    84  * Output the BuddyPress maintenance mode
    85  *
    86  * @since BuddyPress (1.6)
    87  * @uses bp_get_maintenance_mode() To get the BuddyPress maintenance mode
    88  */
    89 function bp_maintenance_mode() {
    90         echo bp_get_maintenance_mode();
    91 }
    92         /**
    93          * Return the BuddyPress maintenance mode
    94          *
    95          * @since BuddyPress (1.6)
    96          * @global BuddyPress $bp
    97          * @return string The BuddyPress maintenance mode
    98          */
    99         function bp_get_maintenance_mode() {
    100                 global $bp;
    101                 return $bp->maintenance_mode;
    10281        }
    10382
  • trunk/bp-core/deprecated/1.7.php

    r6485 r6558  
    1111if ( !defined( 'ABSPATH' ) ) exit;
    1212
     13/**
     14 * Output the BuddyPress maintenance mode
     15 *
     16 * @since BuddyPress (1.6)
     17 * @uses bp_get_maintenance_mode() To get the BuddyPress maintenance mode
     18 */
     19function bp_maintenance_mode() {
     20        echo bp_get_maintenance_mode();
     21}
     22        /**
     23         * Return the BuddyPress maintenance mode
     24         *
     25         * @since BuddyPress (1.6)
     26         * @return string The BuddyPress maintenance mode
     27         */
     28        function bp_get_maintenance_mode() {
     29                return buddypress()->maintenance_mode;
     30        }
    1331
    1432function xprofile_get_profile() {
     
    5977        return $themes;
    6078}
     79
     80/** Admin *********************************************************************/
     81
     82
     83/**
     84 * Verify that some BP prerequisites are set up properly, and notify the admin if not
     85 *
     86 * On every Dashboard page, this function checks the following:
     87 *   - that pretty permalinks are enabled
     88 *   - that a BP-compatible theme is activated
     89 *   - that every BP component that needs a WP page for a directory has one
     90 *   - that no WP page has multiple BP components associated with it
     91 * The administrator will be shown a notice for each check that fails.
     92 *
     93 * @package BuddyPress Core
     94 */
     95function bp_core_activation_notice() {
     96        global $wp_rewrite, $wpdb;
     97
     98        $bp = buddypress();
     99
     100        // Only the super admin gets warnings
     101        if ( !bp_current_user_can( 'bp_moderate' ) )
     102                return;
     103
     104        // On multisite installs, don't load on a non-root blog, unless do_network_admin is
     105        // overridden
     106        if ( is_multisite() && bp_core_do_network_admin() && !bp_is_root_blog() )
     107                return;
     108
     109        // Don't show these messages during setup or upgrade
     110        if ( !empty( $bp->maintenance_mode ) )
     111                return;
     112
     113        /**
     114         * Check to make sure that the blog setup routine has run. This can't happen during the
     115         * wizard because of the order which the components are loaded. We check for multisite here
     116         * on the off chance that someone has activated the blogs component and then disabled MS
     117         */
     118        if ( bp_is_active( 'blogs' ) ) {
     119                $count = $wpdb->get_var( "SELECT COUNT(*) FROM {$bp->blogs->table_name}" );
     120
     121                if ( empty( $count ) ) {
     122                        bp_blogs_record_existing_blogs();
     123                }
     124        }
     125
     126        /**
     127         * Are pretty permalinks enabled?
     128         */
     129        if ( isset( $_POST['permalink_structure'] ) )
     130                return false;
     131
     132        if ( empty( $wp_rewrite->permalink_structure ) ) {
     133                bp_core_add_admin_notice( sprintf( __( '<strong>BuddyPress is almost ready</strong>. You must <a href="%s">update your permalink structure</a> to something other than the default for it to work.', 'buddypress' ), admin_url( 'options-permalink.php' ) ) );
     134        }
     135
     136        /**
     137         * Check for orphaned BP components (BP component is enabled, no WP page exists)
     138         */
     139        $orphaned_components = array();
     140        $wp_page_components  = array();
     141
     142        // Only components with 'has_directory' require a WP page to function
     143        foreach( array_keys( $bp->loaded_components ) as $component_id ) {
     144                if ( !empty( $bp->{$component_id}->has_directory ) ) {
     145                        $wp_page_components[] = array(
     146                                'id'   => $component_id,
     147                                'name' => isset( $bp->{$component_id}->name ) ? $bp->{$component_id}->name : ucwords( $bp->{$component_id}->id )
     148                        );
     149                }
     150        }
     151
     152        // Activate and Register are special cases. They are not components but they need WP pages.
     153        // If user registration is disabled, we can skip this step.
     154        if ( bp_get_signup_allowed() ) {
     155                $wp_page_components[] = array(
     156                        'id'   => 'activate',
     157                        'name' => __( 'Activate', 'buddypress' )
     158                );
     159
     160                $wp_page_components[] = array(
     161                        'id'   => 'register',
     162                        'name' => __( 'Register', 'buddypress' )
     163                );
     164        }
     165
     166        foreach( $wp_page_components as $component ) {
     167                if ( !isset( $bp->pages->{$component['id']} ) ) {
     168                        $orphaned_components[] = $component['name'];
     169                }
     170        }
     171
     172        // Special case: If the Forums component is orphaned, but the bbPress 1.x installation is
     173        // not correctly set up, don't show a nag. (In these cases, it's probably the case that the
     174        // user is using bbPress 2.x; see https://buddypress.trac.wordpress.org/ticket/4292
     175        if ( isset( $bp->forums->name ) && in_array( $bp->forums->name, $orphaned_components ) && !bp_forums_is_installed_correctly() ) {
     176                $forum_key = array_search( $bp->forums->name, $orphaned_components );
     177                unset( $orphaned_components[$forum_key] );
     178                $orphaned_components = array_values( $orphaned_components );
     179        }
     180
     181        if ( !empty( $orphaned_components ) ) {
     182                $admin_url = bp_get_admin_url( add_query_arg( array( 'page' => 'bp-page-settings' ), 'admin.php' ) );
     183                $notice    = sprintf( __( 'The following active BuddyPress Components do not have associated WordPress Pages: %2$s. <a href="%1$s" class="button-secondary">Repair</a>', 'buddypress' ), $admin_url, '<strong>' . implode( '</strong>, <strong>', $orphaned_components ) . '</strong>' );
     184
     185                bp_core_add_admin_notice( $notice );
     186        }
     187
     188        /**
     189         * BP components cannot share a single WP page. Check for duplicate assignments, and post
     190         * a message if found.
     191         */
     192        $dupe_names = array();
     193        $page_ids   = (array)bp_core_get_directory_page_ids();
     194        $dupes      = array_diff_assoc( $page_ids, array_unique( $page_ids ) );
     195
     196        if ( !empty( $dupes ) ) {
     197                foreach( array_keys( $dupes ) as $dupe_component ) {
     198                        $dupe_names[] = $bp->pages->{$dupe_component}->title;
     199                }
     200
     201                // Make sure that there are no duplicate duplicates :)
     202                $dupe_names = array_unique( $dupe_names );
     203        }
     204
     205        // If there are duplicates, post a message about them
     206        if ( !empty( $dupe_names ) ) {
     207                $admin_url = bp_get_admin_url( add_query_arg( array( 'page' => 'bp-page-settings' ), 'admin.php' ) );
     208                $notice    = sprintf( __( 'Each BuddyPress Component needs its own WordPress page. The following WordPress Pages have more than one component associated with them: %2$s. <a href="%1$s" class="button-secondary">Repair</a>', 'buddypress' ), $admin_url, '<strong>' . implode( '</strong>, <strong>', $dupe_names ) . '</strong>' );
     209
     210                bp_core_add_admin_notice( $notice );
     211        }
     212}
  • trunk/bp-loader.php

    r6537 r6558  
    279279                /** Loading ***********************************************************/
    280280
    281                 $this->maintenance_mode = '';
    282281                $this->load_deprecated  = true;
    283282
     
    377376                /** Update/Install ****************************************************/
    378377
    379                 // This is a new installation
    380                 if ( is_admin() ) {
    381 
    382                         // New installation
    383                         if ( empty( $this->db_version_raw ) ) {
    384                                 $this->maintenance_mode = 'install';
    385 
    386                         // Update
    387                         } elseif ( (int) $this->db_version_raw < (int) $this->db_version ) {
    388                                 $this->maintenance_mode = 'update';
    389                         }
    390 
    391                         // The installation process requires a few BuddyPress core libraries
    392                         if ( !empty( $this->maintenance_mode ) ) {
    393                                 require( $this->plugin_dir . 'bp-core/bp-core-admin.php'     );
    394                                 require( $this->plugin_dir . 'bp-core/bp-core-functions.php' );
    395                                 require( $this->plugin_dir . 'bp-core/bp-core-template.php'  );
    396                                 require( $this->plugin_dir . 'bp-core/bp-core-update.php'    );
    397                                 require( $this->plugin_dir . 'bp-core/bp-core-caps.php'      );
    398                                 require( $this->plugin_dir . 'bp-core/bp-core-options.php'   );
    399 
    400                                 /**
    401                                  * Textdomain is usually loaded via the bp_core_loaded action, but
    402                                  * that action isn't available when BP is in maintenance mode.
    403                                  */
    404                                 add_action( 'plugins_loaded', 'bp_core_load_buddypress_textdomain', 9 );
    405 
    406                                 // Load up BuddyPress's admin
    407                                 add_action( 'plugins_loaded', 'bp_admin' );
    408                         }
    409                 }
    410 
    411                 // Not in maintenance mode
    412                 if ( empty( $this->maintenance_mode ) ) {
    413 
    414                         // Theme compatability
    415                         require( $this->plugin_dir . 'bp-core/bp-core-template-loader.php'     );
    416                         require( $this->plugin_dir . 'bp-core/bp-core-theme-compatibility.php' );
    417 
    418                         // Require all of the BuddyPress core libraries
    419                         require( $this->plugin_dir . 'bp-core/bp-core-dependency.php' );
    420                         require( $this->plugin_dir . 'bp-core/bp-core-actions.php'    );
    421                         require( $this->plugin_dir . 'bp-core/bp-core-caps.php'       );
    422                         require( $this->plugin_dir . 'bp-core/bp-core-cache.php'      );
    423                         require( $this->plugin_dir . 'bp-core/bp-core-cssjs.php'      );
    424                         require( $this->plugin_dir . 'bp-core/bp-core-update.php'     );
    425                         require( $this->plugin_dir . 'bp-core/bp-core-options.php'    );
    426                         require( $this->plugin_dir . 'bp-core/bp-core-classes.php'    );
    427                         require( $this->plugin_dir . 'bp-core/bp-core-filters.php'    );
    428                         require( $this->plugin_dir . 'bp-core/bp-core-avatars.php'    );
    429                         require( $this->plugin_dir . 'bp-core/bp-core-widgets.php'    );
    430                         require( $this->plugin_dir . 'bp-core/bp-core-template.php'   );
    431                         require( $this->plugin_dir . 'bp-core/bp-core-adminbar.php'   );
    432                         require( $this->plugin_dir . 'bp-core/bp-core-buddybar.php'   );
    433                         require( $this->plugin_dir . 'bp-core/bp-core-catchuri.php'   );
    434                         require( $this->plugin_dir . 'bp-core/bp-core-component.php'  );
    435                         require( $this->plugin_dir . 'bp-core/bp-core-functions.php'  );
    436                         require( $this->plugin_dir . 'bp-core/bp-core-moderation.php' );
    437                         require( $this->plugin_dir . 'bp-core/bp-core-loader.php'     );
    438 
    439                         // Skip or load deprecated content
    440                         if ( false !== $this->load_deprecated ) {
    441                                 require( $this->plugin_dir . 'bp-core/deprecated/1.5.php' );
    442                                 require( $this->plugin_dir . 'bp-core/deprecated/1.6.php' );
    443                                 require( $this->plugin_dir . 'bp-core/deprecated/1.7.php' );
    444                         }
     378                // Theme compatability
     379                require( $this->plugin_dir . 'bp-core/bp-core-template-loader.php'     );
     380                require( $this->plugin_dir . 'bp-core/bp-core-theme-compatibility.php' );
     381
     382                // Require all of the BuddyPress core libraries
     383                require( $this->plugin_dir . 'bp-core/bp-core-dependency.php' );
     384                require( $this->plugin_dir . 'bp-core/bp-core-actions.php'    );
     385                require( $this->plugin_dir . 'bp-core/bp-core-caps.php'       );
     386                require( $this->plugin_dir . 'bp-core/bp-core-cache.php'      );
     387                require( $this->plugin_dir . 'bp-core/bp-core-cssjs.php'      );
     388                require( $this->plugin_dir . 'bp-core/bp-core-update.php'     );
     389                require( $this->plugin_dir . 'bp-core/bp-core-options.php'    );
     390                require( $this->plugin_dir . 'bp-core/bp-core-classes.php'    );
     391                require( $this->plugin_dir . 'bp-core/bp-core-filters.php'    );
     392                require( $this->plugin_dir . 'bp-core/bp-core-avatars.php'    );
     393                require( $this->plugin_dir . 'bp-core/bp-core-widgets.php'    );
     394                require( $this->plugin_dir . 'bp-core/bp-core-template.php'   );
     395                require( $this->plugin_dir . 'bp-core/bp-core-adminbar.php'   );
     396                require( $this->plugin_dir . 'bp-core/bp-core-buddybar.php'   );
     397                require( $this->plugin_dir . 'bp-core/bp-core-catchuri.php'   );
     398                require( $this->plugin_dir . 'bp-core/bp-core-component.php'  );
     399                require( $this->plugin_dir . 'bp-core/bp-core-functions.php'  );
     400                require( $this->plugin_dir . 'bp-core/bp-core-moderation.php' );
     401                require( $this->plugin_dir . 'bp-core/bp-core-loader.php'     );
     402
     403                // Skip or load deprecated content
     404                if ( false !== $this->load_deprecated ) {
     405                        require( $this->plugin_dir . 'bp-core/deprecated/1.5.php' );
     406                        require( $this->plugin_dir . 'bp-core/deprecated/1.6.php' );
     407                        require( $this->plugin_dir . 'bp-core/deprecated/1.7.php' );
    445408                }
    446409        }
Note: See TracChangeset for help on using the changeset viewer.