Skip to:
Content

bbPress.org

Changeset 4236


Ignore:
Timestamp:
10/09/2012 06:52:38 PM (9 years ago)
Author:
johnjamesjacoby
Message:

Capabilities:

  • Introduce sub-action for saving a users profile.
  • Hook capability saving functions to this new action.
  • Remove duplicate admin routine from /bbp-admin/bbp-users.php.
  • Remove hardcoded capability saving from bbp_edit_user_handler().
  • Add edit_user capability checks to cap save and reset functions.
  • Fixes bug when caps would be lost when a user saves their own profile.
  • Fixes #1963.
Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/bbp-admin/bbp-users.php

    r4222 r4236  
    4848
    4949        // Admin styles
    50         add_action( 'admin_head',               array( $this, 'admin_head'          ) );
     50        add_action( 'admin_head',        array( $this, 'admin_head'          ) );
    5151
    5252        // User profile edit/display actions
    53         add_action( 'edit_user_profile',        array( $this, 'user_profile_forums' ) );
    54 
    55         // User profile save actions
    56         add_action( 'edit_user_profile_update', array( $this, 'user_profile_update' ) );
     53        add_action( 'edit_user_profile', array( $this, 'user_profile_forums' ) );
    5754
    5855        // Noop WordPress additional caps output area
     
    7067     * @uses sanitize_html_class() To sanitize the classes
    7168     */
    72     public function admin_head() { 
     69    public function admin_head() {
    7370        ?>
    7471
     
    8077                vertical-align: top;
    8178            }
    82            
     79
    8380            div.bbp-user-capabilities h4 {
    8481                margin: 0 0 10px;
    8582            }
    86            
     83
    8784            p.bbp-default-caps-wrapper {
    8885                clear: both;
     
    10097     * @since bbPress (r2464)
    10198     *
    102      * @param $user_id The user id
    103      * @uses do_action() Calls 'bbp_user_profile_update'
    104      * @return bool Always false
    105      */
    106     public function user_profile_update( $user_id ) {
    107 
    108         // Bail if no user
    109         if ( empty( $user_id ) )
    110             return;
    111 
    112         // Either reset caps for role
    113         if ( ! empty( $_POST['bbp-default-caps'] ) ) {
    114             bbp_reset_user_caps( $user_id );
    115 
    116         // Or set caps individually
    117         } else {
    118             bbp_save_user_caps( $user_id );
    119         }
    120     }
    121 
    122     /**
    123      * Responsible for saving additional profile options and settings
    124      *
    125      * @since bbPress (r2464)
    126      *
    12799     * @param WP_User $profileuser User data
    128100     * @uses do_action() Calls 'bbp_user_profile_forums'
    129101     * @return bool Always false
    130102     */
    131     public function user_profile_forums( $profileuser ) { 
     103    public function user_profile_forums( $profileuser ) {
    132104
    133105        // Bail if current user cannot edit users
  • trunk/bbp-includes/bbp-core-actions.php

    r4223 r4236  
    3939 * near the bottom of this file.
    4040 *
    41  *           v--WordPress Actions      v--bbPress Sub-actions
    42  */
    43 add_action( 'plugins_loaded',         'bbp_loaded',                 10 );
    44 add_action( 'init',                   'bbp_init',                   0  ); // Early for bbp_register
    45 add_action( 'parse_query',            'bbp_parse_query',            2  ); // Early for overrides
    46 add_action( 'widgets_init',           'bbp_widgets_init',           10 );
    47 add_action( 'generate_rewrite_rules', 'bbp_generate_rewrite_rules', 10 );
    48 add_action( 'wp_enqueue_scripts',     'bbp_enqueue_scripts',        10 );
    49 add_action( 'wp_head',                'bbp_head',                   10 );
    50 add_action( 'wp_footer',              'bbp_footer',                 10 );
    51 add_action( 'set_current_user',       'bbp_setup_current_user',     10 );
    52 add_action( 'setup_theme',            'bbp_setup_theme',            10 );
    53 add_action( 'after_setup_theme',      'bbp_after_setup_theme',      10 );
    54 add_action( 'template_redirect',      'bbp_template_redirect',      10 );
    55 add_action( 'login_form_login',       'bbp_login_form_login',       10 );
     41 *           v--WordPress Actions        v--bbPress Sub-actions
     42 */
     43add_action( 'plugins_loaded',           'bbp_loaded',                   10 );
     44add_action( 'init',                     'bbp_init',                     0  ); // Early for bbp_register
     45add_action( 'parse_query',              'bbp_parse_query',              2  ); // Early for overrides
     46add_action( 'widgets_init',             'bbp_widgets_init',             10 );
     47add_action( 'generate_rewrite_rules',   'bbp_generate_rewrite_rules',   10 );
     48add_action( 'wp_enqueue_scripts',       'bbp_enqueue_scripts',          10 );
     49add_action( 'wp_head',                  'bbp_head',                     10 );
     50add_action( 'wp_footer',                'bbp_footer',                   10 );
     51add_action( 'set_current_user',         'bbp_setup_current_user',       10 );
     52add_action( 'setup_theme',              'bbp_setup_theme',              10 );
     53add_action( 'after_setup_theme',        'bbp_after_setup_theme',        10 );
     54add_action( 'template_redirect',        'bbp_template_redirect',        10 );
     55add_action( 'login_form_login',         'bbp_login_form_login',         10 );
     56add_action( 'edit_user_profile_update', 'bbp_edit_user_profile_update', 10 );
    5657
    5758/**
     
    221222
    222223// User status
     224// @todo make these sub-actions
    223225add_action( 'make_ham_user',  'bbp_make_ham_user'  );
    224226add_action( 'make_spam_user', 'bbp_make_spam_user' );
     227
     228// User capabilities
     229add_action( 'bbp_edit_user_profile_update', 'bbp_edit_user_profile_update_capabilities' );
    225230
    226231// Caches
     
    236241 *
    237242 * 1. Form submission within a theme (new and edit)
    238  * 2. Accessing private or hidden forums
     243 * 2. Accessing private or hidden content (forums/topics/replies)
    239244 * 3. Editing forums, topics, replies, users, and tags
    240245 */
  • trunk/bbp-includes/bbp-core-caps.php

    r4222 r4236  
    875875        return false;
    876876
    877     // Bail if not a member of this blog
    878     if ( ! user_can( $user_id, 'read' ) )
     877    // Bail if current user cannot edit this user
     878    if ( ! current_user_can( 'edit_user', $user_id ) )
    879879        return false;
    880880
     
    914914        return false;
    915915
    916     // Bail if not a member of this blog
    917     if ( ! user_can( $user_id, 'read' ) )
     916    // Bail if current user cannot edit this user
     917    if ( ! current_user_can( 'edit_user', $user_id ) )
    918918        return false;
    919919
     
    938938    // Success
    939939    return true;
     940}
     941
     942/**
     943 * Helper function hooked to 'bbp_edit_user_profile_update' action to save or update
     944 * user roles and capabilities.
     945 *
     946 * @since bbPress (r4235)
     947 *
     948 * @param int $user_id
     949 * @uses bbp_reset_user_caps() to reset caps
     950 * @usse bbp_save_user_caps() to save caps
     951 */
     952function bbp_edit_user_profile_update_capabilities( $user_id = 0 ) {
     953
     954    // Bail if no user ID was passed
     955    if ( empty( $user_id ) )
     956        return;
     957
     958    // Either reset caps for role
     959    if ( ! empty( $_POST['bbp-default-caps'] ) ) {
     960        bbp_reset_user_caps( $user_id );
     961
     962    // Or set caps individually
     963    } else {
     964        bbp_save_user_caps( $user_id );
     965    }
    940966}
    941967
  • trunk/bbp-includes/bbp-core-dependency.php

    r4223 r4236  
    233233function bbp_login_form_login() {
    234234    do_action( 'bbp_login_form_login' );
     235}
     236
     237/** User Actions **************************************************************/
     238
     239/**
     240 * The main action for hooking into a user saving their profile
     241 *
     242 * @since bbPress (r4235)
     243 * @param int $user_id ID of user being edited
     244 * @uses do_action() Calls 'bbp_edit_user_profile_update'
     245 */
     246function bbp_edit_user_profile_update( $user_id = 0 ) {
     247    do_action( 'bbp_edit_user_profile_update', $user_id );
    235248}
    236249
  • trunk/bbp-includes/bbp-user-functions.php

    r4228 r4236  
    934934    $edit_user = edit_user( $user_id );
    935935
    936     // Either reset caps for role
    937     if ( ! empty( $_POST['bbp-default-caps'] ) ) {
    938         bbp_reset_user_caps( $user_id );
    939 
    940     // Or set caps individually
    941     } else {
    942         bbp_save_user_caps( $user_id );
    943     }
    944 
    945936    // Error(s) editng the user, so copy them into the global
    946937    if ( is_wp_error( $edit_user ) ) {
Note: See TracChangeset for help on using the changeset viewer.