WordPress.org

Make WordPress Core

Ticket #16020: 16020.6.diff

File 16020.6.diff, 23.2 KB (added by cdog, 2 years ago)
  • wp-includes/user.php

     
    13541354        } 
    13551355        $display_name = apply_filters( 'pre_user_display_name', $display_name ); 
    13561356 
     1357        if ( empty( $avatar_type ) || $avatar_type != 'custom' ) 
     1358                $avatar_type = 'gravatar'; 
     1359 
     1360        if ( empty( $custom_avatar ) ) 
     1361                $custom_avatar = ''; 
     1362 
    13571363        if ( empty($description) ) 
    13581364                $description = ''; 
    13591365        $description = apply_filters('pre_user_description', $description); 
     
    15201526 * @return array 
    15211527 */ 
    15221528function _get_additional_user_keys( $user ) { 
    1523         $keys = array( 'first_name', 'last_name', 'nickname', 'description', 'rich_editing', 'comment_shortcuts', 'admin_color', 'use_ssl', 'show_admin_bar_front' ); 
     1529        $keys = array( 'first_name', 'last_name', 'nickname', 'description', 'rich_editing', 'comment_shortcuts', 'admin_color', 'use_ssl', 'show_admin_bar_front', 'avatar_type', 'custom_avatar' ); 
    15241530        return array_merge( $keys, array_keys( _wp_get_user_contactmethods( $user ) ) ); 
    15251531} 
    15261532 
  • wp-includes/media.php

     
    575575} 
    576576 
    577577/** 
     578 * Resize a custom avatar 
     579 * 
     580 * @since 3.5.1 
     581 * @param string URL to an avatar image to resize 
     582 * @param int Size of the new avatar image 
     583 * @return array Array with the URL of the new avatar image 
     584 */ 
     585function custom_avatar_resize( $url, $size ) { 
     586        $upload_dir    = wp_upload_dir(); 
     587        $file          = str_replace( $upload_dir['baseurl'], $upload_dir['basedir'], $url ); 
     588        $info          = pathinfo( $file ); 
     589        $dir           = $info['dirname']; 
     590        $ext           = $info['extension']; 
     591        $name          = wp_basename( $file, ".$ext" ); 
     592        $suffix        = "{$size}x{$size}"; 
     593        $destfilename  = "{$dir}/{$name}-{$suffix}.{$ext}"; 
     594        $custom_avatar = array(); 
     595 
     596        if ( file_exists( $destfilename ) ) { 
     597                $custom_avatar['url']  = str_replace( $upload_dir['basedir'], $upload_dir['baseurl'], $destfilename ); 
     598                $custom_avatar['skip'] = true; 
     599        } else { 
     600                $file = image_resize( $file, $size, $size, true ); 
     601 
     602                if ( ! is_wp_error( $file ) ) { 
     603                        $custom_avatar['url']  = str_replace( $upload_dir['basedir'], $upload_dir['baseurl'], $file ); 
     604                        $custom_avatar['skip'] = false; 
     605                } 
     606        } 
     607 
     608        return $custom_avatar; 
     609} 
     610 
     611/** 
    578612 * Adds a 'wp-post-image' class to post thumbnails 
    579613 * Uses the begin_fetch_post_thumbnail_html and end_fetch_post_thumbnail_html action hooks to 
    580614 * dynamically add/remove itself so as to only filter post thumbnails 
  • wp-includes/formatting.php

     
    27882788                        $value = absint( $value ); 
    27892789                        break; 
    27902790 
     2791                case 'avatar_size': 
     2792                        $value = absint( $value ); 
     2793                        if ( $value < 1 ) 
     2794                                $value = 1; 
     2795                        elseif ( $value > 512 ) 
     2796                                $value = 512; 
     2797                        break; 
     2798 
    27912799                case 'posts_per_page': 
    27922800                case 'posts_per_rss': 
    27932801                        $value = (int) $value; 
  • wp-includes/pluggable.php

     
    15751575 * Retrieve the avatar for a user who provided a user ID or email address. 
    15761576 * 
    15771577 * @since 2.5 
    1578  * @param int|string|object $id_or_email A user ID,  email address, or comment object 
     1578 * @param int|string|object $id_or_email A user ID, email address, or comment object 
    15791579 * @param int $size Size of the avatar image 
    15801580 * @param string $default URL to a default image to use if no avatar is available 
    15811581 * @param string $alt Alternative text to use in image tag. Defaults to blank 
     1582 * @param string $avatar_type Override user preference (Used in user-edit.php) 
    15821583 * @return string <img> tag for the user's avatar 
    15831584*/ 
    1584 function get_avatar( $id_or_email, $size = '96', $default = '', $alt = false ) { 
     1585function get_avatar( $id_or_email, $size = '', $default = '', $alt = false, $avatar_type = '' ) { 
    15851586        if ( ! get_option('show_avatars') ) 
    15861587                return false; 
    15871588 
     
    15901591        else 
    15911592                $safe_alt = esc_attr( $alt ); 
    15921593 
    1593         if ( !is_numeric($size) ) 
    1594                 $size = '96'; 
     1594        if ( empty( $size ) || ! is_numeric( $size ) ) { 
     1595                $size = get_option( 'avatar_size' ); 
     1596        } else { 
     1597                $size = absint( $size ); 
    15951598 
     1599                if ( $size < 1 ) 
     1600                        $size = 1; 
     1601                elseif ( $size > 512 ) 
     1602                        $size = 512; 
     1603        } 
     1604 
     1605        if ( ! empty( $avatar_type ) && $avatar_type != 'custom' ) 
     1606                $avatar_type = 'gravatar'; 
     1607 
    15961608        $email = ''; 
    15971609        if ( is_numeric($id_or_email) ) { 
    15981610                $id = (int) $id_or_email; 
     
    16121624                                $email = $user->user_email; 
    16131625                } elseif ( !empty($id_or_email->comment_author_email) ) { 
    16141626                        $email = $id_or_email->comment_author_email; 
     1627 
     1628                        if ( $id = email_exists( $email ) ) 
     1629                                $user = get_userdata( $id ); 
    16151630                } 
    16161631        } else { 
    16171632                $email = $id_or_email; 
     1633 
     1634                if ( $id = email_exists( $email ) ) 
     1635                        $user = get_userdata( $id ); 
    16181636        } 
    16191637 
     1638        if ( isset( $user ) ) { 
     1639                if ( empty( $avatar_type ) ) 
     1640                        $avatar_type = $user->avatar_type; 
     1641        } else { 
     1642                $avatar_type = 'gravatar'; 
     1643        } 
     1644 
    16201645        if ( empty($default) ) { 
    16211646                $avatar_default = get_option('avatar_default'); 
    16221647                if ( empty($avatar_default) ) 
     
    16501675        elseif ( strpos($default, 'http://') === 0 ) 
    16511676                $default = add_query_arg( 's', $size, $default ); 
    16521677 
    1653         if ( !empty($email) ) { 
    1654                 $out = "$host/avatar/"; 
    1655                 $out .= $email_hash; 
    1656                 $out .= '?s='.$size; 
    1657                 $out .= '&amp;d=' . urlencode( $default ); 
     1678        $img = "<img alt='{$safe_alt}' src='{$default}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />"; 
    16581679 
     1680        if ( $avatar_type == 'custom' ) { 
     1681                $avatar_rating = get_option( 'avatar_rating' ); 
     1682                $custom_avatar_rating = get_post_meta( $user->custom_avatar, '_wp_attachment_custom_avatar_rating', true ); 
     1683 
     1684                $ratings['G']  = 1; 
     1685                $ratings['PG'] = 2; 
     1686                $ratings['R']  = 3; 
     1687                $ratings['X']  = 4; 
     1688 
     1689                if ( $ratings[ $custom_avatar_rating ] <= $ratings[ $avatar_rating ] ) { 
     1690                        $custom_avatar = get_post_meta( $user->custom_avatar, '_wp_attachment_custom_avatar', true ); 
     1691 
     1692                        if ( empty( $custom_avatar[ $size ] ) ) { 
     1693                                $url = wp_get_attachment_image_src( $user->custom_avatar, 'full' ); 
     1694 
     1695                                // Resize the avatar image 
     1696                                $custom_avatar[ $size ] = custom_avatar_resize( $url[0], $size ); 
     1697 
     1698                                // Update the user meta-data 
     1699                                update_post_meta( $user->custom_avatar, '_wp_attachment_custom_avatar', $custom_avatar ); 
     1700                        } 
     1701 
     1702                        $src = $custom_avatar[ $size ]['url']; 
     1703                        $img = "<img alt='{$safe_alt}' src='{$src}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />"; 
     1704                } 
     1705        } else if ( ! empty($email) ) { 
     1706                $src  = "$host/avatar/"; 
     1707                $src .= $email_hash; 
     1708                $src .= '?s='.$size; 
     1709                $src .= '&amp;d=' . urlencode( $default ); 
     1710 
    16591711                $rating = get_option('avatar_rating'); 
    1660                 if ( !empty( $rating ) ) 
    1661                         $out .= "&amp;r={$rating}"; 
    16621712 
    1663                 $avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />"; 
    1664         } else { 
    1665                 $avatar = "<img alt='{$safe_alt}' src='{$default}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />"; 
     1713                if ( ! empty( $rating ) ) 
     1714                        $src .= "&amp;r={$rating}"; 
     1715 
     1716                $img = "<img alt='{$safe_alt}' src='{$src}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />"; 
    16661717        } 
    16671718 
    1668         return apply_filters('get_avatar', $avatar, $id_or_email, $size, $default, $alt); 
     1719        return apply_filters('get_avatar', $img, $id_or_email, $size, $default, $alt, $avatar_type); 
    16691720} 
    16701721endif; 
    16711722 
  • wp-admin/includes/misc.php

     
    553553<?php 
    554554} 
    555555 
     556/** 
     557 * Cleanup a custom avatar 
     558 * 
     559 * @since 3.5.1 
     560 * @param int $attachment_id An attachment ID 
     561 */ 
     562function custom_avatar_cleanup( $attachment_id ) { 
     563        $upload_dir    = wp_upload_dir(); 
     564        $custom_avatar = get_post_meta( $attachment_id, '_wp_attachment_custom_avatar', true ); 
     565 
     566        if ( is_array( $custom_avatar ) ) { 
     567                foreach ( $custom_avatar as $file ) { 
     568                        if ( ! $file['skip'] ) { 
     569                                $file = str_replace( $upload_dir['baseurl'], $upload_dir['basedir'], $file['url'] ); 
     570                                @unlink( $file ); 
     571                        } 
     572                } 
     573        } 
     574 
     575        delete_post_meta( $attachment_id, '_wp_attachment_custom_avatar' ); 
     576        delete_post_meta( $attachment_id, '_wp_attachment_custom_avatar_rating' ); 
     577        delete_post_meta( $attachment_id, '_wp_attachment_is_custom_avatar' ); 
     578} 
     579 
     580/** 
     581 * Delete a custom avatar 
     582 * 
     583 * @since 3.5.1 
     584 * @param int $attachment_id An attachment ID 
     585 */ 
     586function delete_custom_avatar( $attachment_id ) { 
     587        $is_custom_avatar = get_post_meta( $attachment_id, '_wp_attachment_is_custom_avatar', true ); 
     588 
     589        if ( ! $is_custom_avatar ) 
     590                return; 
     591 
     592        custom_avatar_cleanup( $attachment_id ); 
     593 
     594        $args = array( 
     595                'meta_key'   => 'custom_avatar', 
     596                'meta_value' => $attachment_id 
     597        ); 
     598 
     599        $users = get_users( $args ); 
     600 
     601        foreach ( $users as $user ) { 
     602                // Update the user meta-data 
     603                update_user_meta( $user->ID, 'avatar_type', 'gravatar' ); 
     604                delete_user_meta( $user->ID, 'custom_avatar' ); 
     605        } 
     606} 
     607 
     608add_action( 'delete_attachment', 'delete_custom_avatar' ); 
     609 
    556610function _ipad_meta() { 
    557611        if ( wp_is_mobile() ) { 
    558612                ?> 
  • wp-admin/includes/schema.php

     
    476476 
    477477        // 3.5 
    478478        'link_manager_enabled' => 0, 
     479        'avatar_size' => 96 
    479480        ); 
    480481 
    481482        // 3.3 
  • wp-admin/includes/template.php

     
    14611461        $media_states = array(); 
    14621462        $stylesheet = get_option('stylesheet'); 
    14631463 
     1464        $meta_avatar = get_post_meta( $post->ID, '_wp_attachment_is_custom_avatar', true ); 
     1465        if ( ! empty( $meta_avatar ) ) 
     1466                $media_states[] = __( 'Avatar Image' ); 
     1467 
    14641468        if ( current_theme_supports( 'custom-header') ) { 
    14651469                $meta_header = get_post_meta($post->ID, '_wp_attachment_is_custom_header', true ); 
    14661470                if ( ! empty( $meta_header ) && $meta_header == $stylesheet ) 
     
    14791483                $state_count = count( $media_states ); 
    14801484                $i = 0; 
    14811485                echo ' - '; 
     1486                echo '<span class="post-state">'; 
    14821487                foreach ( $media_states as $state ) { 
    14831488                        ++$i; 
    14841489                        ( $i == $state_count ) ? $sep = '' : $sep = ', '; 
    1485                         echo "<span class='post-state'>$state$sep</span>"; 
     1490                        echo $state . $sep; 
    14861491                } 
     1492                echo '</span>'; 
    14871493        } 
    14881494} 
    14891495 
  • wp-admin/includes/user.php

     
    9494                $user->rich_editing = isset( $_POST['rich_editing'] ) && 'false' == $_POST['rich_editing'] ? 'false' : 'true'; 
    9595                $user->admin_color = isset( $_POST['admin_color'] ) ? sanitize_text_field( $_POST['admin_color'] ) : 'fresh'; 
    9696                $user->show_admin_bar_front = isset( $_POST['admin_bar_front'] ) ? 'true' : 'false'; 
     97                $user->avatar_type = isset( $_POST['avatar_type'] ) ? sanitize_text_field( $_POST['avatar_type'] ) : 'gravatar'; 
     98 
     99                if ( isset( $userdata->custom_avatar ) ) { 
     100                        $user->custom_avatar  = $userdata->custom_avatar; 
     101                        $custom_avatar_rating = isset( $_POST['custom_avatar_rating'] ) ? sanitize_text_field( $_POST['custom_avatar_rating'] ) : 'G'; 
     102 
     103                        // Update the user meta-data 
     104                        update_post_meta( $user->custom_avatar, '_wp_attachment_custom_avatar_rating', $custom_avatar_rating ); 
     105                } 
     106 
     107                // Add a new avatar 
     108                if ( isset( $_POST['upload-avatar'] ) && $_POST['upload-avatar'] ) { 
     109                        if ( isset( $user->custom_avatar ) ) { 
     110                                // Reset the current avatar 
     111                                custom_avatar_cleanup( $user->custom_avatar ); 
     112                        } 
     113 
     114                        $mimes = array( 
     115                                'bmp'  => 'image/bmp', 
     116                                'gif'  => 'image/gif', 
     117                                'jpeg' => 'image/jpeg', 
     118                                'jpg'  => 'image/jpeg', 
     119                                'jpe'  => 'image/jpeg', 
     120                                'png'  => 'image/png', 
     121                                'tiff' => 'image/tiff', 
     122                                'tif'  => 'image/tiff' 
     123                        ); 
     124 
     125                        $overrides = array( 'mimes' => $mimes, 'test_form' => false ); 
     126                        $file      = wp_handle_upload( $_FILES['import'], $overrides ); 
     127 
     128                        if ( isset( $file['error'] ) ) 
     129                                wp_die( $file['error'],  __( 'Image Upload Error' ) ); 
     130 
     131                        $url      = $file['url']; 
     132                        $type     = $file['type']; 
     133                        $file     = $file['file']; 
     134                        $filename = basename( $file ); 
     135 
     136                        // Construct the object array 
     137                        $object = array( 
     138                                'guid'           => $url, 
     139                                'post_content'   => $url, 
     140                                'post_mime_type' => $type, 
     141                                'post_title'     => $filename 
     142                        ); 
     143 
     144                        // Save the data 
     145                        $attachment_id = wp_insert_attachment( $object, $file ); 
     146 
     147                        // Add the attachment meta-data 
     148                        wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $file ) ); 
     149 
     150                        $size          = get_option( 'avatar_size' ); 
     151                        $custom_avatar = array(); 
     152 
     153                        // Resize the avatar image to default size 
     154                        $custom_avatar[ $size ] = custom_avatar_resize( $url, $size ); 
     155 
     156                        update_post_meta( $attachment_id, '_wp_attachment_custom_avatar', $custom_avatar ); 
     157                        update_post_meta( $attachment_id, '_wp_attachment_custom_avatar_rating', 'G' ); 
     158                        update_post_meta( $attachment_id, '_wp_attachment_is_custom_avatar', true ); 
     159 
     160                        // Add the user meta-data 
     161                        $user->avatar_type   = 'custom'; 
     162                        $user->custom_avatar = $attachment_id; 
     163                } 
    97164        } 
    98165 
    99166        $user->comment_shortcuts = isset( $_POST['comment_shortcuts'] ) && 'true' == $_POST['comment_shortcuts'] ? 'true' : ''; 
  • wp-admin/options-discussion.php

     
    240240 
    241241</fieldset></td> 
    242242</tr> 
     243<tr valign="top"> 
     244        <th scope="row"><?php _e( 'Avatar Size' ) ?></th> 
     245        <td> 
     246                <fieldset> 
     247                        <legend class="screen-reader-text"><span><?php _e( 'Avatar Size' ); ?></span></legend> 
     248                        <label> 
     249                                <?php _e( 'Size of the avatar image' ); ?> 
     250                                <input name="avatar_size" type="number" step="1" min="0" value="<?php form_option( 'avatar_size' ); ?>" class="small-text" /> 
     251                        </label> 
     252                </fieldset> 
     253        </td> 
     254</tr> 
    243255<?php do_settings_fields('discussion', 'avatars'); ?> 
    244256</table> 
    245257 
  • wp-admin/options.php

     
    6060 
    6161$whitelist_options = array( 
    6262        'general' => array( 'blogname', 'blogdescription', 'gmt_offset', 'date_format', 'time_format', 'start_of_week', 'timezone_string' ), 
    63         'discussion' => array( 'default_pingback_flag', 'default_ping_status', 'default_comment_status', 'comments_notify', 'moderation_notify', 'comment_moderation', 'require_name_email', 'comment_whitelist', 'comment_max_links', 'moderation_keys', 'blacklist_keys', 'show_avatars', 'avatar_rating', 'avatar_default', 'close_comments_for_old_posts', 'close_comments_days_old', 'thread_comments', 'thread_comments_depth', 'page_comments', 'comments_per_page', 'default_comments_page', 'comment_order', 'comment_registration' ), 
     63        'discussion' => array( 'default_pingback_flag', 'default_ping_status', 'default_comment_status', 'comments_notify', 'moderation_notify', 'comment_moderation', 'require_name_email', 'comment_whitelist', 'comment_max_links', 'moderation_keys', 'blacklist_keys', 'show_avatars', 'avatar_rating', 'avatar_default', 'avatar_size', 'close_comments_for_old_posts', 'close_comments_days_old', 'thread_comments', 'thread_comments_depth', 'page_comments', 'comments_per_page', 'default_comments_page', 'comment_order', 'comment_registration' ), 
    6464        'media' => array( 'thumbnail_size_w', 'thumbnail_size_h', 'thumbnail_crop', 'medium_size_w', 'medium_size_h', 'large_size_w', 'large_size_h', 'image_default_size', 'image_default_align', 'image_default_link_type' ), 
    6565        'reading' => array( 'posts_per_page', 'posts_per_rss', 'rss_use_excerpt', 'show_on_front', 'page_on_front', 'page_for_posts', 'blog_public' ), 
    6666        'writing' => array( 'use_smilies', 'default_category', 'default_email_category', 'use_balanceTags', 'default_link_category', 'default_post_format' ) 
  • wp-admin/user-edit.php

     
    147147        exit; 
    148148} 
    149149 
     150case 'remove-avatar': 
     151check_admin_referer( 'update-user_' . $user_id ); 
     152 
     153if ( ! current_user_can( 'edit_user', $user_id ) ) 
     154        wp_die( __( 'You do not have permission to edit this user.' ) ); 
     155 
     156$custom_avatar = get_user_meta( $user_id, 'custom_avatar', true ); 
     157 
     158custom_avatar_cleanup( $custom_avatar ); 
     159update_user_meta( $user_id, 'avatar_type', 'gravatar' ); 
     160delete_user_meta( $user_id, 'custom_avatar' ); 
     161 
     162$redirect = add_query_arg( 'updated', true, get_edit_user_link( $user_id ) ); 
     163 
     164if ( $wp_http_referer ) 
     165        $redirect = add_query_arg( 'wp_http_referer', urlencode( $wp_http_referer ), $redirect); 
     166 
     167wp_redirect( $redirect ); 
     168exit; 
     169 
    150170default: 
    151171$profileuser = get_user_to_edit($user_id); 
    152172 
     
    189209} ?> 
    190210</h2> 
    191211 
    192 <form id="your-profile" action="<?php echo esc_url( self_admin_url( IS_PROFILE_PAGE ? 'profile.php' : 'user-edit.php' ) ); ?>" method="post"<?php do_action('user_edit_form_tag'); ?>> 
     212<form enctype="multipart/form-data" id="your-profile" action="<?php echo esc_url( self_admin_url( IS_PROFILE_PAGE ? 'profile.php' : 'user-edit.php' ) ); ?>" method="post"<?php do_action( 'user_edit_form_tag' ); ?>> 
    193213<?php wp_nonce_field('update-user_' . $user_id) ?> 
    194214<?php if ( $wp_http_referer ) : ?> 
    195215        <input type="hidden" name="wp_http_referer" value="<?php echo esc_url($wp_http_referer); ?>" /> 
     
    362382?> 
    363383</table> 
    364384 
     385<h3><?php _e( 'Avatar' ); ?></h3> 
     386 
     387<?php 
     388$avatar_type = isset( $profileuser->avatar_type ) ? $profileuser->avatar_type : 'gravatar'; 
     389 
     390if ( isset( $profileuser->custom_avatar ) ) { 
     391        $custom_avatar_rating = get_post_meta( $profileuser->custom_avatar, '_wp_attachment_custom_avatar_rating', true ); 
     392        $has_custom_avatar = get_post_meta( $profileuser->custom_avatar, '_wp_attachment_is_custom_avatar', true ); 
     393} 
     394 
     395if ( ! isset( $custom_avatar_rating ) ) 
     396        $custom_avatar_rating = 'G'; 
     397 
     398if ( ! isset( $has_custom_avatar ) ) 
     399        $has_custom_avatar = false; 
     400?> 
     401 
     402<table class="form-table"> 
     403<tr> 
     404        <th><?php _e( 'Display this avatar' ); ?></th> 
     405        <td class="avatar-picker"> 
     406                <fieldset> 
     407                        <legend class="screen-reader-text"><span><?php _e( 'Display this avatar' ); ?></span></legend> 
     408                        <label> 
     409                                <input <?php checked( $avatar_type, 'gravatar' ); ?> name="avatar_type" type="radio" value="gravatar" /> 
     410                                <?php echo get_avatar( $profileuser->ID, 32, '', false, 'gravatar' ); ?> 
     411                                <?php _e( 'Gravatar' ); ?> 
     412                                <span class="description"><?php _e( '<a href="http://codex.wordpress.org/How_to_Use_Gravatars_in_WordPress" target="_blank">More information</a>' ); ?></span> 
     413                        </label> 
     414                        <?php if ( $has_custom_avatar ) : ?> 
     415                        <br /> 
     416                        <label> 
     417                                <input <?php checked( $avatar_type, 'custom' ); ?> name="avatar_type" type="radio" value="custom" /> 
     418                                <?php echo get_avatar( $profileuser->ID, 32, '', false, 'custom' ); ?> 
     419                                <?php _e( 'Custom' ); ?> 
     420                        </label> 
     421                        <?php endif; ?> 
     422                        <?php 
     423                        if ( $has_custom_avatar && current_user_can( 'upload_files' ) ) { 
     424                                $href = esc_attr( add_query_arg( array( 
     425                                        'action' => 'remove-avatar', 
     426                                        'user_id' => $profileuser->ID 
     427                                ), self_admin_url( IS_PROFILE_PAGE ? 'profile.php' : 'user-edit.php' ) ) ); 
     428 
     429                                echo '<a class="delete" href="' . wp_nonce_url( $href, 'update-user_' . $user_id ) .'" onclick="return showNotice.warn();">' . __( 'Delete' ) . '</a>'; 
     430                        } 
     431                        ?> 
     432                </fieldset> 
     433        </td> 
     434</tr> 
     435<?php if ( current_user_can( 'upload_files' ) ) : ?> 
     436<tr> 
     437        <th><?php _e( 'Select Image' ); ?></th> 
     438        <td> 
     439                <fieldset> 
     440                        <legend class="screen-reader-text"><span><?php _e( 'Select Image' ); ?></span></legend> 
     441                        <label class="description" for="upload-avatar"><?php _e( 'Choose an image from your computer:' ); ?></label><br /> 
     442                        <input name="import" type="file" /> 
     443                        <?php submit_button( __( 'Upload' ), 'button', 'upload-avatar', false ); ?> 
     444                </fieldset> 
     445        </td> 
     446</tr> 
     447<?php endif; ?> 
     448<?php if ( $has_custom_avatar ) : ?> 
     449<tr> 
     450        <th><?php _e( 'Avatar Rating' ); ?></th> 
     451        <td> 
     452                <fieldset> 
     453                        <legend class="screen-reader-text"><span><?php _e( 'Avatar Rating' ); ?></span></legend> 
     454                        <?php 
     455                        $ratings = array( 
     456                                /* translators: Content suitability rating: http://bit.ly/89QxZA */ 
     457                                'G'  => __( 'G &#8212; Suitable for all audiences' ), 
     458                                /* translators: Content suitability rating: http://bit.ly/89QxZA */ 
     459                                'PG' => __( 'PG &#8212; Possibly offensive, usually for audiences 13 and above' ), 
     460                                /* translators: Content suitability rating: http://bit.ly/89QxZA */ 
     461                                'R'  => __( 'R &#8212; Intended for adult audiences above 17' ), 
     462                                /* translators: Content suitability rating: http://bit.ly/89QxZA */ 
     463                                'X'  => __( 'X &#8212; Even more mature than above' ) 
     464                        ); 
     465 
     466                        foreach ( $ratings as $key => $rating ) { 
     467                                $selected = ( $custom_avatar_rating == $key ) ? 'checked="checked"' : ''; 
     468                                echo '<label><input ' . $selected . ' name="custom_avatar_rating" type="radio" value="' . esc_attr( $key ) . '" /> ' . $rating . '</label><br />'; 
     469                        }; 
     470                        ?> 
     471                        <span class="description"><?php _e( 'Choose a rating for your custom avatar.' ); ?></span> 
     472                </fieldset> 
     473        </td> 
     474</tr> 
     475<?php endif; ?> 
     476</table> 
     477 
    365478<h3><?php IS_PROFILE_PAGE ? _e('About Yourself') : _e('About the user'); ?></h3> 
    366479 
    367480<table class="form-table"> 
  • wp-admin/css/colors-fresh.css

     
    642642table.widefat span.spam a, 
    643643#dashboard_recent_comments .delete a, 
    644644#dashboard_recent_comments .trash a, 
    645 #dashboard_recent_comments .spam a { 
     645#dashboard_recent_comments .spam a, 
     646#profile-page .delete { 
    646647        color: #bc0b0b; 
    647648} 
    648649 
     
    818819table.widefat .spam a:hover, 
    819820#dashboard_recent_comments .delete a:hover, 
    820821#dashboard_recent_comments .trash a:hover 
    821 #dashboard_recent_comments .spam a:hover { 
     822#dashboard_recent_comments .spam a:hover, 
     823#profile-page .delete:hover { 
    822824        color: #f00; 
    823825} 
    824826 
  • wp-admin/css/wp-admin.css

     
    50395039        width: 15em; 
    50405040} 
    50415041 
     5042#profile-page .avatar-picker img { 
     5043        margin: 2px 0; 
     5044        vertical-align: middle; 
     5045} 
     5046 
     5047#profile-page .delete { 
     5048        text-decoration: none; 
     5049} 
     5050 
    50425051#createuser .form-field input { 
    50435052        width: 25em; 
    50445053} 
  • wp-admin/css/colors-classic.css

     
    640640table.widefat span.spam a, 
    641641#dashboard_recent_comments .delete a, 
    642642#dashboard_recent_comments .trash a, 
    643 #dashboard_recent_comments .spam a { 
     643#dashboard_recent_comments .spam a, 
     644#profile-page .delete { 
    644645        color: #bc0b0b; 
    645646} 
    646647 
     
    822823table.widefat .spam a:hover, 
    823824#dashboard_recent_comments .delete a:hover, 
    824825#dashboard_recent_comments .trash a:hover 
    825 #dashboard_recent_comments .spam a:hover { 
     826#dashboard_recent_comments .spam a:hover, 
     827#profile-page .delete:hover { 
    826828        color: #f00; 
    827829} 
    828830