Skip to:
Content

bbPress.org

Changeset 3750


Ignore:
Timestamp:
02/19/2012 12:53:44 AM (13 years ago)
Author:
johnjamesjacoby
Message:

When setting a forum as public, always check private and hidden forum options and remove forum_id if needed. Fixes #1757.

Location:
branches/plugin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/plugin/bbp-admin/bbp-forums.php

    r3714 r3750  
    305305            return $forum_id;
    306306
    307         // Load the forum
    308         $forum = bbp_get_forum( $forum_id );
    309         if ( empty( $forum ) )
    310             return $forum_id;
     307        // Bail if post_type is not a topic or reply
     308        if ( get_post_type( $forum_id ) != $this->post_type )
     309            return;
    311310
    312311        // Parent ID
  • branches/plugin/bbp-includes/bbp-forum-functions.php

    r3727 r3750  
    649649        $visibility = bbp_get_forum_visibility( $forum_id );
    650650
    651         // If new visibility is different, change it
    652         if ( $visibility != $_POST['bbp_forum_visibility'] ) {
    653 
    654             // What is the new forum visibility setting?
    655             switch ( $_POST['bbp_forum_visibility'] ) {
    656 
    657                 // Hidden
    658                 case bbp_get_hidden_status_id()  :
    659                     bbp_hide_forum( $forum_id, $visibility );
    660                     break;
    661 
    662                 // Private
    663                 case bbp_get_private_status_id() :
    664                     bbp_privatize_forum( $forum_id, $visibility );
    665                     break;
    666 
    667                 // Publish (default)
    668                 case bbp_get_public_status_id()  :
    669                 default        :
    670                     bbp_publicize_forum( $forum_id, $visibility );
    671                     break;
    672             }
     651        // What is the new forum visibility setting?
     652        switch ( $_POST['bbp_forum_visibility'] ) {
     653
     654            // Hidden
     655            case bbp_get_hidden_status_id()  :
     656                bbp_hide_forum( $forum_id, $visibility );
     657                break;
     658
     659            // Private
     660            case bbp_get_private_status_id() :
     661                bbp_privatize_forum( $forum_id, $visibility );
     662                break;
     663
     664            // Publish (default)
     665            case bbp_get_public_status_id()  :
     666            default        :
     667                bbp_publicize_forum( $forum_id, $visibility );
     668                break;
    673669        }
    674670    }
     
    806802    do_action( 'bbp_publicize_forum',  $forum_id );
    807803
     804    // Get private forums
     805    $private = bbp_get_private_forum_ids();
     806
     807    // Find this forum in the array
     808    if ( in_array( $forum_id, $private ) ) {
     809
     810        $offset = array_search( $forum_id, (array) $private );
     811
     812        // Splice around it
     813        array_splice( $private, $offset, 1 );
     814
     815        // Update private forums minus this one
     816        update_option( '_bbp_private_forums', array_unique( array_values( $private ) ) );
     817    }
     818
     819    // Get hidden forums
     820    $hidden = bbp_get_hidden_forum_ids();
     821
     822    // Find this forum in the array
     823    if ( in_array( $forum_id, $hidden ) ) {
     824
     825        $offset = array_search( $forum_id, (array) $hidden );
     826
     827        // Splice around it
     828        array_splice( $hidden, $offset, 1 );
     829
     830        // Update hidden forums minus this one
     831        update_option( '_bbp_hidden_forums', array_unique( array_values( $hidden ) ) );
     832    }
     833
    808834    // Only run queries if visibility is changing
    809835    if ( bbp_get_public_status_id() != $current_visibility ) {
    810 
    811         // Remove from _bbp_private_forums site option
    812         if ( bbp_get_private_status_id() == $current_visibility ) {
    813 
    814             // Get private forums
    815             $private = bbp_get_private_forum_ids();
    816 
    817             // Find this forum in the array
    818             if ( in_array( $forum_id, $private ) ) {
    819 
    820                 $offset = array_search( $forum_id, (array) $private );
    821 
    822                 // Splice around it
    823                 array_splice( $private, $offset, 1 );
    824 
    825                 // Update private forums minus this one
    826                 update_option( '_bbp_private_forums', array_unique( array_values( $private ) ) );
    827             }
    828         }
    829 
    830         // Remove from _bbp_hidden_forums site option
    831         if ( bbp_get_hidden_status_id() == $current_visibility ) {
    832 
    833             // Get hidden forums
    834             $hidden = bbp_get_hidden_forum_ids();
    835 
    836             // Find this forum in the array
    837             if ( in_array( $forum_id, $hidden ) ) {
    838 
    839                 $offset = array_search( $forum_id, (array) $hidden );
    840 
    841                 // Splice around it
    842                 array_splice( $hidden, $offset, 1 );
    843 
    844                 // Update hidden forums minus this one
    845                 update_option( '_bbp_hidden_forums', array_unique( array_values( $hidden ) ) );
    846             }
    847         }
    848836
    849837        // Update forum post_status
Note: See TracChangeset for help on using the changeset viewer.