Skip to:
Content

bbPress.org

Changeset 6485


Ignore:
Timestamp:
06/04/2017 09:49:50 PM (8 years ago)
Author:
johnjamesjacoby
Message:

BuddyPress: Root group forum updates

  • Include ability to create a new group root forum if none exists
  • Update group-forum setting verbiage to accommodate above
  • When a forum is deleted, check if it's the group root, and delete the setting accordingly
  • Introduce bbp_maybe_delete_group_forum_root() and bbp_maybe_create_group_forum_root() functions to carry out the above functionalities
Location:
trunk/src/includes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/includes/admin/settings.php

    r6475 r6485  
    5555        ),
    5656        'bbp_settings_single_slugs' => array(
    57             'title'    => esc_html__( 'Single Forum Slugs', 'bbpress' ),
     57            'title'    => esc_html__( 'Forum Single Slugs', 'bbpress' ),
    5858            'callback' => 'bbp_admin_setting_callback_single_slug_section',
    5959            'page'     => 'permalink',
     
    6565        ),
    6666        'bbp_settings_buddypress' => array(
    67             'title'    => esc_html__( 'BuddyPress Integration', 'bbpress' ),
     67            'title'    => esc_html__( 'Forum Integration for BuddyPress', 'bbpress' ),
    6868            'callback' => 'bbp_admin_setting_callback_buddypress_section',
    6969            'page'     => 'buddypress',
    7070        ),
    7171        'bbp_settings_akismet' => array(
    72             'title'    => esc_html__( 'Akismet Integration', 'bbpress' ),
     72            'title'    => esc_html__( 'Forum Integration for Akismet', 'bbpress' ),
    7373            'callback' => 'bbp_admin_setting_callback_akismet_section',
    7474            'page'     => 'discussion'
     
    431431            // Are group forums enabled?
    432432            '_bbp_enable_group_forums' => array(
    433                 'title'             => esc_html__( 'Enable Group Forums', 'bbpress' ),
     433                'title'             => esc_html__( 'Group Forums', 'bbpress' ),
    434434                'callback'          => 'bbp_admin_setting_callback_group_forums',
    435435                'sanitize_callback' => 'intval',
     
    439439            // Group forums parent forum ID
    440440            '_bbp_group_forums_root_id' => array(
    441                 'title'             => esc_html__( 'Group Forums Parent', 'bbpress' ),
     441                'title'             => esc_html__( 'Primary Forum', 'bbpress' ),
    442442                'callback'          => 'bbp_admin_setting_callback_group_forums_root_id',
    443443                'sanitize_callback' => 'intval',
     
    13011301?>
    13021302
    1303     <p><?php esc_html_e( 'Forum settings for BuddyPress', 'bbpress' ); ?></p>
     1303    <p><?php esc_html_e( 'Configure how Forum settings for BuddyPress', 'bbpress' ); ?></p>
    13041304
    13051305<?php
     
    13311331function bbp_admin_setting_callback_group_forums_root_id() {
    13321332
     1333    // Group root ID
     1334    $group_root = bbp_get_group_forums_root_id();
     1335    if ( ! bbp_get_forum( $group_root ) ) {
     1336        delete_option( '_bbp_group_forums_root_id' );
     1337        $group_root = 0;
     1338    }
     1339
    13331340    // Output the dropdown for all forums
    1334     bbp_dropdown( array(
    1335         'selected'           => bbp_get_group_forums_root_id(),
    1336         'show_none'          => esc_attr__( '&mdash; Forum root &mdash;', 'bbpress' ),
     1341    $select = bbp_get_dropdown( array(
     1342        'selected'           => $group_root,
     1343        'show_none'          => esc_html__( '&mdash; No parent &mdash;', 'bbpress' ),
    13371344        'orderby'            => 'title',
    13381345        'order'              => 'ASC',
     
    13401347        'disable_categories' => false,
    13411348        'disabled'           => '_bbp_group_forums_root_id'
    1342     ) ); ?>
    1343 
    1344     <?php esc_html_e( 'is the parent for all group forums', 'bbpress' ); ?>
    1345     <p class="description"><?php esc_html_e( 'Using the Forum Root is not recommended. Changing this does not move existing forums.', 'bbpress' ); ?></p>
     1349    ) );
     1350
     1351    // Check cap one time
     1352    $can_add_new = current_user_can( 'publish_forums' );
     1353    $button = '';
     1354
     1355    // Text variations based on configuration
     1356    if ( empty( $group_root ) && ( true === $can_add_new ) ) {
     1357
     1358        // New URL
     1359        $new_url = wp_nonce_url( add_query_arg( array(
     1360            'page'   => 'bbpress',
     1361            'create' => 'bbp-group-forum-root'
     1362        ), admin_url( 'options-general.php' ) ), '_bbp_group_forums_root_id' );
     1363
     1364        // Button & text
     1365        $button = '<a href="' . esc_url( $new_url ) . '">' . esc_html__( 'create a new one', 'bbpress' ) . '</a>';
     1366        $text   = esc_html__( 'Use %s to contain your group forums, or %s', 'bbpress' );
     1367    } else {
     1368        $text = esc_html__( 'Use %s to contain your group forums', 'bbpress' );
     1369    }
     1370
     1371    // Output
     1372    printf( $text, $select, $button ); ?>
     1373    <p class="description"><?php esc_html_e( 'Changing this will not move existing forums.', 'bbpress' ); ?></p>
    13461374
    13471375<?php
     
    14441472    } ?>
    14451473
    1446     <select name="_bbp_converter_platform" id="_bbp_converter_platform" /><?php echo $options ?></select>
     1474    <select name="_bbp_converter_platform" id="_bbp_converter_platform"><?php echo $options ?></select>
    14471475    <label for="_bbp_converter_platform"><?php esc_html_e( 'is the previous forum software', 'bbpress' ); ?></label>
    14481476
  • trunk/src/includes/extend/buddypress/functions.php

    r6438 r6485  
    1616add_filter( 'bbp_is_single_user',   'bbp_filter_is_single_user',    10, 1 );
    1717add_filter( 'bbp_is_user_home',     'bbp_filter_is_user_home',      10, 1 );
     18
     19// Group Forum Root
     20add_action( 'load-settings_page_bbpress', 'bbp_maybe_create_group_forum_root' );
     21add_action( 'bbp_delete_forum',           'bbp_maybe_delete_group_forum_root' );
    1822
    1923/** BuddyPress Helpers ********************************************************/
     
    306310}
    307311
     312/** Forum Group Root **********************************************************/
     313
     314/**
     315 * Clean up the group root setting if the forum is being deleted
     316 *
     317 * @since 2.6.0 bbPress (r6479)
     318 *
     319 * @param int $forum_id The forum ID being deleted
     320 */
     321function bbp_maybe_delete_group_forum_root( $forum_id = 0 ) {
     322
     323    // Bail if no forum ID
     324    $forum_id = bbp_get_forum_id();
     325    if ( empty( $forum_id ) ) {
     326        return;
     327    }
     328
     329    // Get the group root
     330    $group_root = (int) get_option( '_bbp_group_forums_root_id', 0 );
     331
     332    // Delete the group root if the forum just got deleted
     333    if ( $group_root === $forum_id ) {
     334        delete_option( '_bbp_group_forums_root_id' );
     335    }
     336}
     337
     338/**
     339 * Handle the new group forum root creation
     340 *
     341 * @since 2.6.0 bbPress (r6479)
     342 *
     343 * @return
     344 */
     345function bbp_maybe_create_group_forum_root() {
     346
     347    // Bail if no nonce
     348    if ( empty( $_GET['_wpnonce'] ) || ( empty( $_GET['create'] ) || ( 'bbp-group-forum-root' !== $_GET['create'] ) ) ) {
     349        return;
     350    }
     351
     352    // Bail if user cannot publish forums
     353    if ( ! current_user_can( 'publish_forums' ) ) {
     354        return;
     355    }
     356
     357    // Bail if nonce check fails
     358    if ( ! wp_verify_nonce( $_GET['_wpnonce'], '_bbp_group_forums_root_id' ) ) {
     359        return;
     360    }
     361
     362    // Create new forum
     363    $forum_id = bbp_insert_forum(
     364
     365        // Post
     366        array( 'post_title' => esc_html__( 'Group Forums', 'bbpress' ) ),
     367
     368        // Meta
     369        array( 'forum_type' => 'category' )
     370    );
     371
     372    // Update & redirect
     373    if ( ! empty( $forum_id ) ) {
     374
     375        // Create
     376        update_option( '_bbp_group_forums_root_id', $forum_id );
     377
     378        // Redirect
     379        wp_safe_redirect( add_query_arg( array(
     380            'page'    => 'bbpress',
     381            'updated' => true // Lame, but still supported
     382        ), admin_url( 'options-general.php' ) ) );
     383        die;
     384    }
     385}
     386
    308387/** Forum/Group Sync **********************************************************/
    309388
    310389/**
    311390 * These functions are used to keep the many-to-many relationships between
    312  * groups and forums synchronized. Each forum and group stores ponters to each
     391 * groups and forums synchronized. Each forum and group stores pointers to each
    313392 * other in their respective meta. This way if a group or forum is deleted
    314  * their associattions can be updated without much effort.
     393 * their associations can be updated without much effort.
    315394 */
    316395
     
    512591
    513592/**
    514  * Remove a group from aall forums
     593 * Remove a group from all forums
    515594 *
    516595 * @param type $group_id
Note: See TracChangeset for help on using the changeset viewer.