WordPress.org

Make WordPress Core

Ticket #16020: 16020.5.diff

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

     
    13091309        }
    13101310        $display_name = apply_filters( 'pre_user_display_name', $display_name );
    13111311
     1312        if ( empty( $avatar_type ) || $avatar_type != 'custom' )
     1313                $avatar_type = 'gravatar';
     1314
     1315        if ( empty( $custom_avatar ) )
     1316                $custom_avatar = '';
     1317
    13121318        if ( empty($description) )
    13131319                $description = '';
    13141320        $description = apply_filters('pre_user_description', $description);
     
    14751481 * @return array
    14761482 */
    14771483function _get_additional_user_keys( $user ) {
    1478         $keys = array( 'first_name', 'last_name', 'nickname', 'description', 'rich_editing', 'comment_shortcuts', 'admin_color', 'use_ssl', 'show_admin_bar_front' );
     1484        $keys = array( 'first_name', 'last_name', 'nickname', 'description', 'rich_editing', 'comment_shortcuts', 'admin_color', 'use_ssl', 'show_admin_bar_front', 'avatar_type', 'custom_avatar' );
    14791485        return array_merge( $keys, array_keys( _wp_get_user_contactmethods( $user ) ) );
    14801486}
    14811487
  • wp-includes/media.php

     
    681681}
    682682
    683683/**
     684 * Resize a custom avatar
     685 *
     686 * @since 3.5.0
     687 * @param string URL to an avatar image to resize
     688 * @param int Size of the new avatar image
     689 * @return array Array with the URL of the new avatar image
     690 */
     691function custom_avatar_resize( $url, $size ) {
     692        $upload_dir = wp_upload_dir();
     693        $file = str_replace( $upload_dir['baseurl'], $upload_dir['basedir'], $url );
     694        $info = pathinfo($file);
     695        $dir = $info['dirname'];
     696        $ext = $info['extension'];
     697        $name = wp_basename($file, ".$ext");
     698        $suffix = "{$size}x{$size}";
     699        $destfilename = "{$dir}/{$name}-{$suffix}.{$ext}";
     700        $custom_avatar = array();
     701
     702        if ( file_exists( $destfilename ) ) {
     703                $custom_avatar['url'] = str_replace( $upload_dir['basedir'], $upload_dir['baseurl'], $destfilename );
     704                $custom_avatar['skip'] = true;
     705        } else {
     706                $file = image_resize( $file, $size, $size, true );
     707
     708                if ( ! is_wp_error( $file ) ) {
     709                        $custom_avatar['url'] = str_replace( $upload_dir['basedir'], $upload_dir['baseurl'], $file );
     710                        $custom_avatar['skip'] = false;
     711                }
     712        }
     713
     714        return $custom_avatar;
     715}
     716
     717/**
    684718 * Adds a 'wp-post-image' class to post thumbnails
    685719 * Uses the begin_fetch_post_thumbnail_html and end_fetch_post_thumbnail_html action hooks to
    686720 * dynamically add/remove itself so as to only filter post thumbnails
  • wp-includes/formatting.php

     
    27872787                                $value = absint( $value );
    27882788                        break;
    27892789
     2790                case 'avatar_size':
     2791                        $value = absint( $value );
     2792                        if ( $value < 1 )
     2793                                $value = 1;
     2794                        elseif ( $value > 512 )
     2795                                $value = 512;
     2796                        break;
     2797
    27902798                case 'posts_per_page':
    27912799                case 'posts_per_rss':
    27922800                        $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 ) )
     1606                if ( $avatar_type != 'custom' )
     1607                        $avatar_type = 'gravatar';
     1608
    15961609        $email = '';
    15971610        if ( is_numeric($id_or_email) ) {
    15981611                $id = (int) $id_or_email;
     
    16121625                                $email = $user->user_email;
    16131626                } elseif ( !empty($id_or_email->comment_author_email) ) {
    16141627                        $email = $id_or_email->comment_author_email;
     1628
     1629                        if ( $id = email_exists( $email ) )
     1630                                $user = get_userdata( $id );
    16151631                }
    16161632        } else {
    16171633                $email = $id_or_email;
     1634
     1635                if ( $id = email_exists( $email ) )
     1636                        $user = get_userdata( $id );
    16181637        }
    16191638
     1639        if ( isset( $user ) ) {
     1640                if ( empty( $avatar_type ) )
     1641                        $avatar_type = $user->avatar_type;
     1642        } else {
     1643                $avatar_type = 'gravatar';
     1644        }
     1645
    16201646        if ( empty($default) ) {
    16211647                $avatar_default = get_option('avatar_default');
    16221648                if ( empty($avatar_default) )
     
    16501676        elseif ( strpos($default, 'http://') === 0 )
    16511677                $default = add_query_arg( 's', $size, $default );
    16521678
    1653         if ( !empty($email) ) {
    1654                 $out = "$host/avatar/";
    1655                 $out .= $email_hash;
    1656                 $out .= '?s='.$size;
    1657                 $out .= '&amp;d=' . urlencode( $default );
     1679        $img = "<img alt='{$safe_alt}' src='{$default}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
     1680 
     1681        if ( $avatar_type == 'custom' ) {
     1682                $avatar_rating = get_option( 'avatar_rating' );
     1683                $custom_avatar_rating = get_post_meta( $user->custom_avatar, '_wp_attachment_custom_avatar_rating', true );
    16581684
     1685                $ratings['G']  = 1;
     1686                $ratings['PG'] = 2;
     1687                $ratings['R']  = 3;
     1688                $ratings['X']  = 4;
     1689
     1690                if ( $ratings[ $custom_avatar_rating ] <= $ratings[ $avatar_rating ] ) {
     1691                        $custom_avatar = get_post_meta( $user->custom_avatar, '_wp_attachment_custom_avatar', true );
     1692
     1693                        if ( empty( $custom_avatar[ $size ] ) ) {
     1694                                $url = wp_get_attachment_image_src( $user->custom_avatar, 'full' );
     1695
     1696                                // Resize the avatar image
     1697                                $custom_avatar[ $size ] = custom_avatar_resize( $url[0], $size );
     1698
     1699                                // Update the user meta-data
     1700                                update_post_meta( $user->custom_avatar, '_wp_attachment_custom_avatar', $custom_avatar );
     1701                        }
     1702
     1703                        $src = $custom_avatar[ $size ]['url'];
     1704                        $img = "<img alt='{$safe_alt}' src='{$src}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
     1705                }
     1706        } else if ( !empty($email) ) {
     1707                $src = "$host/avatar/";
     1708                $src .= $email_hash;
     1709                $src .= '?s='.$size;
     1710                $src .= '&amp;d=' . urlencode( $default );
     1711
    16591712                $rating = get_option('avatar_rating');
    16601713                if ( !empty( $rating ) )
    1661                         $out .= "&amp;r={$rating}";
     1714                        $src .= "&amp;r={$rating}";
    16621715
    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}' />";
     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

     
    582582<?php
    583583}
    584584
     585/**
     586 * Cleanup a custom avatar
     587 *
     588 * @since 3.5.0
     589 * @param int $attachment_id An attachment ID
     590 */
     591function custom_avatar_cleanup( $attachment_id ) {
     592        $upload_dir = wp_upload_dir();
     593        $custom_avatar = get_post_meta( $attachment_id, '_wp_attachment_custom_avatar', true );
     594
     595        if ( is_array( $custom_avatar ) ) {
     596                foreach ( $custom_avatar as $file ) {
     597                        if ( ! $file['skip'] ) {
     598                                $file = str_replace( $upload_dir['baseurl'], $upload_dir['basedir'], $file['url'] );
     599                                @unlink( $file );
     600                        }
     601                }
     602        }
     603
     604        delete_post_meta( $attachment_id, '_wp_attachment_custom_avatar' );
     605        delete_post_meta( $attachment_id, '_wp_attachment_custom_avatar_rating' );
     606        delete_post_meta( $attachment_id, '_wp_attachment_is_custom_avatar' );
     607}
     608
     609/**
     610 * Delete a custom avatar
     611 *
     612 * @since 3.5.0
     613 * @param int $attachment_id An attachment ID
     614 */
     615function delete_custom_avatar( $attachment_id ) {
     616        $is_custom_avatar = get_post_meta( $attachment_id, '_wp_attachment_is_custom_avatar', true );
     617
     618        if ( ! $is_custom_avatar )
     619                return;
     620
     621        custom_avatar_cleanup( $attachment_id );
     622
     623        $args = array(
     624                'meta_key' => 'custom_avatar',
     625                'meta_value' => $attachment_id
     626        );
     627
     628        $users = get_users( $args );
     629
     630        foreach ( $users as $user ) {
     631                // Update the user meta-data
     632                update_user_meta( $user->ID, 'avatar_type', 'gravatar' );
     633                delete_user_meta( $user->ID, 'custom_avatar' );
     634        }
     635}
     636
     637add_action( 'delete_attachment', 'delete_custom_avatar' );
     638
    585639function _ipad_meta() {
    586640        if ( wp_is_mobile() ) {
    587641                ?>
  • wp-admin/includes/schema.php

     
    482482
    483483        // 3.5
    484484        'link_manager_enabled' => 0,
     485        'avatar_size' => 96
    485486        );
    486487
    487488        // 3.3
  • wp-admin/includes/template.php

     
    15181518        $media_states = array();
    15191519        $stylesheet = get_option('stylesheet');
    15201520
     1521        $meta_avatar = get_post_meta( $post->ID, '_wp_attachment_is_custom_avatar', true );
     1522        if ( ! empty( $meta_avatar ) )
     1523                $media_states[] = __( 'Avatar Image' );
     1524
    15211525        if ( current_theme_supports( 'custom-header') ) {
    15221526                $meta_header = get_post_meta($post->ID, '_wp_attachment_is_custom_header', true );
    15231527                if ( ! empty( $meta_header ) && $meta_header == $stylesheet )
     
    15361540                $state_count = count( $media_states );
    15371541                $i = 0;
    15381542                echo ' - ';
     1543                echo '<span class="post-state">';
    15391544                foreach ( $media_states as $state ) {
    15401545                        ++$i;
    15411546                        ( $i == $state_count ) ? $sep = '' : $sep = ', ';
    1542                         echo "<span class='post-state'>$state$sep</span>";
     1547                        echo $state . $sep;
    15431548                }
     1549                echo '</span>';
    15441550        }
    15451551}
    15461552
  • 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

     
    243243
    244244</fieldset></td>
    245245</tr>
     246<tr valign="top">
     247        <th scope="row"><?php _e( 'Avatar Size' ) ?></th>
     248        <td>
     249                <fieldset>
     250                        <legend class="screen-reader-text"><span><?php _e( 'Avatar Size' ); ?></span></legend>
     251                        <label>
     252                                <?php _e( 'Size of the avatar image' ); ?>
     253                                <input name="avatar_size" type="number" step="1" min="0" value="<?php form_option( 'avatar_size' ); ?>" class="small-text" />
     254                        </label>
     255                </fieldset>
     256        </td>
     257</tr>
    246258<?php do_settings_fields('discussion', 'avatars'); ?>
    247259</table>
    248260
  • 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', 'embed_autourls', 'embed_size_w', 'embed_size_h' ),
    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( 'default_post_edit_rows', '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

     
    833833table.widefat span.spam a,
    834834#dashboard_recent_comments .delete a,
    835835#dashboard_recent_comments .trash a,
    836 #dashboard_recent_comments .spam a {
     836#dashboard_recent_comments .spam a,
     837#profile-page .delete {
    837838        color: #bc0b0b;
    838839}
    839840
     
    10081009table.widefat .spam a:hover,
    10091010#dashboard_recent_comments .delete a:hover,
    10101011#dashboard_recent_comments .trash a:hover
    1011 #dashboard_recent_comments .spam a:hover {
     1012#dashboard_recent_comments .spam a:hover,
     1013#profile-page .delete:hover {
    10121014        color: #f00;
    10131015}
    10141016
  • wp-admin/css/wp-admin.css

     
    47884788        width: 15em;
    47894789}
    47904790
     4791#profile-page .avatar-picker img {
     4792        margin: 2px 0;
     4793        vertical-align: middle;
     4794}
     4795
     4796#profile-page .delete {
     4797        text-decoration: none;
     4798}
     4799
    47914800#createuser .form-field input {
    47924801        width: 25em;
    47934802}
  • wp-admin/css/colors-classic.css

     
    839839table.widefat span.spam a,
    840840#dashboard_recent_comments .delete a,
    841841#dashboard_recent_comments .trash a,
    842 #dashboard_recent_comments .spam a {
     842#dashboard_recent_comments .spam a,
     843#profile-page .delete {
    843844        color: #bc0b0b;
    844845}
    845846
     
    951952table.widefat .spam a:hover,
    952953#dashboard_recent_comments .delete a:hover,
    953954#dashboard_recent_comments .trash a:hover
    954 #dashboard_recent_comments .spam a:hover {
     955#dashboard_recent_comments .spam a:hover,
     956#profile-page .delete:hover {
    955957        color: #f00;
    956958}
    957959