Skip to:
Content

bbPress.org

Changeset 4555


Ignore:
Timestamp:
12/07/2012 09:58:40 AM (9 years ago)
Author:
johnjamesjacoby
Message:

BuddyPress Groups:

  • When enabling a group forum in an existing group, audit group forums, remove any strays, and maybe create a new forum if needed.
  • Also fixes bugs in removing a value from group/forum ID arrays.
  • Fixes #2083 (2.2 branch)
Location:
branches/2.2/includes/extend/buddypress
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2/includes/extend/buddypress/functions.php

    r4408 r4555  
    386386    // Maybe update the groups forums
    387387    if ( in_array( $group_id, $group_ids ) ) {
    388         unset( $group_ids[$group_id] );
     388        $group_ids = array_diff( array_values( $group_ids ), (array) $group_id );
    389389        return bbp_update_forum_group_ids( $forum_id, $group_ids );
    390390    }
     
    411411    // Maybe update the groups forums
    412412    if ( in_array( $forum_id, $forum_ids ) ) {
    413         unset( $forum_ids[$forum_id] );
     413        $forum_ids = array_diff( array_values( $forum_ids ), (array) $forum_id );
    414414        return bbp_update_group_forum_ids( $group_id, $forum_ids );
    415415    }
  • branches/2.2/includes/extend/buddypress/group.php

    r4554 r4555  
    275275        $forum_id     = 0;
    276276        $group_id     = bp_get_current_group_id();
    277         $forum_ids    = bbp_get_group_forum_ids( $group_id );
    278         if ( !empty( $forum_ids ) )
    279             $forum_id = (int) is_array( $forum_ids ) ? $forum_ids[0] : $forum_ids;
     277        $forum_ids    = array_values( bbp_get_group_forum_ids( $group_id ) );
     278
     279        // Normalize group forum relationships now
     280        if ( !empty( $forum_ids ) ) {
     281
     282            // Loop through forums, and make sure they exist
     283            foreach ( $forum_ids as $forum_id ) {
     284
     285                // Look for forum
     286                $forum = bbp_get_forum( $forum_id );
     287
     288                // No forum exists, so break the relationship
     289                if ( empty( $forum ) ) {
     290                    $this->remove_forum( array( 'forum_id' => $forum_id ) );
     291                    unset( $forum_ids[$forum_id] );
     292                }
     293            }
     294
     295            // No support for multiple forums yet
     296            $forum_id = (int) ( is_array( $forum_ids ) ? $forum_ids[0] : $forum_ids );
     297        }
    280298
    281299        // Update the group forum setting
     
    283301        $group->enable_forum = $edit_forum;
    284302        $group->save();
     303
     304        // Create a new forum
     305        if ( empty( $forum_id ) && ( true === $edit_forum ) ) {
     306
     307            // Set the default forum status
     308            switch ( $group->status ) {
     309                case 'hidden'  :
     310                    $status = bbp_get_hidden_status_id();
     311                    break;
     312                case 'private' :
     313                    $status = bbp_get_private_status_id();
     314                    break;
     315                case 'public'  :
     316                default        :
     317                    $status = bbp_get_public_status_id();
     318                    break;
     319            }
     320
     321            // Create the initial forum
     322            $forum_id = bbp_insert_forum( array(
     323                'post_parent'  => bbp_get_group_forums_root_id(),
     324                'post_title'   => $group->name,
     325                'post_content' => $group->description,
     326                'post_status'  => $status
     327            ) );
     328
     329            // Run the BP-specific functions for new groups
     330            $this->new_forum( array( 'forum_id' => $forum_id ) );
     331        }
    285332
    286333        // Redirect after save
Note: See TracChangeset for help on using the changeset viewer.