Skip to:
Content

bbPress.org

Changeset 6628


Ignore:
Timestamp:
07/19/2017 05:02:30 PM (5 years ago)
Author:
johnjamesjacoby
Message:

Separators: Normalize the sep arguments between functions.

This change also switches bbp_list_forums() to implode() links rather than concatenate the same $output string with an increasing number of items. This has the positive side-effect of moving the forum separator (a comma by default) out of individual links.

Props milindmore22. Fixes #2900.

Location:
trunk/src/includes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/includes/admin/tools/common.php

    r6573 r6628  
    442442    // Parse args
    443443    $r = bbp_parse_args( $args, array(
    444         'before'            => '<ul class="subsubsub">',
    445         'after'             => '</ul>',
    446         'link_before'       => '<li>',
    447         'link_after'        => '</li>',
    448         'count_before'      => ' <span class="count">(',
    449         'count_after'       => ')</span>',
    450         'separator'         => ' | ',
     444        'before'       => '<ul class="subsubsub">',
     445        'after'        => '</ul>',
     446        'link_before'  => '<li>',
     447        'link_after'   => '</li>',
     448        'count_before' => ' <span class="count">(',
     449        'count_after'  => ')</span>',
     450        'sep'          => ' | ',
     451
     452        // Retired, use 'sep' instead
     453        'separator'    => false
    451454    ), 'get_admin_repair_tool_overhead_filters' );
     455
     456    /**
     457     * Necessary for backwards compatibility
     458     * @see https://bbpress.trac.wordpress.org/ticket/2900
     459     */
     460    if ( ! empty( $r['separator'] ) ) {
     461        $r['sep'] = $r['separator'];
     462    }
    452463
    453464    // Get page
     
    480491    // Create the "All" link
    481492    $current = empty( $_GET['overhead'] ) ? 'current' : '';
    482     $links[] = $r['link_before']. '<a href="' . esc_url( $tools_url ) . '" class="' . esc_attr( $current ) . '">' . sprintf( esc_html__( 'All %s', 'bbpress' ), $r['count_before'] . count( $tools ) . $r['count_after'] ) . '</a>' . $r['link_after'];
    483 
    484     // Default ticker
    485     $i = 0;
     493    $links[] = $r['link_before'] . '<a href="' . esc_url( $tools_url ) . '" class="' . esc_attr( $current ) . '">' . sprintf( esc_html__( 'All %s', 'bbpress' ), $r['count_before'] . count( $tools ) . $r['count_after'] ) . '</a>' . $r['link_after'];
    486494
    487495    // Sort
     
    490498    // Loop through overheads and build filter
    491499    foreach ( $overheads as $overhead => $count ) {
    492 
    493         // Separator count
    494         $i++;
    495500
    496501        // Build the filter URL
     
    514519
    515520    // Surround output with before & after strings
    516     $output = $r['before'] . implode( $r['separator'], $links ) . $r['after'];
     521    $output = $r['before'] . implode( $r['sep'], $links ) . $r['after'];
    517522
    518523    // Filter & return
  • trunk/src/includes/forums/template.php

    r6627 r6628  
    673673function bbp_list_forums( $args = array() ) {
    674674
    675     // Define used variables
    676     $output = '';
    677 
    678675    // Parse arguments against default values
    679676    $r = bbp_parse_args( $args, array(
    680         'before'            => '<ul class="bbp-forums-list">',
    681         'after'             => '</ul>',
    682         'link_before'       => '<li class="bbp-forum">',
    683         'link_after'        => '</li>',
    684         'count_before'      => ' (',
    685         'count_after'       => ')',
    686         'count_sep'         => ', ',
    687         'separator'         => ', ',
    688         'forum_id'          => '',
    689         'show_topic_count'  => true,
    690         'show_reply_count'  => true,
     677        'before'           => '<ul class="bbp-forums-list">',
     678        'after'            => '</ul>',
     679        'link_before'      => '<li class="bbp-forum">',
     680        'link_after'       => '</li>',
     681        'count_before'     => ' (',
     682        'count_after'      => ')',
     683        'count_sep'        => ', ',
     684        'sep'              => ', ',
     685        'forum_id'         => '',
     686        'show_topic_count' => true,
     687        'show_reply_count' => true,
     688
     689        // Retired, use 'sep' instead
     690        'separator'        => false
    691691    ), 'list_forums' );
     692
     693    /**
     694     * Necessary for backwards compatibility
     695     * @see https://bbpress.trac.wordpress.org/ticket/2900
     696     */
     697    if ( ! empty( $r['separator'] ) ) {
     698        $r['sep'] = $r['separator'];
     699    }
     700
     701    // Define links
     702    $links = array();
    692703
    693704    // Loop through forums and create a list
    694705    $sub_forums = bbp_forum_get_subforums( $r['forum_id'] );
    695     if ( ! empty( $sub_forums ) ) {
    696 
    697         // Total count (for separator)
    698         $i          = 0;
    699         $total_subs = count( $sub_forums );
    700 
    701         foreach ( $sub_forums as $sub_forum ) {
    702             $i++; // Separator count
    703 
    704             // Get forum details
    705             $count     = array();
    706             $permalink = bbp_get_forum_permalink( $sub_forum->ID );
    707             $title     = bbp_get_forum_title( $sub_forum->ID );
    708             $show_sep  = ( $total_subs > $i )
    709                 ? $r['separator']
    710                 : '';
    711 
    712             // Show topic count
    713             if ( ! empty( $r['show_topic_count'] ) && ! bbp_is_forum_category( $sub_forum->ID ) ) {
    714                 $count['topic'] = bbp_get_forum_topic_count( $sub_forum->ID );
    715             }
    716 
    717             // Show reply count
    718             if ( ! empty( $r['show_reply_count'] ) && ! bbp_is_forum_category( $sub_forum->ID ) ) {
    719                 $count['reply'] = bbp_get_forum_reply_count( $sub_forum->ID );
    720             }
    721 
    722             // Counts to show
    723             $counts = ! empty( $count )
    724                 ? $r['count_before'] . implode( $r['count_sep'], $count ) . $r['count_after']
    725                 : '';
    726 
    727             // Subforum classes
    728             $subforum_classes      = array( 'bbp-forum-link' );
    729             $subforum_classes      = apply_filters( 'bbp_list_forums_subforum_classes', $subforum_classes, $sub_forum->ID );
    730             $subforum_classes_attr = 'class="' . implode( ' ', array_map( 'esc_attr', $subforum_classes ) ) . '"';
    731 
    732             // Build this sub forums link
    733             $output .= $r['link_before'] . '<a href="' . esc_url( $permalink ) . '" ' . $subforum_classes_attr . '>' . $title . $counts . '</a>' . $show_sep . $r['link_after'];
    734         }
     706    foreach ( $sub_forums as $sub_forum ) {
     707
     708        // Get forum details
     709        $count     = array();
     710        $permalink = bbp_get_forum_permalink( $sub_forum->ID );
     711        $title     = bbp_get_forum_title( $sub_forum->ID );
     712
     713        // Show topic count
     714        if ( ! empty( $r['show_topic_count'] ) && ! bbp_is_forum_category( $sub_forum->ID ) ) {
     715            $count['topic'] = bbp_get_forum_topic_count( $sub_forum->ID );
     716        }
     717
     718        // Show reply count
     719        if ( ! empty( $r['show_reply_count'] ) && ! bbp_is_forum_category( $sub_forum->ID ) ) {
     720            $count['reply'] = bbp_get_forum_reply_count( $sub_forum->ID );
     721        }
     722
     723        // Counts to show
     724        $counts = ! empty( $count )
     725            ? $r['count_before'] . implode( $r['count_sep'], $count ) . $r['count_after']
     726            : '';
     727
     728        // Subforum classes
     729        $subforum_classes      = array( 'bbp-forum-link' );
     730        $subforum_classes      = apply_filters( 'bbp_list_forums_subforum_classes', $subforum_classes, $sub_forum->ID );
     731        $subforum_classes_attr = 'class="' . implode( ' ', array_map( 'esc_attr', $subforum_classes ) ) . '"';
     732
     733        // Build this sub forums link
     734        $links[] = $r['link_before'] . '<a href="' . esc_url( $permalink ) . '" ' . $subforum_classes_attr . '>' . $title . $counts . '</a>' . $r['link_after'];
    735735    }
    736736
    737737    // Maybe wrap output
    738     if ( ! empty( $output ) ) {
    739         $output = $r['before'] . $output . $r['after'];
    740     }
     738    $output = ! empty( $links )
     739        ? $r['before'] . implode( $r['sep'], $links ) . $r['after']
     740        : '';
    741741
    742742    // Filter & output the forums list
Note: See TracChangeset for help on using the changeset viewer.