Make WordPress Core

Ticket #21195: 21195.7.diff

File 21195.7.diff, 15.9 KB (added by pathawks, 10 years ago)

Refresh

  • src/wp-includes/link-template.php

    function the_shortlink( $text = '', $title = '', $before = '', $after = '' ) { 
    31403140                echo $before, $link, $after;
    31413141        }
    31423142}
     3143
     3144/**
     3145 * Retrieve the avatar URL for a user, email address, MD5 hash, comment, or post.
     3146 *
     3147 * @uses apply_filters() 'pre_get_avatar_url' to bypass
     3148 * @uses apply_filters() 'get_avatar_url' filters the result
     3149 * @uses apply_filters() 'get_avatar_comment_types' filters the comment types for which we can calculate an avatar
     3150 *
     3151 * @since 3.8.0
     3152 * @param mixed $id_or_email The Gravatar to retrieve {
     3153 *     @type int    {user_id}                   : Use the email address of the corresponding user
     3154 *     @type string "{hash}@md5.gravatar.com"   : Use the hash directly
     3155 *     @type string "{email}"
     3156 *     @type object {User row or WP_User object}: Use the user's email
     3157 *     @type object {Post row or WP_Post object}: Use the post_author's email
     3158 *     @type object {Comment row}               : Use the comment's user_id or comment_author_email
     3159 * }
     3160 * @param array $args Extra options to apply to the avatar {
     3161 *     @type int    $size           Size of the avatar image
     3162 *     @type string $default        URL for the default image or a default type {
     3163 *             404                    : Return a 404 instead of a default image
     3164 *             retro                  : 8bit
     3165 *             monsterid              : Monster
     3166 *             wavatar                : cartoon face
     3167 *             identicon              : the "quilt"
     3168 *             mystery, mm, mysteryman: The Oyster Man
     3169 *             blank                  : A transparent GIF
     3170 *             gravatar_default       : Gravatar Logo
     3171 *     }
     3172 *     @type bool   $force_default  Always show the default image, never the Gravatar
     3173 *     @type string $rating         display avatars up to the given rating: G < PG < R < X.
     3174 *     @type string $scheme         @see set_url_scheme()
     3175 *     @type array  $processed_args Pass as reference.  When the function returns, the value will be the processed/sanitized $args plus a "found_avatar" guess.
     3176 * }
     3177 *
     3178 * @return bool|string URL false on failure
     3179 */
     3180function get_avatar_url( $id_or_email, $args = null ) {
     3181        $original_args = $args;
     3182
     3183        $args = wp_parse_args( $args, array(
     3184                'size'           => 96,
     3185                'default'        => get_option( 'avatar_default', 'mystery' ),
     3186                'force_default'  => false,
     3187                'rating'         => get_option( 'avatar_rating' ),
     3188                'scheme'         => null,
     3189                'processed_args' => null, // if used, should be a reference
     3190        ) );
     3191
     3192        if ( is_numeric( $args['size'] ) ) {
     3193                $args['size'] = absint( $args['size'] );
     3194                if ( !$args['size'] ) {
     3195                        $args['size'] = 96;
     3196                }
     3197        } else {
     3198                $args['size'] = 96;
     3199        }
     3200
     3201        if ( empty( $args['default'] ) ) {
     3202                $args['default'] = 'mystery';
     3203        }
     3204
     3205        switch ( $args['default'] ) {
     3206                case 'mm' :
     3207                case 'mystery' :
     3208                case 'mysteryman' :
     3209                        $args['default'] = 'mm';
     3210                        break;
     3211                case 'gravatar_default' :
     3212                        $args['default'] = false;
     3213                        break;
     3214        }
     3215
     3216        $args['force_default'] = (bool) $args['force_default'];
     3217
     3218        $args['rating'] = strtolower( $args['rating'] );
     3219
     3220        $args['found_avatar'] = false;
     3221
     3222        $url = apply_filters_ref_array( 'pre_get_avatar_url', array( null, $id_or_email, &$args, $original_args ) );
     3223        if ( !is_null( $url ) ) {
     3224                $return = apply_filters_ref_array( 'get_avatar_url', array( $url, $id_or_email, &$args, $original_args ) );
     3225                $args['processed_args'] = $args;
     3226                unset( $args['processed_args']['processed_args'] );
     3227                return $return;
     3228        }
     3229
     3230        $email_hash = '';
     3231        $user = $email = false;
     3232
     3233        if ( is_numeric( $id_or_email ) ) {
     3234                $user = get_user_by( 'id', absint( $id_or_email ) );
     3235        } elseif ( is_string( $id_or_email ) ) {
     3236                if ( strpos( $id_or_email, '@md5.gravatar.com' ) ) {
     3237                        // md5 hash
     3238                        list( $email_hash ) = explode( '@', $id_or_email );
     3239                } else {
     3240                        // email address
     3241                        $email = $id_or_email;
     3242                }
     3243        } elseif ( is_object( $id_or_email ) ) {
     3244                if ( isset( $id_or_email->comment_ID ) ) {
     3245                        // Comment Object
     3246
     3247                        // No avatar for pingbacks or trackbacks
     3248                        $allowed_comment_types = apply_filters( 'get_avatar_comment_types', array( 'comment' ) );
     3249                        if ( ! empty( $id_or_email->comment_type ) && ! in_array( $id_or_email->comment_type, (array) $allowed_comment_types ) ) {
     3250                                $args['processed_args'] = $args;
     3251                                unset( $args['processed_args']['processed_args'] );
     3252                                return false;
     3253                        }
     3254
     3255                        if ( ! empty( $id_or_email->user_id ) ) {
     3256                                $user = get_user_by( 'id', (int) $id_or_email->user_id );
     3257                        }
     3258                        if ( ( !$user || is_wp_error( $user ) ) && ! empty( $id_or_email->comment_author_email ) ) {
     3259                                $email = $id_or_email->comment_author_email;
     3260                        }
     3261                } elseif ( ! empty( $id_or_email->user_login ) ) {
     3262                        // User Object
     3263                        $user = $id_or_email;
     3264                } elseif ( ! empty( $id_or_email->post_author ) ) {
     3265                        // Post Object
     3266                        $user = get_user_by( 'id', (int) $id_or_email->post_author );
     3267                }
     3268        }
     3269
     3270        if ( !$email_hash ) {
     3271                if ( $user ) {
     3272                        $email = $user->user_email;
     3273                }
     3274
     3275                if ( $email ) {
     3276                        $email_hash = md5( strtolower( trim( $email ) ) );
     3277                }
     3278        }
     3279
     3280        if ( $email_hash ) {
     3281                $args['found_avatar'] = true;
     3282                $gravatar_server = hexdec( $email_hash[0] ) % 3;
     3283        } else {
     3284                $gravatar_server = rand( 0, 2 );
     3285        }
     3286
     3287        $url_args = array(
     3288                's' => $args['size'],
     3289                'd' => $args['default'],
     3290                'f' => $args['force_default'] ? 'y' : false,
     3291                'r' => $args['rating'],
     3292        );
     3293
     3294        $url = sprintf( 'http://%d.gravatar.com/avatar/%s', $gravatar_server, $email_hash );
     3295
     3296        $url = add_query_arg(
     3297                rawurlencode_deep( array_filter( $url_args ) ),
     3298                set_url_scheme( $url, $args['scheme'] )
     3299        );
     3300
     3301        $return = apply_filters_ref_array( 'get_avatar_url', array( $url, $id_or_email, &$args, $original_args ) );
     3302        $args['processed_args'] = $args;
     3303        unset( $args['processed_args']['processed_args'] );
     3304        return $return;
     3305}
  • src/wp-includes/pluggable.php

    function wp_set_password( $password, $user_id ) { 
    20702070
    20712071if ( !function_exists( 'get_avatar' ) ) :
    20722072/**
    2073  * Retrieve the avatar for a user who provided a user ID or email address.
    2074  *
    2075  * @since 2.5.0
    2076  *
    2077  * @param int|string|object $id_or_email A user ID,  email address, or comment object
    2078  * @param int $size Size of the avatar image
    2079  * @param string $default URL to a default image to use if no avatar is available
    2080  * @param string $alt Alternative text to use in image tag. Defaults to blank
    2081  * @return string <img> tag for the user's avatar
    2082 */
    2083 function get_avatar( $id_or_email, $size = '96', $default = '', $alt = false ) {
    2084         if ( ! get_option('show_avatars') )
    2085                 return false;
    2086 
    2087         if ( false === $alt)
    2088                 $safe_alt = '';
    2089         else
    2090                 $safe_alt = esc_attr( $alt );
    2091 
    2092         if ( !is_numeric($size) )
    2093                 $size = '96';
    2094 
    2095         $email = '';
    2096         if ( is_numeric($id_or_email) ) {
    2097                 $id = (int) $id_or_email;
    2098                 $user = get_userdata($id);
    2099                 if ( $user )
    2100                         $email = $user->user_email;
    2101         } elseif ( is_object($id_or_email) ) {
    2102                 // No avatar for pingbacks or trackbacks
    2103 
    2104                 /**
    2105                  * Filter the list of allowed comment types for retrieving avatars.
    2106                  *
    2107                  * @since 3.0.0
    2108                  *
    2109                  * @param array $types An array of content types. Default only contains 'comment'.
    2110                  */
    2111                 $allowed_comment_types = apply_filters( 'get_avatar_comment_types', array( 'comment' ) );
    2112                 if ( ! empty( $id_or_email->comment_type ) && ! in_array( $id_or_email->comment_type, (array) $allowed_comment_types ) )
    2113                         return false;
    2114 
    2115                 if ( ! empty( $id_or_email->user_id ) ) {
    2116                         $id = (int) $id_or_email->user_id;
    2117                         $user = get_userdata($id);
    2118                         if ( $user )
    2119                                 $email = $user->user_email;
    2120                 }
    2121 
    2122                 if ( ! $email && ! empty( $id_or_email->comment_author_email ) )
    2123                         $email = $id_or_email->comment_author_email;
    2124         } else {
    2125                 $email = $id_or_email;
    2126         }
    2127 
    2128         if ( empty($default) ) {
    2129                 $avatar_default = get_option('avatar_default');
    2130                 if ( empty($avatar_default) )
    2131                         $default = 'mystery';
    2132                 else
    2133                         $default = $avatar_default;
    2134         }
    2135 
    2136         if ( !empty($email) )
    2137                 $email_hash = md5( strtolower( trim( $email ) ) );
    2138 
    2139         if ( is_ssl() ) {
    2140                 $host = 'https://secure.gravatar.com';
    2141         } else {
    2142                 if ( !empty($email) )
    2143                         $host = sprintf( "http://%d.gravatar.com", ( hexdec( $email_hash[0] ) % 2 ) );
    2144                 else
    2145                         $host = 'http://0.gravatar.com';
    2146         }
    2147 
    2148         if ( 'mystery' == $default )
    2149                 $default = "$host/avatar/ad516503a11cd5ca435acc9bb6523536?s={$size}"; // ad516503a11cd5ca435acc9bb6523536 == md5('unknown@gravatar.com')
    2150         elseif ( 'blank' == $default )
    2151                 $default = $email ? 'blank' : includes_url( 'images/blank.gif' );
    2152         elseif ( !empty($email) && 'gravatar_default' == $default )
    2153                 $default = '';
    2154         elseif ( 'gravatar_default' == $default )
    2155                 $default = "$host/avatar/?s={$size}";
    2156         elseif ( empty($email) )
    2157                 $default = "$host/avatar/?d=$default&amp;s={$size}";
    2158         elseif ( strpos($default, 'http://') === 0 )
    2159                 $default = add_query_arg( 's', $size, $default );
    2160 
    2161         if ( !empty($email) ) {
    2162                 $out = "$host/avatar/";
    2163                 $out .= $email_hash;
    2164                 $out .= '?s='.$size;
    2165                 $out .= '&amp;d=' . urlencode( $default );
    2166 
    2167                 $rating = get_option('avatar_rating');
    2168                 if ( !empty( $rating ) )
    2169                         $out .= "&amp;r={$rating}";
    2170 
    2171                 $out = str_replace( '&#038;', '&amp;', esc_url( $out ) );
    2172                 $avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
    2173         } else {
    2174                 $avatar = "<img alt='{$safe_alt}' src='{$default}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
    2175         }
    2176 
    2177         /**
    2178          * Filter the avatar to retrieve.
    2179          *
    2180          * @since 2.5.0
    2181          *
    2182          * @param string            $avatar      Image tag for the user's avatar.
    2183          * @param int|object|string $id_or_email A user ID, email address, or comment object.
    2184          * @param int               $size        Square avatar width and height in pixels to retrieve.
    2185          * @param string            $alt         Alternative text to use in the avatar image tag.
    2186          *                                       Default empty.
    2187          */
    2188         return apply_filters( 'get_avatar', $avatar, $id_or_email, $size, $default, $alt );
     2073 * Retrieve the avatar img tag for a user, email address, MD5 hash, comment, or post.
     2074 *
     2075 * @uses apply_filters() 'pre_get_avatar' to bypass
     2076 * @uses apply_filters() 'get_avatar' filters the result
     2077 *
     2078 * @since 2.5
     2079 * @param mixed  $id_or_email The Gravatar to retrieve {
     2080 *     @type int    {user_id}                   : Use the email address of the corresponding user
     2081 *     @type string "{hash}@md5.gravatar.com"   : Use the hash directly
     2082 *     @type string "{email}"
     2083 *     @type object {User row or WP_User object}: Use the user's email
     2084 *     @type object {Post row or WP_Post object}: Use the post_author's email
     2085 *     @type object {Comment row}               : Use the comment's user_id or comment_author_email
     2086 * }
     2087 * @param int    $size        Size of the avatar image
     2088 * @param string $default     URL for the default image or a default type {
     2089 *     404                    : Return a 404 instead of a default image
     2090 *     retro                  : 8bit
     2091 *     monsterid              : Monster
     2092 *     wavatar                : cartoon face
     2093 *     identicon              : the "quilt"
     2094 *     mystery, mm, mysteryman: The Oyster Man
     2095 *     blank                  : A transparent GIF
     2096 *     gravatar_default       : Gravatar Logo
     2097 * }
     2098 * @param string $alt         Alternative text to use in image tag. Defaults to blank
     2099 * @param array  $args        Extra options to apply to the avatar {
     2100 *     @type bool   $force_default Always show the default image, never the Gravatar
     2101 *     @type string $rating        display avatars up to the given rating: G < PG < R < X.
     2102 *     @type string $scheme        @see set_url_scheme()
     2103 *     @type mixed  $class         array or string of additional classes to add to the img element
     2104 *     @type bool   $force_display Always show the avatar - ignore the show_avatars option
     2105 * }
     2106 *
     2107 * @return bool|string <img> tag for the user's avatar.  False on failure.
     2108 */
     2109function get_avatar( $id_or_email, $size = 96, $default = '', $alt = '', $args = null ) {
     2110        $defaults = array(
     2111                // get_avatar_url() args
     2112                'size'          => 96,
     2113                'default'       => get_option( 'avatar_default', 'mystery' ),
     2114                'force_default' => false,
     2115                'rating'        => get_option( 'avatar_rating' ),
     2116                'scheme'        => null,
     2117
     2118                'alt'           => '',
     2119                'class'         => null,
     2120                'force_display' => false,
     2121        );
     2122
     2123        if ( empty( $args ) )
     2124                $args = array();
     2125
     2126        $args['size']    = $size;
     2127        $args['default'] = $default;
     2128        $args['alt']     = $alt;
     2129
     2130        $original_args = $args;
     2131
     2132        $args = wp_parse_args( $args, $defaults );
     2133
     2134        $avatar = apply_filters_ref_array( 'pre_get_avatar', array( null, $id_or_email, &$args, $original_args ) );
     2135        if ( !is_null( $avatar ) ) {
     2136                return apply_filters( 'get_avatar', $avatar, $id_or_email, $args['size'], $args['default'], $args['alt'], $args, $original_args );
     2137        }
     2138
     2139        if ( !$args['force_display'] && !get_option( 'show_avatars' ) ) {
     2140                return false;
     2141        }
     2142
     2143        $processed_args = null;
     2144        $args['processed_args'] =& $processed_args;
     2145        $url = get_avatar_url( $id_or_email, $args );
     2146        if ( !$url || is_wp_error( $url ) ) {
     2147                return false;
     2148        }
     2149
     2150        $class = array( 'avatar', 'avatar-' . (int) $processed_args['size'], 'photo' );
     2151
     2152        if ( !$processed_args['found_avatar'] || $processed_args['force_default'] ) {
     2153                $class[] = ' avatar-default';
     2154        }
     2155
     2156        if ( $args['class'] ) {
     2157                if ( is_array( $args['class'] ) ) {
     2158                        $class = array_merge( $class, $args['class'] );
     2159                } else {
     2160                        $class[] = $args['class'];
     2161                }
     2162        }
     2163
     2164        $avatar = sprintf(
     2165                '<img alt="%s" src="%s" class="%s" height="%d" width="%d" />',
     2166                esc_attr( $processed_args['alt'] ),
     2167                esc_url( $url ),
     2168                esc_attr( join( ' ', $class ) ),
     2169                (int) $processed_args['size'],
     2170                (int) $processed_args['size']
     2171        );
     2172
     2173        return apply_filters( 'get_avatar', $avatar, $id_or_email, $args['size'], $args['default'], $args['alt'], $processed_args, $original_args );
    21892174}
    21902175endif;