diff -r 58852672ff12 -r 68f8a9cc0a18 includes/functions.php --- a/includes/functions.php Wed Jul 09 21:04:51 2008 -0400 +++ b/includes/functions.php Wed Jul 09 22:40:41 2008 -0400 @@ -4152,25 +4152,38 @@ * Generates a URL for the avatar for the given user ID and avatar type. * @param int User ID * @param string Image type - must be one of jpg, png, or gif. + * @param string User's e-mail address, makes Special:Avatar redirect if not specified * @return string */ -function make_avatar_url($user_id, $avi_type) +function make_avatar_url($user_id, $avi_type, $user_email = false) { static $img_types = array( 'png' => IMAGE_TYPE_PNG, 'gif' => IMAGE_TYPE_GIF, - 'jpg' => IMAGE_TYPE_JPG + 'jpg' => IMAGE_TYPE_JPG, + 'grv' => IMAGE_TYPE_GRV ); if ( !is_int($user_id) ) return false; if ( !isset($img_types[$avi_type]) ) return false; - $avi_relative_path = '/' . getConfig('avatar_directory') . '/' . $user_id . '.' . $avi_type; - if ( !file_exists(ENANO_ROOT . $avi_relative_path) ) + + if ( $avi_type == 'grv' ) { - return ''; + if ( $user_email ) + { + return make_gravatar_url($user_email); + } + } + else + { + $avi_relative_path = '/' . getConfig('avatar_directory') . '/' . $user_id . '.' . $avi_type; + if ( !file_exists(ENANO_ROOT . $avi_relative_path) ) + { + return ''; + } } $img_type = $img_types[$avi_type]; @@ -4184,6 +4197,39 @@ } /** + * Generates a URL to the Gravatar for a user based on his/her e-mail address. + * @param string E-mail address + * @param int Size - defaults to site-wide limits + * @return string URL + */ + +function make_gravatar_url($email, $size = false) +{ + $email = md5($email); + + // gravatar parameters + if ( $size ) + { + $max_size = intval($size); + } + else + { + $max_x = intval(getConfig('avatar_max_width', '150')); + $max_y = intval(getConfig('avatar_max_height', '150')); + // ?s= + $max_size = ( $max_x > $max_y ) ? $max_y : $max_x; + } + + // ?r= + $rating = getConfig('gravatar_rating', 'g'); + + // final URL + $url = "http://www.gravatar.com/avatar/$email?r=$rating&s=$max_size"; + + return $url; +} + +/** * Determines an image's filetype based on its signature. * @param string Path to image file * @return string One of gif, png, or jpg, or false if none of these.