WordPress.org

Plugin Directory

Changeset 550129


Ignore:
Timestamp:
05/29/12 06:36:36 (23 months ago)
Author:
cnorris23
Message:

Auto-update code now stable

Location:
edit-author-slug/trunk/includes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • edit-author-slug/trunk/includes/admin-functions.php

    r548399 r550129  
    7676 
    7777/** 
    78  * Can the current user edit the author slug? 
    79  * 
    80  * @since 0.8.0 
    81  * 
    82  * @uses is_super_admin() To check if super admin 
    83  * @uses current_user_can() To check for 'edit_users' and 'edit_author_slug' caps 
    84  * @uses apply_filters() To call 'ba_eas_can_edit_author_slug' hook 
    85  * 
    86  * @return bool True if edit privileges. Defaults to false. 
    87  */ 
    88 function ba_eas_can_edit_author_slug() { 
    89  
    90     // Default to false 
    91     $retval = false; 
    92  
    93     if ( is_super_admin() || current_user_can( 'edit_users' ) || current_user_can( 'edit_author_slug' ) ) 
    94         $retval = true; 
    95  
    96     return apply_filters( 'ba_eas_can_edit_author_slug', $retval ); 
    97 } 
    98  
    99 /** 
    10078 * Update the user_nicename for a given user. 
    10179 * 
     
    151129    $author_slug = sanitize_title( $author_slug ); 
    152130 
     131    // Don't run the auto-update when the current user can update nicenames 
     132    remove_action( 'profile_update', 'ba_eas_auto_update_user_nicename_single' ); 
     133 
    153134    // Maybe update the author slug? 
    154     if ( $user->user_nicename != $author_slug ) { 
     135    if ( $author_slug != $user->user_nicename ) { 
    155136 
    156137        // Do we have an author slug? 
     
    166147        } 
    167148 
    168         // Remove the auto-update actions so we're already updating the nicename 
    169         remove_action( 'profile_update', 'ba_eas_auto_update_user_nicename' ); 
    170         remove_action( 'user_register',  'ba_eas_auto_update_user_nicename' ); 
    171  
    172149        // Looks like we made it, so let's update 
    173150        if ( !$updated_user_id = wp_update_user( array( 'ID' => $user_id, 'user_nicename' => $author_slug ) ) ) { 
    174151            $errors->add( 'ba_edit_author_slug', __( '<strong>ERROR</strong>: There was an error updating the author slug. Please try again.' ) ); 
    175  
    176             // Add the auto-update actions back for other functions 
    177             add_action( 'profile_update', 'ba_eas_auto_update_user_nicename' ); 
    178             add_action( 'user_register',  'ba_eas_auto_update_user_nicename' ); 
    179  
    180152            return; 
     153 
    181154        } 
    182155 
    183         // Clear the cache for good measure 
     156        // We're still here, so clear the cache for good measure 
    184157        wp_cache_delete( $user->user_nicename, 'userslugs' ); 
    185  
    186         // Add the auto-update actions back for other functions 
    187         add_action( 'profile_update', 'ba_eas_auto_update_user_nicename' ); 
    188         add_action( 'user_register',  'ba_eas_auto_update_user_nicename' ); 
    189     } 
     158    } 
     159} 
     160 
     161/** 
     162 * Can the current user edit the author slug? 
     163 * 
     164 * @since 0.8.0 
     165 * 
     166 * @uses is_super_admin() To check if super admin 
     167 * @uses current_user_can() To check for 'edit_users' and 'edit_author_slug' caps 
     168 * @uses apply_filters() To call 'ba_eas_can_edit_author_slug' hook 
     169 * 
     170 * @return bool True if edit privileges. Defaults to false. 
     171 */ 
     172function ba_eas_can_edit_author_slug() { 
     173 
     174    // Default to false 
     175    $retval = false; 
     176 
     177    if ( is_super_admin() || current_user_can( 'edit_users' ) || current_user_can( 'edit_author_slug' ) ) 
     178        $retval = true; 
     179 
     180    return apply_filters( 'ba_eas_can_edit_author_slug', $retval ); 
    190181} 
    191182 
     
    195186 * @since 0.9.0 
    196187 * 
    197  * @param int $user_id User id 
     188 * @param mixed $user User id or WP_User object 
     189 * @param bool $bulk Bulk upgrade flag. Defaults to false 
    198190 * 
    199191 * @uses get_userdata() To get the user object 
    200192 * @uses get_option() To get the default nicename structure 
    201  */ 
    202 function ba_eas_auto_update_user_nicename( $user_id ) { 
    203     // Bail if no user_id 
    204     if ( empty( $user_id ) ) 
    205         return; 
    206  
    207     // Get WP_User object 
    208     $user = get_userdata( $user_id ); 
     193 * @uses get_option() To get the default nicename structure 
     194 */ 
     195function ba_eas_auto_update_user_nicename( $user, $bulk = false ) { 
     196    // Bail if there's no id or object 
     197    if ( empty( $user ) ) 
     198        return; 
     199 
     200    if ( false === $bulk ) { 
     201        // Get WP_User object 
     202        $user = get_userdata( $user ); 
     203    } 
    209204 
    210205    // Double check we're still good 
    211     if ( !is_object( $user ) || empty( $user->id ) ) 
     206    if ( !is_object( $user ) || empty( $user ) ) 
     207        return; 
     208 
     209    // Setup the user_id 
     210    if ( !empty( $user->ID ) ) 
     211        $user_id  = (int) $user->ID; 
     212 
     213    // No user_id so bail 
     214    else 
    212215        return; 
    213216 
    214217    // Get the default nicename structure 
    215     $structure = get_option( '_ba_eas_default_user_nicename', 'username' ); 
    216  
     218    $structure = apply_filters( 'ba_eas_auto_update_user_nicename_structure', get_option( '_ba_eas_default_user_nicename', 'username' ), $user_id ); 
     219 
     220    // Make sure we have a structure 
     221    if ( empty( $structure ) ) 
     222        $structure = 'username'; 
     223 
     224    // Setup the current nicename 
     225    if ( empty( $user->user_nicename ) ) 
     226        $current_nicename = $user->user_nicename; 
     227    else 
     228        $current_nicename = $user->user_login; 
     229 
     230    // Setup default nicename 
     231    $nicename = $current_nicename; 
     232 
     233    // Setup the new nicename 
     234    switch( $structure ) { 
     235 
     236        case 'username': 
     237 
     238            if ( !empty( $user->user_login ) ) 
     239                $nicename = $user->user_login; 
     240 
     241            break; 
     242 
     243        case 'nickname': 
     244 
     245            if ( !empty( $user->nickname ) ) 
     246                $nicename = $user->nickname; 
     247 
     248            break; 
     249 
     250        case 'firstname': 
     251 
     252            if ( !empty( $user->first_name ) ) 
     253                $nicename = $user->first_name; 
     254 
     255            break; 
     256 
     257        case 'lastname': 
     258 
     259            if ( !empty( $user->last_name ) ) 
     260                $nicename = $user->last_name; 
     261 
     262            break; 
     263 
     264        case 'firstlast': 
     265 
     266            if ( !empty( $user->first_name ) && !empty( $user->last_name ) ) 
     267                $nicename = $user->first_name . '-' . $user->last_name; 
     268 
     269            break; 
     270 
     271        case 'lastfirst': 
     272 
     273            if ( !empty( $user->first_name ) && !empty( $user->last_name ) ) 
     274                $nicename = $user->last_name . '-' . $user->first_name; 
     275 
     276            break; 
     277    } 
     278 
     279    // Sanitize the new nicename 
     280    $nicename = apply_filters( 'ba_eas_pre_auto_update_user_nicename', sanitize_title( $nicename ), $user_id, $structure ); 
     281 
     282    // Bail if nothing changed 
     283    if ( $nicename == $current_nicename ) 
     284        return $user_id; 
     285 
     286    // Remove the auto-update actions so we don't find ourselves in a loop 
     287    remove_action( 'profile_update', 'ba_eas_auto_update_user_nicename_single' ); 
     288 
     289    // Update if there's a change 
     290    $user_id = wp_update_user( array( 'ID' => $user_id, 'user_nicename' => $nicename ) ); 
     291 
     292    // Clear the cache for good measure 
     293    wp_cache_delete( $current_nicename, 'userslugs' ); 
     294 
     295    return $user_id; 
     296} 
     297 
     298/** 
     299 * Auto-update the user_nicename for a given user. 
     300 * 
     301 * Runs on profile updates and registrations 
     302 * 
     303 * @since 0.9.0 
     304 * 
     305 * @param int $user_id User id 
     306 * 
     307 * @uses ba_eas_auto_update_user_nicename() To get the user object 
     308 */ 
     309function ba_eas_auto_update_user_nicename_single( $user_id = 0 ) { 
     310    ba_eas_auto_update_user_nicename( $user_id ); 
     311} 
     312 
     313/** 
     314 * Auto-update the user_nicename for a given user. 
     315 * 
     316 * Runs during the bulk upgrade process in the Dashboard 
     317 * 
     318 * @since 0.9.0 
     319 * 
     320 * @param int $user_id User id 
     321 * 
     322 * @uses ba_eas_auto_update_user_nicename() To get the user object 
     323 */ 
     324function ba_eas_auto_update_user_nicename_bulk( $user = false ) { 
     325    ba_eas_auto_update_user_nicename( $user, true ); 
    217326} 
    218327 
  • edit-author-slug/trunk/includes/hooks.php

    r546855 r550129  
    1717 
    1818    // Nicename Actions 
    19     add_action( 'edit_user_profile',          'ba_eas_show_user_nicename'          ); 
    20     add_action( 'show_user_profile',          'ba_eas_show_user_nicename'          ); 
    21     add_action( 'user_profile_update_errors', 'ba_eas_update_user_nicename', 10, 3 ); 
    22     add_action( 'admin_head',                 'ba_eas_show_user_nicename_scripts'  ); 
    23     add_action( 'profile_update',              'ba_eas_auto_update_user_nicename' ); 
    24     add_action( 'user_register',               'ba_eas_auto_update_user_nicename' ); 
     19    add_action( 'edit_user_profile',          'ba_eas_show_user_nicename'               ); 
     20    add_action( 'show_user_profile',          'ba_eas_show_user_nicename'               ); 
     21    add_action( 'user_profile_update_errors', 'ba_eas_update_user_nicename', 10, 3      ); 
     22    add_action( 'admin_head',                 'ba_eas_show_user_nicename_scripts'       ); 
     23    add_action( 'profile_update',             'ba_eas_auto_update_user_nicename_single' ); 
     24    add_action( 'user_register',              'ba_eas_auto_update_user_nicename_single' ); 
    2525 
    2626 
     
    3030 
    3131    // Settings 
    32     add_action( 'admin_menu', 'ba_eas_add_settings_menu' ); 
    33     add_action( 'admin_init', 'ba_eas_register_admin_settings'        ); 
     32    add_action( 'admin_menu', 'ba_eas_add_settings_menu'       ); 
     33    add_action( 'admin_init', 'ba_eas_register_admin_settings' ); 
    3434 
    3535} 
Note: See TracChangeset for help on using the changeset viewer.