Skip to:
Content

Ignore:
Timestamp:
12/08/17 00:22:09 (6 weeks ago)
Author:
djpaul
Message:

Retire Legacy Forums.

"Legacy Forums" is what we now call the bundled version of bbPress 1 that has shipped with BuddyPress for over nine years. The Legacy Forums codebase/features are many years stagnant, and it has been almost completely hidden from the UI for the past five years.

Legacy Forums were replaced by bbPress 2, which is its own plugin, and we've been promoting its integration with BuddyPress for a long time. Most significantly, bbPress 1 only runs on WordPress versions older than 4.7, because of a BackPress conflict (which is nested inside bbPress 1) with WordPress 4.7's WP_Taxonomy class.

If your site is still using Legacy Forums, you will need to migrate to bbPress 2 to run BuddyPress 3.0. See https://bpdevel.wordpress.com/2017/12/07/legacy-forums-support-will-be/ for more information.

Fixes #5351
See #7502

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-groups/bp-groups-screens.php

    r11556 r11763  
    167167     */ 
    168168    bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) ); 
    169 } 
    170  
    171 /** 
    172  * This screen function handles actions related to group forums. 
    173  * 
    174  * @since 1.0.0 
    175  */ 
    176 function groups_screen_group_forum() { 
    177  
    178     if ( !bp_is_active( 'forums' ) || !bp_forums_is_installed_correctly() ) 
    179         return false; 
    180  
    181     if ( bp_action_variable( 0 ) && !bp_is_action_variable( 'topic', 0 ) ) { 
    182         bp_do_404(); 
    183         return; 
    184     } 
    185  
    186     $bp = buddypress(); 
    187  
    188     if ( !$bp->groups->current_group->user_has_access ) { 
    189         bp_core_no_access(); 
    190         return; 
    191     } 
    192  
    193     if ( ! bp_is_single_item() ) 
    194         return false; 
    195  
    196     // Fetch the details we need. 
    197     $topic_slug = (string)bp_action_variable( 1 ); 
    198     $topic_id       = bp_forums_get_topic_id_from_slug( $topic_slug ); 
    199     $forum_id       = groups_get_groupmeta( $bp->groups->current_group->id, 'forum_id' ); 
    200     $user_is_banned = false; 
    201  
    202     if ( !bp_current_user_can( 'bp_moderate' ) && groups_is_user_banned( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) 
    203         $user_is_banned = true; 
    204  
    205     if ( !empty( $topic_slug ) && !empty( $topic_id ) ) { 
    206  
    207         // Posting a reply. 
    208         if ( !$user_is_banned && !bp_action_variable( 2 ) && isset( $_POST['submit_reply'] ) ) { 
    209             // Check the nonce. 
    210             check_admin_referer( 'bp_forums_new_reply' ); 
    211  
    212             // Auto join this user if they are not yet a member of this group. 
    213             if ( bp_groups_auto_join() && !bp_current_user_can( 'bp_moderate' ) && 'public' == $bp->groups->current_group->status && !groups_is_user_member( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) { 
    214                 groups_join_group( $bp->groups->current_group->id, bp_loggedin_user_id() ); 
    215             } 
    216  
    217             $topic_page = isset( $_GET['topic_page'] ) ? $_GET['topic_page'] : false; 
    218  
    219             // Don't allow reply flooding. 
    220             if ( bp_forums_reply_exists( $_POST['reply_text'], $topic_id, bp_loggedin_user_id() ) ) { 
    221                 bp_core_add_message( __( 'It looks like you\'ve already said that!', 'buddypress' ), 'error' ); 
    222             } else { 
    223                 if ( !$post_id = groups_new_group_forum_post( $_POST['reply_text'], $topic_id, $topic_page ) ) { 
    224                     bp_core_add_message( __( 'There was an error when replying to that topic', 'buddypress'), 'error' ); 
    225                 } else { 
    226                     bp_core_add_message( __( 'Your reply was posted successfully', 'buddypress') ); 
    227                 } 
    228             } 
    229  
    230             $query_vars = isset( $_SERVER['QUERY_STRING'] ) ? '?' . $_SERVER['QUERY_STRING'] : ''; 
    231  
    232             $redirect = bp_get_group_permalink( groups_get_current_group() ) . 'forum/topic/' . $topic_slug . '/' . $query_vars; 
    233  
    234             if ( !empty( $post_id ) ) { 
    235                 $redirect .= '#post-' . $post_id; 
    236             } 
    237  
    238             bp_core_redirect( $redirect ); 
    239         } 
    240  
    241         // Sticky a topic. 
    242         elseif ( bp_is_action_variable( 'stick', 2 ) && ( bp_is_item_admin() || bp_is_item_mod() ) ) { 
    243             // Check the nonce. 
    244             check_admin_referer( 'bp_forums_stick_topic' ); 
    245  
    246             if ( !bp_forums_sticky_topic( array( 'topic_id' => $topic_id ) ) ) { 
    247                 bp_core_add_message( __( 'There was an error when making that topic a sticky', 'buddypress' ), 'error' ); 
    248             } else { 
    249                 bp_core_add_message( __( 'The topic was made sticky successfully', 'buddypress' ) ); 
    250             } 
    251  
    252             /** 
    253              * Fires after a group forum topic has been stickied. 
    254              * 
    255              * @since 1.1.0 
    256              * 
    257              * @param int $topic_id ID of the topic being stickied. 
    258              */ 
    259             do_action( 'groups_stick_forum_topic', $topic_id ); 
    260             bp_core_redirect( wp_get_referer() ); 
    261         } 
    262  
    263         // Un-Sticky a topic. 
    264         elseif ( bp_is_action_variable( 'unstick', 2 ) && ( bp_is_item_admin() || bp_is_item_mod() ) ) { 
    265             // Check the nonce. 
    266             check_admin_referer( 'bp_forums_unstick_topic' ); 
    267  
    268             if ( !bp_forums_sticky_topic( array( 'topic_id' => $topic_id, 'mode' => 'unstick' ) ) ) { 
    269                 bp_core_add_message( __( 'There was an error when unsticking that topic', 'buddypress'), 'error' ); 
    270             } else { 
    271                 bp_core_add_message( __( 'The topic was unstuck successfully', 'buddypress') ); 
    272             } 
    273  
    274             /** 
    275              * Fires after a group forum topic has been un-stickied. 
    276              * 
    277              * @since 1.1.0 
    278              * 
    279              * @param int $topic_id ID of the topic being un-stickied. 
    280              */ 
    281             do_action( 'groups_unstick_forum_topic', $topic_id ); 
    282             bp_core_redirect( wp_get_referer() ); 
    283         } 
    284  
    285         // Close a topic. 
    286         elseif ( bp_is_action_variable( 'close', 2 ) && ( bp_is_item_admin() || bp_is_item_mod() ) ) { 
    287             // Check the nonce. 
    288             check_admin_referer( 'bp_forums_close_topic' ); 
    289  
    290             if ( !bp_forums_openclose_topic( array( 'topic_id' => $topic_id ) ) ) { 
    291                 bp_core_add_message( __( 'There was an error when closing that topic', 'buddypress'), 'error' ); 
    292             } else { 
    293                 bp_core_add_message( __( 'The topic was closed successfully', 'buddypress') ); 
    294             } 
    295  
    296             /** 
    297              * Fires after a group forum topic has been closed. 
    298              * 
    299              * @since 1.1.0 
    300              * 
    301              * @param int $topic_id ID of the topic being closed. 
    302              */ 
    303             do_action( 'groups_close_forum_topic', $topic_id ); 
    304             bp_core_redirect( wp_get_referer() ); 
    305         } 
    306  
    307         // Open a topic. 
    308         elseif ( bp_is_action_variable( 'open', 2 ) && ( bp_is_item_admin() || bp_is_item_mod() ) ) { 
    309             // Check the nonce. 
    310             check_admin_referer( 'bp_forums_open_topic' ); 
    311  
    312             if ( !bp_forums_openclose_topic( array( 'topic_id' => $topic_id, 'mode' => 'open' ) ) ) { 
    313                 bp_core_add_message( __( 'There was an error when opening that topic', 'buddypress'), 'error' ); 
    314             } else { 
    315                 bp_core_add_message( __( 'The topic was opened successfully', 'buddypress') ); 
    316             } 
    317  
    318             /** 
    319              * Fires after a group forum topic has been opened. 
    320              * 
    321              * @since 1.1.0 
    322              * 
    323              * @param int $topic_id ID of the topic being opened. 
    324              */ 
    325             do_action( 'groups_open_forum_topic', $topic_id ); 
    326             bp_core_redirect( wp_get_referer() ); 
    327         } 
    328  
    329         // Delete a topic. 
    330         elseif ( empty( $user_is_banned ) && bp_is_action_variable( 'delete', 2 ) && !bp_action_variable( 3 ) ) { 
    331             // Fetch the topic. 
    332             $topic = bp_forums_get_topic_details( $topic_id ); 
    333  
    334             /* Check the logged in user can delete this topic */ 
    335             if ( ! bp_is_item_admin() && ! bp_is_item_mod() && ( (int) bp_loggedin_user_id() != (int) $topic->topic_poster ) ) { 
    336                 bp_core_redirect( wp_get_referer() ); 
    337             } 
    338  
    339             // Check the nonce. 
    340             check_admin_referer( 'bp_forums_delete_topic' ); 
    341  
    342             /** 
    343              * Fires before a group forum topic is deleted. 
    344              * 
    345              * @since 1.5.0 
    346              * 
    347              * @param int $topic_id ID of the topic being deleted. 
    348              */ 
    349             do_action( 'groups_before_delete_forum_topic', $topic_id ); 
    350  
    351             if ( !groups_delete_group_forum_topic( $topic_id ) ) { 
    352                 bp_core_add_message( __( 'There was an error deleting the topic', 'buddypress' ), 'error' ); 
    353             } else { 
    354                 bp_core_add_message( __( 'The topic was deleted successfully', 'buddypress' ) ); 
    355             } 
    356  
    357             /** 
    358              * Fires after a group forum topic has been deleted. 
    359              * 
    360              * @since 1.5.0 
    361              * 
    362              * @param int $topic_id ID of the topic being deleted. 
    363              */ 
    364             do_action( 'groups_delete_forum_topic', $topic_id ); 
    365             bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'forum/' ); 
    366         } 
    367  
    368         // Editing a topic. 
    369         elseif ( empty( $user_is_banned ) && bp_is_action_variable( 'edit', 2 ) && !bp_action_variable( 3 ) ) { 
    370             // Fetch the topic. 
    371             $topic = bp_forums_get_topic_details( $topic_id ); 
    372  
    373             // Check the logged in user can edit this topic. 
    374             if ( ! bp_is_item_admin() && ! bp_is_item_mod() && ( (int) bp_loggedin_user_id() != (int) $topic->topic_poster ) ) { 
    375                 bp_core_redirect( wp_get_referer() ); 
    376             } 
    377  
    378             if ( isset( $_POST['save_changes'] ) ) { 
    379                 // Check the nonce. 
    380                 check_admin_referer( 'bp_forums_edit_topic' ); 
    381  
    382                 $topic_tags = !empty( $_POST['topic_tags'] ) ? $_POST['topic_tags'] : false; 
    383  
    384                 if ( !groups_update_group_forum_topic( $topic_id, $_POST['topic_title'], $_POST['topic_text'], $topic_tags ) ) { 
    385                     bp_core_add_message( __( 'There was an error when editing that topic', 'buddypress'), 'error' ); 
    386                 } else { 
    387                     bp_core_add_message( __( 'The topic was edited successfully', 'buddypress') ); 
    388                 } 
    389  
    390                 /** 
    391                  * Fires after a group forum topic has been edited. 
    392                  * 
    393                  * @since 1.1.0 
    394                  * 
    395                  * @param int $topic_id ID of the topic being edited. 
    396                  */ 
    397                 do_action( 'groups_edit_forum_topic', $topic_id ); 
    398                 bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'forum/topic/' . $topic_slug . '/' ); 
    399             } 
    400  
    401             /** 
    402              * Filters the template to load for a topic edit page. 
    403              * 
    404              * @since 1.1.0 
    405              * 
    406              * @param string $value Path to a topic edit template. 
    407              */ 
    408             bp_core_load_template( apply_filters( 'groups_template_group_forum_topic_edit', 'groups/single/home' ) ); 
    409  
    410         // Delete a post. 
    411         } elseif ( empty( $user_is_banned ) && bp_is_action_variable( 'delete', 2 ) && $post_id = bp_action_variable( 4 ) ) { 
    412             // Fetch the post. 
    413             $post = bp_forums_get_post( $post_id ); 
    414  
    415             // Check the logged in user can edit this topic. 
    416             if ( ! bp_is_item_admin() && ! bp_is_item_mod() && ( (int) bp_loggedin_user_id() != (int) $post->poster_id ) ) { 
    417                 bp_core_redirect( wp_get_referer() ); 
    418             } 
    419  
    420             // Check the nonce. 
    421             check_admin_referer( 'bp_forums_delete_post' ); 
    422  
    423             /** 
    424              * Fires before the deletion of a group forum post. 
    425              * 
    426              * @since 1.5.0 
    427              * 
    428              * @param int $post_id ID of the forum post being deleted. 
    429              */ 
    430             do_action( 'groups_before_delete_forum_post', $post_id ); 
    431  
    432             if ( !groups_delete_group_forum_post( $post_id ) ) { 
    433                 bp_core_add_message( __( 'There was an error deleting that post', 'buddypress'), 'error' ); 
    434             } else { 
    435                 bp_core_add_message( __( 'The post was deleted successfully', 'buddypress') ); 
    436             } 
    437  
    438             /** 
    439              * Fires after the deletion of a group forum post. 
    440              * 
    441              * @since 1.1.0 
    442              * 
    443              * @param int $post_id ID of the forum post being deleted. 
    444              */ 
    445             do_action( 'groups_delete_forum_post', $post_id ); 
    446             bp_core_redirect( wp_get_referer() ); 
    447  
    448         // Editing a post. 
    449         } elseif ( empty( $user_is_banned ) && bp_is_action_variable( 'edit', 2 ) && $post_id = bp_action_variable( 4 ) ) { 
    450  
    451             // Fetch the post. 
    452             $post = bp_forums_get_post( $post_id ); 
    453  
    454             // Check the logged in user can edit this topic. 
    455             if ( ! bp_is_item_admin() && ! bp_is_item_mod() && ( (int) bp_loggedin_user_id() != (int) $post->poster_id ) ) { 
    456                 bp_core_redirect( wp_get_referer() ); 
    457             } 
    458  
    459             if ( isset( $_POST['save_changes'] ) ) { 
    460                 // Check the nonce. 
    461                 check_admin_referer( 'bp_forums_edit_post' ); 
    462  
    463                 $topic_page = isset( $_GET['topic_page'] ) ? $_GET['topic_page'] : false; 
    464  
    465                 if ( !$post_id = groups_update_group_forum_post( $post_id, $_POST['post_text'], $topic_id, $topic_page ) ) { 
    466                     bp_core_add_message( __( 'There was an error when editing that post', 'buddypress'), 'error' ); 
    467                 } else { 
    468                     bp_core_add_message( __( 'The post was edited successfully', 'buddypress') ); 
    469                 } 
    470  
    471                 if ( $_SERVER['QUERY_STRING'] ) { 
    472                     $query_vars = '?' . $_SERVER['QUERY_STRING']; 
    473                 } 
    474  
    475                 /** 
    476                  * Fires after the editing of a group forum post. 
    477                  * 
    478                  * @since 1.1.0 
    479                  * 
    480                  * @param int $post_id ID of the forum post being edited. 
    481                  */ 
    482                 do_action( 'groups_edit_forum_post', $post_id ); 
    483                 bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) . 'forum/topic/' . $topic_slug . '/' . $query_vars . '#post-' . $post_id ); 
    484             } 
    485  
    486             /** This filter is documented in bp-groups/bp-groups-screens.php */ 
    487             bp_core_load_template( apply_filters( 'groups_template_group_forum_topic_edit', 'groups/single/home' ) ); 
    488  
    489         // Standard topic display. 
    490         } else { 
    491             if ( !empty( $user_is_banned ) ) { 
    492                 bp_core_add_message( __( "You have been banned from this group.", 'buddypress' ) ); 
    493             } 
    494  
    495             /** 
    496              * Filters the template to load for a topic page. 
    497              * 
    498              * @since 1.1.0 
    499              * 
    500              * @param string $value Path to a topic template. 
    501              */ 
    502             bp_core_load_template( apply_filters( 'groups_template_group_forum_topic', 'groups/single/home' ) ); 
    503         } 
    504  
    505     // Forum topic does not exist. 
    506     } elseif ( !empty( $topic_slug ) && empty( $topic_id ) ) { 
    507         bp_do_404(); 
    508         return; 
    509  
    510     } else { 
    511         // Posting a topic. 
    512         if ( isset( $_POST['submit_topic'] ) && bp_is_active( 'forums' ) ) { 
    513  
    514             // Check the nonce. 
    515             check_admin_referer( 'bp_forums_new_topic' ); 
    516  
    517             if ( $user_is_banned ) { 
    518                 $error_message = __( "You have been banned from this group.", 'buddypress' ); 
    519  
    520             } elseif ( bp_groups_auto_join() && !bp_current_user_can( 'bp_moderate' ) && 'public' == $bp->groups->current_group->status && !groups_is_user_member( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) { 
    521                 // Auto join this user if they are not yet a member of this group. 
    522                 groups_join_group( $bp->groups->current_group->id, bp_loggedin_user_id() ); 
    523             } 
    524  
    525             if ( empty( $_POST['topic_title'] ) ) { 
    526                 $error_message = __( 'Please provide a title for your forum topic.', 'buddypress' ); 
    527             } elseif ( empty( $_POST['topic_text'] ) ) { 
    528                 $error_message = __( 'Forum posts cannot be empty. Please enter some text.', 'buddypress' ); 
    529             } 
    530  
    531             if ( empty( $forum_id ) ) { 
    532                 $error_message = __( 'This group does not have a forum setup yet.', 'buddypress' ); 
    533             } 
    534  
    535             if ( isset( $error_message ) ) { 
    536                 bp_core_add_message( $error_message, 'error' ); 
    537                 $redirect = bp_get_group_permalink( $bp->groups->current_group ) . 'forum'; 
    538             } else { 
    539                 if ( !$topic = groups_new_group_forum_topic( $_POST['topic_title'], $_POST['topic_text'], $_POST['topic_tags'], $forum_id ) ) { 
    540                     bp_core_add_message( __( 'There was an error when creating the topic', 'buddypress'), 'error' ); 
    541                     $redirect = bp_get_group_permalink( $bp->groups->current_group ) . 'forum'; 
    542                 } else { 
    543                     bp_core_add_message( __( 'The topic was created successfully', 'buddypress') ); 
    544                     $redirect = bp_get_group_permalink( $bp->groups->current_group ) . 'forum/topic/' . $topic->topic_slug . '/'; 
    545                 } 
    546             } 
    547  
    548             bp_core_redirect( $redirect ); 
    549         } 
    550  
    551         /** 
    552          * Fires at the end of the group forum screen loading process. 
    553          * 
    554          * @since 1.0.0 
    555          * 
    556          * @param int $topic_id ID of the topic being displayed. 
    557          * @param int $forum_id ID of the forum being displayed. 
    558          */ 
    559         do_action( 'groups_screen_group_forum', $topic_id, $forum_id ); 
    560  
    561         /** 
    562          * Filters the template to load for a group forum page. 
    563          * 
    564          * @since 1.0.0 
    565          * 
    566          * @param string $value Path to a group forum template. 
    567          */ 
    568         bp_core_load_template( apply_filters( 'groups_template_group_forum', 'groups/single/home' ) ); 
    569     } 
    570169} 
    571170 
Note: See TracChangeset for help on using the changeset viewer.