Skip to:
Content

bbPress.org


Ignore:
Timestamp:
11/01/2016 05:23:39 AM (8 years ago)
Author:
johnjamesjacoby
Message:

Roles: Improve performance of bbp_get_dynamic_roles() with a local static variable.

Previously, it rebuilt the multidimensional array of role keys & strings each time it was called, which may be several depending on the page being loaded.

See: #2452.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/includes/core/capabilities.php

    r6107 r6108  
    367367 */
    368368function bbp_get_dynamic_roles() {
    369     return (array) apply_filters( 'bbp_get_dynamic_roles', array(
    370 
    371         // Keymaster
    372         bbp_get_keymaster_role() => array(
    373             'name'         => __( 'Keymaster', 'bbpress' ),
    374             'capabilities' => bbp_get_caps_for_role( bbp_get_keymaster_role() )
    375         ),
    376 
    377         // Moderator
    378         bbp_get_moderator_role() => array(
    379             'name'         => __( 'Moderator', 'bbpress' ),
    380             'capabilities' => bbp_get_caps_for_role( bbp_get_moderator_role() )
    381         ),
    382 
    383         // Participant
    384         bbp_get_participant_role() => array(
    385             'name'         => __( 'Participant', 'bbpress' ),
    386             'capabilities' => bbp_get_caps_for_role( bbp_get_participant_role() )
    387         ),
    388 
    389         // Spectator
    390         bbp_get_spectator_role() => array(
    391             'name'         => __( 'Spectator', 'bbpress' ),
    392             'capabilities' => bbp_get_caps_for_role( bbp_get_spectator_role() )
    393         ),
    394 
    395         // Blocked
    396         bbp_get_blocked_role() => array(
    397             'name'         => __( 'Blocked', 'bbpress' ),
    398             'capabilities' => bbp_get_caps_for_role( bbp_get_blocked_role() )
    399         )
    400     ) );
     369    static $bbp_roles = null;
     370
     371    // Only run once
     372    if ( null === $bbp_roles ) {
     373        $bbp_roles = array(
     374
     375            // Keymaster
     376            bbp_get_keymaster_role() => array(
     377                'name'         => __( 'Keymaster', 'bbpress' ),
     378                'capabilities' => bbp_get_caps_for_role( bbp_get_keymaster_role() )
     379            ),
     380
     381            // Moderator
     382            bbp_get_moderator_role() => array(
     383                'name'         => __( 'Moderator', 'bbpress' ),
     384                'capabilities' => bbp_get_caps_for_role( bbp_get_moderator_role() )
     385            ),
     386
     387            // Participant
     388            bbp_get_participant_role() => array(
     389                'name'         => __( 'Participant', 'bbpress' ),
     390                'capabilities' => bbp_get_caps_for_role( bbp_get_participant_role() )
     391            ),
     392
     393            // Spectator
     394            bbp_get_spectator_role() => array(
     395                'name'         => __( 'Spectator', 'bbpress' ),
     396                'capabilities' => bbp_get_caps_for_role( bbp_get_spectator_role() )
     397            ),
     398
     399            // Blocked
     400            bbp_get_blocked_role() => array(
     401                'name'         => __( 'Blocked', 'bbpress' ),
     402                'capabilities' => bbp_get_caps_for_role( bbp_get_blocked_role() )
     403            )
     404        );
     405    }
     406
     407    // Filter & return
     408    return (array) apply_filters( 'bbp_get_dynamic_roles', $bbp_roles );
    401409}
    402410
Note: See TracChangeset for help on using the changeset viewer.