Changeset 4815 for trunk/includes/extend/buddypress/group.php
- Timestamp:
- 03/17/2013 01:17:54 PM (13 years ago)
- File:
-
- 1 edited
-
trunk/includes/extend/buddypress/group.php (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/includes/extend/buddypress/group.php
r4809 r4815 87 87 // Remove group forum cap map when view is done 88 88 add_action( 'bbp_after_group_forum_display', array( $this, 'remove_group_forum_meta_cap_map' ) ); 89 90 // bbPress needs to listen to BuddyPress group deletion. 91 add_action( 'groups_before_delete_group', array( $this, 'disconnect_forum_from_group' ) ); 92 93 // Adds a bbPress metabox to the new BuddyPress Group Admin UI 94 add_action( 'bp_groups_admin_meta_boxes', array( $this, 'group_admin_ui_edit_screen' ) ); 95 96 // Saves the bbPress options if they come from the BuddyPress Group Admin UI 97 add_action( 'bp_group_admin_edit_after', array( $this, 'edit_screen_save' ) ); 89 98 } 90 99 … … 240 249 * 241 250 * @since bbPress (r3563) 251 * @param object $group (the group to edit if in Group Admin UI) 252 * @uses is_admin() To check if we're in the Group Admin UI 242 253 * @uses bbp_get_template_part() 243 254 */ 244 public function edit_screen() { 245 246 $forum_ids = bbp_get_group_forum_ids( bp_get_new_group_id() ); 247 248 if ( !empty( $forum_ids ) ) 255 public function edit_screen( $group = false ) { 256 $forum_id = 0; 257 $group_id = empty( $group->id ) ? bp_get_new_group_id() : $group->id ; 258 $forum_ids = bbp_get_group_forum_ids( $group_id ); 259 260 // Get the first forum ID 261 if ( !empty( $forum_ids ) ) { 249 262 $forum_id = (int) is_array( $forum_ids ) ? $forum_ids[0] : $forum_ids; 250 251 $checked = bp_get_new_group_enable_forum() || bp_group_is_forum_enabled( bp_get_group_id() ); ?> 263 } 264 265 // Should box be checked already? 266 $checked = is_admin() ? bp_group_is_forum_enabled( $group ) : bp_get_new_group_enable_forum() || bp_group_is_forum_enabled( bp_get_group_id() ); ?> 252 267 253 268 <h4><?php _e( 'Group Forum Settings', 'bbpress' ); ?></h4> … … 279 294 <?php endif; ?> 280 295 281 <input type="submit" value="<?php esc_attr_e( 'Save Settings', 'bbpress' ); ?>" /> 296 <?php if ( !is_admin() ) : ?> 297 <input type="submit" value="<?php esc_attr_e( 'Save Settings', 'bbpress' ); ?>" /> 298 <?php endif; ?> 299 282 300 </fieldset> 283 301 … … 285 303 286 304 // Verify intent 287 wp_nonce_field( 'groups_edit_save_' . $this->slug ); 305 if ( is_admin() ) { 306 wp_nonce_field( 'groups_edit_save_' . $this->slug, 'forum_group_admin_ui' ); 307 } else { 308 wp_nonce_field( 'groups_edit_save_' . $this->slug ); 309 } 288 310 } 289 311 … … 292 314 * 293 315 * @since bbPress (r3465) 316 * @param int $group_id (to handle Group Admin UI hook bp_group_admin_edit_after ) 294 317 * @uses bbp_new_forum_handler() To check for forum creation 295 318 * @uses bbp_edit_forum_handler() To check for forum edit 296 319 */ 297 public function edit_screen_save( ) {320 public function edit_screen_save( $group_id = 0 ) { 298 321 299 322 // Bail if not a POST action … … 301 324 return; 302 325 303 // Nonce check 304 if ( ! bbp_verify_nonce_request( 'groups_edit_save_' . $this->slug ) ) { 326 // Admin Nonce check 327 if ( is_admin() ) { 328 check_admin_referer( 'groups_edit_save_' . $this->slug, 'forum_group_admin_ui' ); 329 330 // Theme-side Nonce check 331 } elseif ( ! bbp_verify_nonce_request( 'groups_edit_save_' . $this->slug ) ) { 305 332 bbp_add_error( 'bbp_edit_group_forum_screen_save', __( '<strong>ERROR</strong>: Are you sure you wanted to do that?', 'bbpress' ) ); 306 333 return; 307 }308 309 $edit_forum = !empty( $_POST['bbp-edit-group-forum'] ) ? true : false;310 $forum_id = 0;311 $group_id =bp_get_current_group_id();334 } 335 336 $edit_forum = !empty( $_POST['bbp-edit-group-forum'] ) ? true : false; 337 $forum_id = 0; 338 $group_id = !empty( $group_id ) ? $group_id : bp_get_current_group_id(); 312 339 313 340 // Keymasters have the ability to reconfigure forums … … 372 399 ) ); 373 400 401 // Setup forum args with forum ID 402 $new_forum_args = array( 'forum_id' => $forum_id ); 403 404 // If in admin, also include the group ID 405 if ( is_admin() && !empty( $group_id ) ) { 406 $new_forum_args['group_id'] = $group_id; 407 } 408 374 409 // Run the BP-specific functions for new groups 375 $this->new_forum( array( 'forum_id' => $forum_id ) ); 376 } 377 378 // Redirect after save 379 bp_core_redirect( trailingslashit( bp_get_group_permalink( buddypress()->groups->current_group ) . '/admin/' . $this->slug ) ); 410 $this->new_forum( $new_forum_args ); 411 } 412 413 // Redirect after save when not in admin 414 if ( !is_admin() ) { 415 bp_core_redirect( trailingslashit( bp_get_group_permalink( buddypress()->groups->current_group ) . '/admin/' . $this->slug ) ); 416 } 417 } 418 419 /** 420 * Adds a metabox to BuddyPress Group Admin UI 421 * 422 * @since bbPress (r4814) 423 * 424 * @uses add_meta_box 425 * @uses BBP_Forums_Group_Extension::group_admin_ui_display_metabox() To display the edit screen 426 */ 427 public function group_admin_ui_edit_screen() { 428 add_meta_box( 429 'bbpress_group_admin_ui_meta_box', 430 _x( 'Discussion Forum', 'group admin edit screen', 'bbpress' ), 431 array( &$this, 'group_admin_ui_display_metabox' ), 432 get_current_screen()->id, 433 'side', 434 'core' 435 ); 436 } 437 438 /** 439 * Displays the bbPress metabox in BuddyPress Group Admin UI 440 * 441 * @since bbPress (r4814) 442 * 443 * @param object $item (group object) 444 * @uses add_meta_box 445 * @uses BBP_Forums_Group_Extension::edit_screen() To get the html 446 */ 447 public function group_admin_ui_display_metabox( $item ) { 448 $this->edit_screen( $item ); 380 449 } 381 450 … … 522 591 // Validate forum_id 523 592 $forum_id = bbp_get_forum_id( $forum_args['forum_id'] ); 524 $group_id = bp_get_current_group_id();593 $group_id = !empty( $forum_args['group_id'] ) ? $forum_args['group_id'] : bp_get_current_group_id(); 525 594 526 595 bbp_add_forum_id_to_group( $group_id, $forum_id ); … … 547 616 // Validate forum_id 548 617 $forum_id = bbp_get_forum_id( $forum_args['forum_id'] ); 549 $group_id = bp_get_current_group_id();618 $group_id = !empty( $forum_args['group_id'] ) ? $forum_args['group_id'] : bp_get_current_group_id(); 550 619 551 620 bbp_remove_forum_id_from_group( $group_id, $forum_id ); 552 621 bbp_remove_group_id_from_forum( $forum_id, $group_id ); 622 } 623 624 /** 625 * Listening to BuddyPress Group deletion to remove the forum 626 * 627 * @param int $group_id The group ID 628 * @uses bbp_get_group_forum_ids() 629 * @uses BBP_Forums_Group_Extension::remove_forum() 630 */ 631 public function disconnect_forum_from_group( $group_id = 0 ) { 632 633 // Bail if no group ID available 634 if ( empty( $group_id ) ) { 635 return; 636 } 637 638 // Get the forums for the current group 639 $forum_ids = bbp_get_group_forum_ids( $group_id ); 640 641 // Use the first forum ID 642 if ( empty( $forum_ids ) ) 643 return; 644 645 // Get the first forum ID 646 $forum_id = (int) is_array( $forum_ids ) ? $forum_ids[0] : $forum_ids; 647 $this->remove_forum( array( 648 'forum_id' => $forum_id, 649 'group_id' => $group_id 650 ) ); 553 651 } 554 652 … … 577 675 // Save the group 578 676 $group->save(); 677 678 // Maybe disconnect forum from group 679 if ( empty( $enabled ) ) { 680 $this->disconnect_forum_from_group( $group_id ); 681 } 579 682 580 683 // Return the group
Note: See TracChangeset
for help on using the changeset viewer.