[ Index ] |
PHP Cross Reference of BuddyPress |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * BuddyPress Admin Slug Functions. 4 * 5 * @package BuddyPress 6 * @subpackage CoreAdministration 7 * @since 2.3.0 8 */ 9 10 // Exit if accessed directly. 11 defined( 'ABSPATH' ) || exit; 12 13 /** 14 * Renders the page mapping admin panel. 15 * 16 * @since 1.6.0 17 * @todo Use settings API 18 */ 19 function bp_core_admin_slugs_settings() { 20 bp_core_admin_tabbed_screen_header( __( 'BuddyPress Settings', 'buddypress' ), __( 'Pages', 'buddypress' ) ); 21 ?> 22 23 <div class="buddypress-body"> 24 <form action="" method="post" id="bp-admin-page-form"> 25 26 <?php bp_core_admin_slugs_options(); ?> 27 28 <p class="submit clear"> 29 <input class="button-primary" type="submit" name="bp-admin-pages-submit" id="bp-admin-pages-submit" value="<?php esc_attr_e( 'Save Settings', 'buddypress' ) ?>"/> 30 </p> 31 32 <?php wp_nonce_field( 'bp-admin-pages-setup' ); ?> 33 34 </form> 35 </div> 36 37 <?php 38 } 39 40 /** 41 * Generate a list of directory pages, for use when building Components panel markup. 42 * 43 * @since 2.4.1 44 * 45 * @return array 46 */ 47 function bp_core_admin_get_directory_pages() { 48 $bp = buddypress(); 49 $directory_pages = array(); 50 51 // Loop through loaded components and collect directories. 52 if ( is_array( $bp->loaded_components ) ) { 53 foreach( $bp->loaded_components as $component_slug => $component_id ) { 54 55 // Only components that need directories should be listed here. 56 if ( isset( $bp->{$component_id} ) && !empty( $bp->{$component_id}->has_directory ) ) { 57 58 // The component->name property was introduced in BP 1.5, so we must provide a fallback. 59 $directory_pages[$component_id] = !empty( $bp->{$component_id}->name ) ? $bp->{$component_id}->name : ucwords( $component_id ); 60 } 61 } 62 } 63 64 /** Directory Display *****************************************************/ 65 66 /** 67 * Filters the loaded components needing directory page association to a WordPress page. 68 * 69 * @since 1.5.0 70 * 71 * @param array $directory_pages Array of available components to set associations for. 72 */ 73 return apply_filters( 'bp_directory_pages', $directory_pages ); 74 } 75 76 /** 77 * Generate a list of static pages, for use when building Components panel markup. 78 * 79 * By default, this list contains 'register' and 'activate'. 80 * 81 * @since 2.4.1 82 * 83 * @return array 84 */ 85 function bp_core_admin_get_static_pages() { 86 $static_pages = array( 87 'register' => __( 'Register', 'buddypress' ), 88 'activate' => __( 'Activate', 'buddypress' ), 89 ); 90 91 /** 92 * Filters the default static pages for BuddyPress setup. 93 * 94 * @since 1.6.0 95 * 96 * @param array $static_pages Array of static default static pages. 97 */ 98 return apply_filters( 'bp_static_pages', $static_pages ); 99 } 100 101 /** 102 * Creates reusable markup for page setup on the Components and Pages dashboard panel. 103 * 104 * @package BuddyPress 105 * @since 1.6.0 106 * @todo Use settings API 107 */ 108 function bp_core_admin_slugs_options() { 109 110 // Get the existing WP pages. 111 $existing_pages = bp_core_get_directory_page_ids(); 112 113 // Set up an array of components (along with component names) that have directory pages. 114 $directory_pages = bp_core_admin_get_directory_pages(); 115 116 if ( ! empty( $directory_pages ) ) : ?> 117 118 <h3><?php esc_html_e( 'Directories', 'buddypress' ); ?></h3> 119 120 <p><?php esc_html_e( 'Associate a WordPress Page with each BuddyPress component directory.', 'buddypress' ); ?></p> 121 122 <table class="form-table"> 123 <tbody> 124 125 <?php foreach ( $directory_pages as $name => $label ) : ?> 126 127 <tr valign="top"> 128 <th scope="row"> 129 <label for="bp_pages[<?php echo esc_attr( $name ) ?>]"><?php echo esc_html( $label ) ?></label> 130 </th> 131 132 <td> 133 134 <?php if ( ! bp_is_root_blog() ) switch_to_blog( bp_get_root_blog_id() ); ?> 135 136 <?php echo wp_dropdown_pages( array( 137 'name' => 'bp_pages[' . esc_attr( $name ) . ']', 138 'echo' => false, 139 'show_option_none' => __( '- None -', 'buddypress' ), 140 'selected' => ! empty( $existing_pages[$name] ) ? $existing_pages[$name] : false 141 ) ); ?> 142 143 <?php if ( ! empty( $existing_pages[ $name ] ) && get_post( $existing_pages[ $name ] ) ) : ?> 144 145 <a href="<?php echo esc_url( get_permalink( $existing_pages[$name] ) ); ?>" class="button-secondary" target="_bp"> 146 <?php esc_html_e( 'View', 'buddypress' ); ?> <span class="dashicons dashicons-external" aria-hidden="true"></span> 147 <span class="screen-reader-text"><?php esc_html_e( '(opens in a new tab)', 'buddypress' ); ?></span> 148 </a> 149 150 <?php endif; ?> 151 152 <?php if ( ! bp_is_root_blog() ) restore_current_blog(); ?> 153 154 </td> 155 </tr> 156 157 158 <?php endforeach ?> 159 160 <?php 161 162 /** 163 * Fires after the display of default directories. 164 * 165 * Allows plugins to add their own directory associations. 166 * 167 * @since 1.5.0 168 */ 169 do_action( 'bp_active_external_directories' ); ?> 170 171 </tbody> 172 </table> 173 174 <?php 175 176 endif; 177 178 /** Static Display ********************************************************/ 179 180 $static_pages = bp_core_admin_get_static_pages(); 181 182 if ( ! empty( $static_pages ) ) : ?> 183 184 <h3><?php esc_html_e( 'Registration', 'buddypress' ); ?></h3> 185 186 <?php if ( bp_allow_access_to_registration_pages() ) : ?> 187 <p> 188 <?php esc_html_e( 'Associate WordPress Pages with the following BuddyPress Registration pages.', 'buddypress' ); ?> 189 <?php esc_html_e( 'These pages will only be reachable by users who are not logged in.', 'buddypress' ); ?> 190 </p> 191 192 <table class="form-table"> 193 <tbody> 194 195 <?php foreach ( $static_pages as $name => $label ) : ?> 196 197 <tr valign="top"> 198 <th scope="row"> 199 <label for="bp_pages[<?php echo esc_attr( $name ) ?>]"><?php echo esc_html( $label ) ?></label> 200 </th> 201 202 <td> 203 204 <?php if ( ! bp_is_root_blog() ) switch_to_blog( bp_get_root_blog_id() ); ?> 205 206 <?php echo wp_dropdown_pages( array( 207 'name' => 'bp_pages[' . esc_attr( $name ) . ']', 208 'echo' => false, 209 'show_option_none' => __( '- None -', 'buddypress' ), 210 'selected' => !empty( $existing_pages[$name] ) ? $existing_pages[$name] : false 211 ) ) ?> 212 213 <?php if ( ! bp_is_root_blog() ) restore_current_blog(); ?> 214 215 </td> 216 </tr> 217 218 <?php endforeach; ?> 219 220 <?php 221 222 /** 223 * Fires after the display of default static pages for BuddyPress setup. 224 * 225 * @since 1.5.0 226 */ 227 do_action( 'bp_active_external_pages' ); ?> 228 229 </tbody> 230 </table> 231 <?php else : ?> 232 <?php if ( is_multisite() ) : ?> 233 <p> 234 <?php 235 printf( 236 /* translators: %s: the link to the Network settings page */ 237 esc_html_x( 'Registration is currently disabled. Before associating a page is allowed, please enable registration by selecting either the "User accounts may be registered" or "Both sites and user accounts can be registered" option on %s.', 'Disabled registration message for multisite config', 'buddypress' ), 238 sprintf( 239 '<a href="%1$s">%2$s</a>', 240 esc_url( network_admin_url( 'settings.php' ) ), 241 esc_html_x( 'this page', 'Link text for the Multisite’s network settings page', 'buddypress' ) 242 ) 243 ); 244 ?> 245 </p> 246 <?php else : ?> 247 <p> 248 <?php 249 printf( 250 /* translators: %s: the link to the Site general options page */ 251 esc_html_x( 'Registration is currently disabled. Before associating a page is allowed, please enable registration by clicking on the "Anyone can register" checkbox on %s.', 'Disabled registration message for regular site config', 'buddypress' ), 252 sprintf( 253 '<a href="%1$s">%2$s</a>', 254 esc_url( admin_url( 'options-general.php' ) ), 255 esc_html_x( 'this page', 'Link text for the Site’s general options page', 'buddypress' ) 256 ) 257 ); 258 ?> 259 </p> 260 <?php endif; ?> 261 <?php endif; 262 endif; 263 } 264 265 /** 266 * Handle saving of the BuddyPress slugs. 267 * 268 * @since 1.6.0 269 * @todo Use settings API 270 */ 271 function bp_core_admin_slugs_setup_handler() { 272 273 if ( isset( $_POST['bp-admin-pages-submit'] ) ) { 274 if ( ! check_admin_referer( 'bp-admin-pages-setup' ) ) { 275 return false; 276 } 277 278 // Then, update the directory pages. 279 if ( isset( $_POST['bp_pages'] ) ) { 280 $valid_pages = array_merge( bp_core_admin_get_directory_pages(), bp_core_admin_get_static_pages() ); 281 282 $new_directory_pages = array(); 283 foreach ( (array) $_POST['bp_pages'] as $key => $value ) { 284 if ( isset( $valid_pages[ $key ] ) ) { 285 $new_directory_pages[ $key ] = (int) $value; 286 } 287 } 288 bp_core_update_directory_page_ids( $new_directory_pages ); 289 } 290 291 $base_url = bp_get_admin_url( add_query_arg( array( 'page' => 'bp-page-settings', 'updated' => 'true' ), 'admin.php' ) ); 292 293 wp_redirect( $base_url ); 294 } 295 } 296 add_action( 'bp_admin_init', 'bp_core_admin_slugs_setup_handler' );
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Dec 22 01:00:54 2024 | Cross-referenced by PHPXref 0.7.1 |