Changeset 4769 for trunk/includes/extend/buddypress/group.php
- Timestamp:
- 02/19/2013 12:04:53 AM (13 years ago)
- File:
-
- 1 edited
-
trunk/includes/extend/buddypress/group.php (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/includes/extend/buddypress/group.php
r4746 r4769 45 45 private function setup_variables() { 46 46 47 // Name and slug47 // Component Name 48 48 $this->name = __( 'Forum', 'bbpress' ); 49 49 $this->nav_item_name = __( 'Forum', 'bbpress' ); 50 51 // Component slugs (hardcoded to match bbPress 1.x functionality) 50 52 $this->slug = 'forum'; 51 53 $this->topic_slug = 'topic'; … … 238 240 public function edit_screen() { 239 241 242 $forum_ids = bbp_get_group_forum_ids( bp_get_new_group_id() ); 243 244 if ( !empty( $forum_ids ) ) 245 $forum_id = (int) is_array( $forum_ids ) ? $forum_ids[0] : $forum_ids; 246 240 247 $checked = bp_get_new_group_enable_forum() || bp_group_is_forum_enabled( bp_get_group_id() ); ?> 241 248 242 <h4><?php _e( 'Enable Group Forum', 'bbpress' ); ?></h4> 243 244 <p><?php _e( 'Create a discussion forum to allow members of this group to communicate in a structured, bulletin-board style fashion.', 'bbpress' ); ?></p> 245 246 <div class="checkbox"> 247 <label><input type="checkbox" name="bbp-edit-group-forum" id="bbp-edit-group-forum" value="1"<?php checked( $checked ); ?> /> <?php _e( 'Yes. I want this group to have a forum.', 'bbpress' ); ?></label> 248 </div> 249 250 <p class="description"><?php _e( 'Saying no will not delete existing forum content.', 'bbpress' ); ?></p> 251 252 <input type="submit" value="<?php esc_attr_e( 'Save Settings', 'bbpress' ); ?>" /> 249 <h4><?php _e( 'Group Forum Settings', 'bbpress' ); ?></h4> 250 251 <fieldset> 252 <legend class="screen-reader-text"><?php _e( 'Group Forum Settings', 'bbpress' ); ?></legend> 253 <p><?php _e( 'Create a discussion forum to allow members of this group to communicate in a structured, bulletin-board style fashion.', 'bbpress' ); ?></p> 254 255 <div class="field-group"> 256 <div class="checkbox"> 257 <label><input type="checkbox" name="bbp-edit-group-forum" id="bbp-edit-group-forum" value="1"<?php checked( $checked ); ?> /> <?php _e( 'Yes. I want this group to have a forum.', 'bbpress' ); ?></label> 258 </div> 259 260 <p class="description"><?php _e( 'Saying no will not delete existing forum content.', 'bbpress' ); ?></p> 261 </div> 262 263 <?php if ( is_super_admin() ) : ?> 264 <div class="field-group"> 265 <label for="bbp_group_forum_id"><?php _e( 'Group Forum:', 'bbpress' ); ?></label> 266 <?php 267 bbp_dropdown( array( 268 'select_id' => 'bbp_group_forum_id', 269 'show_none' => __( '(No Forum)', 'bbpress' ), 270 'selected' => $forum_id 271 ) ); 272 ?> 273 <p class="description"><?php _e( 'Network administrators can reconfigure which forum belongs to this group.', 'bbpress' ); ?></p> 274 </div> 275 <?php endif; ?> 276 277 <input type="submit" value="<?php esc_attr_e( 'Save Settings', 'bbpress' ); ?>" /> 278 </fieldset> 253 279 254 280 <?php … … 271 297 return; 272 298 273 check_admin_referer( 'groups_edit_save_' . $this->slug ); 299 // Nonce check 300 if ( ! bbp_verify_nonce_request( 'groups_edit_save_' . $this->slug ) ) { 301 bbp_add_error( 'bbp_edit_group_forum_screen_save', __( '<strong>ERROR</strong>: Are you sure you wanted to do that?', 'bbpress' ) ); 302 return; 303 } 274 304 275 305 $edit_forum = !empty( $_POST['bbp-edit-group-forum'] ) ? true : false; 276 306 $forum_id = 0; 277 307 $group_id = bp_get_current_group_id(); 278 $forum_ids = array_values( bbp_get_group_forum_ids( $group_id ) ); 308 309 // Super admins have the ability to reconfigure forums 310 if ( is_super_admin() ) { 311 $forum_ids = ! empty( $_POST['bbp_group_forum_id'] ) ? (array) (int) $_POST['bbp_group_forum_id'] : array(); 312 313 // Use the existing forum IDs 314 } else { 315 $forum_ids = array_values( bbp_get_group_forum_ids( $group_id ) ); 316 } 279 317 280 318 // Normalize group forum relationships now … … 297 335 $forum_id = (int) ( is_array( $forum_ids ) ? $forum_ids[0] : $forum_ids ); 298 336 } 337 338 // Update the group ID and forum ID relationships 339 bbp_update_group_forum_ids( $group_id, (array) $forum_ids ); 340 bbp_update_forum_group_ids( $forum_id, (array) $group_id ); 299 341 300 342 // Update the group forum setting … … 370 412 public function create_screen_save() { 371 413 372 check_admin_referer( 'groups_create_save_' . $this->slug ); 414 // Nonce check 415 if ( ! bbp_verify_nonce_request( 'groups_create_save_' . $this->slug ) ) { 416 bbp_add_error( 'bbp_create_group_forum_screen_save', __( '<strong>ERROR</strong>: Are you sure you wanted to do that?', 'bbpress' ) ); 417 return; 418 } 373 419 374 420 $create_forum = !empty( $_POST['bbp-create-group-forum'] ) ? true : false; … … 537 583 * Output the forums for a group in the edit screens 538 584 * 585 * As of right now, bbPress only supports 1-to-1 group forum relationships. 586 * In the future, many-to-many should be allowed. 587 * 539 588 * @since bbPress (r3653) 540 589 * @uses bp_get_current_group_id() … … 544 593 */ 545 594 public function display_forums( $offset = 0 ) { 595 global $wp_query; 546 596 547 597 // Allow actions immediately before group forum output … … 551 601 $bbp = bbpress(); 552 602 603 /** Query Resets ******************************************************/ 604 553 605 // Forum data 554 $forum_slug = bp_action_variable( $offset ); 555 $forum_ids = bbp_get_group_forum_ids( bp_get_current_group_id() ); 556 $forum_args = array( 'post__in' => $forum_ids, 'post_parent' => null ); 557 558 // Unset global queries 559 $bbp->forum_query = new stdClass; 560 $bbp->topic_query = new stdClass; 561 $bbp->reply_query = new stdClass; 562 563 // Unset global ID's 564 $bbp->current_forum_id = 0; 565 $bbp->current_topic_id = 0; 566 $bbp->current_reply_id = 0; 567 $bbp->current_topic_tag_id = 0; 568 569 // Reset the post data 570 wp_reset_postdata(); 571 572 // Allow admins special views 573 $post_status = array( bbp_get_closed_status_id(), bbp_get_public_status_id() ); 574 if ( is_super_admin() || current_user_can( 'moderate' ) || bp_is_item_admin() || bp_is_item_mod() ) 575 $post_status = array_merge( $post_status, array( bbp_get_spam_status_id(), bbp_get_trash_status_id() ) ); ?> 606 $forum_action = bp_action_variable( $offset ); 607 $forum_id = array_shift( bbp_get_group_forum_ids( bp_get_current_group_id() ) ); 608 609 // Always load up the group forum 610 bbp_has_forums( array( 611 'ID' => $forum_id, 612 'post_parent' => null 613 ) ); 614 615 // Set the global forum ID 616 $bbp->current_forum_id = $forum_id; 617 618 // Assume forum query 619 bbp_set_query_name( 'bbp_single_forum' ); ?> 576 620 577 621 <div id="bbpress-forums"> 578 622 579 <?php 580 581 // Looking at the group forum root 582 if ( empty( $forum_slug ) || ( 'page' == $forum_slug ) ) : 583 584 // Query forums and show them if they exist 585 if ( !empty( $forum_ids ) && bbp_has_forums( $forum_args ) ) : 586 587 // Only one forum found 588 if ( 1 == $bbp->forum_query->post_count ) : 589 590 // Remove 'name' check for paginated requests 591 if ( 'page' == $forum_slug ) { 592 $forum_args = array( 'post_type' => bbp_get_forum_post_type() ); 593 } else { 594 $forum_args = array( 'name' => $forum_slug, 'post_type' => bbp_get_forum_post_type() ); 595 } 596 597 // Get the forums 598 $forums = get_posts( $forum_args ); 599 600 bbp_the_forum(); 601 602 // Forum exists 603 if ( !empty( $forums ) ) : 604 $forum = $forums[0]; 605 606 // Set up forum data 607 bbpress()->current_forum_id = $forum->ID; 608 bbp_set_query_name( 'bbp_single_forum' ); ?> 609 610 <h3><?php bbp_forum_title(); ?></h3> 611 612 <?php bbp_get_template_part( 'content', 'single-forum' ); ?> 613 614 <?php else : ?> 615 616 <?php bbp_get_template_part( 'feedback', 'no-topics' ); ?> 617 618 <?php bbp_get_template_part( 'form', 'topic' ); ?> 619 620 <?php endif; 621 622 // More than 1 forum found or group forum admin screen 623 elseif ( 1 < $bbp->forum_query->post_count ) : ?> 624 625 <h3><?php _e( 'Forums', 'bbpress' ); ?></h3> 626 627 <?php bbp_get_template_part( 'loop', 'forums' ); ?> 628 629 <h3><?php _e( 'Topics', 'bbpress' ); ?></h3> 630 631 <?php if ( bbp_has_topics( array( 'post_parent__in' => $forum_ids ) ) ) : ?> 632 633 <?php bbp_get_template_part( 'pagination', 'topics' ); ?> 634 635 <?php bbp_get_template_part( 'loop', 'topics' ); ?> 636 637 <?php bbp_get_template_part( 'pagination', 'topics' ); ?> 638 639 <?php bbp_get_template_part( 'form', 'topic' ); ?> 640 641 <?php else : ?> 642 643 <?php bbp_get_template_part( 'feedback', 'no-topics' ); ?> 644 645 <?php bbp_get_template_part( 'form', 'topic' ); ?> 646 647 <?php endif; 623 <?php switch ( $forum_action ) : 624 625 /** Single Forum **********************************************/ 626 627 case false : 628 case 'page' : 629 630 // Query forums and show them if they exist 631 if ( bbp_forums() ) : 632 633 // Setup the forum 634 bbp_the_forum(); ?> 635 636 <h3><?php bbp_forum_title(); ?></h3> 637 638 <?php bbp_get_template_part( 'content', 'single-forum' ); 648 639 649 640 // No forums found … … 651 642 652 643 <div id="message" class="info"> 653 <p><?php _e( 'This group does not currently have a ny forums.', 'bbpress' ); ?></p>644 <p><?php _e( 'This group does not currently have a forum.', 'bbpress' ); ?></p> 654 645 </div> 655 646 656 647 <?php endif; 657 648 658 // No forums found 659 else : ?> 660 661 <div id="message" class="info"> 662 <p><?php _e( 'This group does not currently have any forums.', 'bbpress' ); ?></p> 663 </div> 664 665 <?php endif; 666 667 // Single forum 668 elseif ( ( bp_action_variable( $offset ) != $this->slug ) && ( bp_action_variable( $offset ) != $this->topic_slug ) && ( bp_action_variable( $offset ) != $this->reply_slug ) ) : 669 670 // Get forum data 671 $forum_slug = bp_action_variable( $offset ); 672 $forum_args = array( 'name' => $forum_slug, 'post_type' => bbp_get_forum_post_type() ); 673 $forums = get_posts( $forum_args ); 674 675 // Forum exists 676 if ( !empty( $forums ) ) : 677 $forum = $forums[0]; 678 679 // Set up forum data 680 $forum_id = bbpress()->current_forum_id = $forum->ID; 681 682 // Reset necessary forum_query attributes for forums loop to function 683 $bbp->forum_query->query_vars['post_type'] = bbp_get_forum_post_type(); 684 $bbp->forum_query->in_the_loop = true; 685 $bbp->forum_query->post = get_post( $forum_id ); 686 687 // Forum edit 688 if ( bp_action_variable( $offset + 1 ) == $bbp->edit_id ) : 689 global $wp_query, $post; 690 691 $wp_query->bbp_is_edit = true; 692 $wp_query->bbp_is_forum_edit = true; 693 $post = $forum; 694 695 bbp_set_query_name( 'bbp_forum_form' ); 696 bbp_get_template_part( 'form', 'forum' ); 697 698 else : 699 bbp_set_query_name( 'bbp_single_forum' ); ?> 700 649 break; 650 651 /** Single Topic **********************************************/ 652 653 case $this->topic_slug : 654 655 // Get the topic 656 bbp_has_topics( array( 657 'name' => bp_action_variable( $offset + 1 ), 658 'posts_per_page' => 1 659 ) ); 660 661 // If no topic, 404 662 if ( ! bbp_topics() ) { 663 bp_do_404( bbp_get_forum_permalink( $forum_id ) ); ?> 701 664 <h3><?php bbp_forum_title(); ?></h3> 702 703 <?php bbp_get_template_part( 'content', 'single-forum' ); 704 705 endif; 706 707 else : 708 bbp_get_template_part( 'feedback', 'no-topics' ); 709 bbp_get_template_part( 'form', 'topic' ); 710 711 endif; 712 713 // Single topic 714 elseif ( bp_action_variable( $offset ) == $this->topic_slug ) : 715 716 // Get topic data 717 $topic_slug = bp_action_variable( $offset + 1 ); 718 $topic_args = array( 'name' => $topic_slug, 'post_type' => bbp_get_topic_post_type(), 'post_status' => $post_status ); 719 $topics = get_posts( $topic_args ); 720 721 // Topic exists 722 if ( !empty( $topics ) ) : 723 $topic = $topics[0]; 724 725 // Set up topic data 726 $topic_id = bbpress()->current_topic_id = $topic->ID; 727 $forum_id = bbp_get_topic_forum_id( $topic_id ); 728 729 // Reset necessary forum_query attributes for topics loop to function 730 $bbp->forum_query->query_vars['post_type'] = bbp_get_forum_post_type(); 731 $bbp->forum_query->in_the_loop = true; 732 $bbp->forum_query->post = get_post( $forum_id ); 733 734 // Reset necessary topic_query attributes for topics loop to function 735 $bbp->topic_query->query_vars['post_type'] = bbp_get_topic_post_type(); 736 $bbp->topic_query->in_the_loop = true; 737 $bbp->topic_query->post = $topic; 665 <?php bbp_get_template_part( 'feedback', 'no-topics' ); 666 return; 667 } 668 669 // Setup the topic 670 bbp_the_topic(); ?> 671 672 <h3><?php bbp_topic_title(); ?></h3> 673 674 <?php 738 675 739 676 // Topic edit 740 if ( bp_action_variable( $offset + 2 ) == $bbp->edit_id ) : 741 global $wp_query, $post; 677 if ( bp_action_variable( $offset + 2 ) == bbp_get_edit_rewrite_id() ) : 678 679 // Set the edit switches 742 680 $wp_query->bbp_is_edit = true; 743 681 $wp_query->bbp_is_topic_edit = true; 744 $post = $topic; 682 683 // Setup the global forum ID 684 $bbp->current_topic_id = get_the_ID(); 745 685 746 686 // Merge … … 763 703 // Single Topic 764 704 else: 765 bbp_set_query_name( 'bbp_single_topic' ); ?> 766 767 <h3><?php bbp_topic_title(); ?></h3> 768 769 <?php bbp_get_template_part( 'content', 'single-topic' ); 770 705 bbp_set_query_name( 'bbp_single_topic' ); 706 bbp_get_template_part( 'content', 'single-topic' ); 771 707 endif; 772 773 // No Topics 774 else : 775 bbp_get_template_part( 'feedback', 'no-topics' ); 776 bbp_get_template_part( 'form', 'topic' ); 777 778 endif; 779 780 // Single reply 781 elseif ( bp_action_variable( $offset ) == $this->reply_slug ) : 782 783 // Get reply data 784 $reply_slug = bp_action_variable( $offset + 1 ); 785 $reply_args = array( 'name' => $reply_slug, 'post_type' => bbp_get_reply_post_type() ); 786 $replies = get_posts( $reply_args ); 787 788 if ( empty( $replies ) ) 789 return; 790 791 // Get the first reply 792 $reply = $replies[0]; 793 794 // Set up reply data 795 $reply_id = bbpress()->current_reply_id = $reply->ID; 796 $topic_id = bbp_get_reply_topic_id( $reply_id ); 797 $forum_id = bbp_get_reply_forum_id( $reply_id ); 798 799 // Reset necessary forum_query attributes for reply to function 800 $bbp->forum_query->query_vars['post_type'] = bbp_get_forum_post_type(); 801 $bbp->forum_query->in_the_loop = true; 802 $bbp->forum_query->post = get_post( $forum_id ); 803 804 // Reset necessary topic_query attributes for reply to function 805 $bbp->topic_query->query_vars['post_type'] = bbp_get_topic_post_type(); 806 $bbp->topic_query->in_the_loop = true; 807 $bbp->topic_query->post = get_post( $topic_id ); 808 809 // Reset necessary reply_query attributes for reply to function 810 $bbp->reply_query->query_vars['post_type'] = bbp_get_reply_post_type(); 811 $bbp->reply_query->in_the_loop = true; 812 $bbp->reply_query->post = $reply; 813 814 if ( bp_action_variable( $offset + 2 ) == $bbp->edit_id ) : 815 global $wp_query, $post; 816 817 $wp_query->bbp_is_edit = true; 818 $wp_query->bbp_is_reply_edit = true; 819 $post = $reply; 820 821 // Move 822 if ( !empty( $_GET['action'] ) && ( 'move' == $_GET['action'] ) ) : 823 bbp_set_query_name( 'bbp_reply_move' ); 824 bbp_get_template_part( 'form', 'reply-move' ); 825 826 // Edit 827 else : 828 bbp_set_query_name( 'bbp_reply_form' ); 829 bbp_get_template_part( 'form', 'reply' ); 830 708 break; 709 710 /** Single Reply **********************************************/ 711 712 case $this->reply_slug : 713 714 // Get the reply 715 bbp_has_replies( array( 716 'name' => bp_action_variable( $offset + 1 ), 717 'posts_per_page' => 1 718 ) ); 719 720 // If no topic, 404 721 if ( ! bbp_replies() ) { 722 bp_do_404( bbp_get_forum_permalink( $forum_id ) ); ?> 723 <h3><?php bbp_forum_title(); ?></h3> 724 <?php bbp_get_template_part( 'feedback', 'no-replies' ); 725 return; 726 } 727 728 // Setup the reply 729 bbp_the_reply(); ?> 730 731 <h3><?php bbp_reply_title(); ?></h3> 732 733 <?php if ( bp_action_variable( $offset + 2 ) == bbp_get_edit_rewrite_id() ) : 734 735 // Set the edit switches 736 $wp_query->bbp_is_edit = true; 737 $wp_query->bbp_is_reply_edit = true; 738 739 // Setup the global reply ID 740 $bbp->current_reply_id = get_the_ID(); 741 742 // Move 743 if ( !empty( $_GET['action'] ) && ( 'move' == $_GET['action'] ) ) : 744 bbp_set_query_name( 'bbp_reply_move' ); 745 bbp_get_template_part( 'form', 'reply-move' ); 746 747 // Edit 748 else : 749 bbp_set_query_name( 'bbp_reply_form' ); 750 bbp_get_template_part( 'form', 'reply' ); 751 endif; 831 752 endif; 832 833 endif; 834 835 endif; ?> 836 753 break; 754 endswitch; 755 756 // Reset the query 757 wp_reset_query(); ?> 758 837 759 </div> 838 760 … … 1230 1152 } 1231 1153 1232 /** Activity ************************************************************** */1154 /** Activity **************************************************************/ 1233 1155 1234 1156 /**
Note: See TracChangeset
for help on using the changeset viewer.