获取gravatar图像

jerry thinkphp 2015年11月19日 收藏
wordpress的头像系统一直用的是全球通用头像gravatar。我想在自己的项目中用这个头像系统。翻了一遍wordpress之后简单的修改得到了自己想要的gravatar函数 get_avatar_src。这函数返回所要求的头像地址。部分功能还没有实现, 可以根据自己的需求再改一改....
  1. /**
  2.  * 返回用户的avatar头像地址
  3.  *
  4.  * @param unknown $id_or_email
  5.  *            用户ID或邮箱地址
  6.  * @param string $size
  7.  *            大小
  8.  * @param string $default
  9.  *            默认头像
  10.  * @param string $alt            
  11.  * @return string
  12.  */
  13. function get_avatar_src($id_or_email, $size = '96', $default = '') {
  14.     if (! is_numeric ( $size ))
  15.         $size = '96';
  16.     
  17.     $email = '';
  18.     if (is_numeric ( $id_or_email )) {
  19.         // id传入的时候处理
  20.     } else {
  21.         // 否则传给$email
  22.         $email = $id_or_email;
  23.     }
  24.     
  25.     // 默认头像
  26.     if (empty ( $default )) {
  27.         $avatar_default = ''; // get_option('avatar_default'); //获取默认设置
  28.         if (empty ( $avatar_default )) // 如果没有设置,则定义默认
  29.             $default = 'mystery';
  30.         else
  31.             $default = $avatar_default;
  32.     }
  33.     
  34.     if (! empty ( $email )) // 如果不为空, 生成hash代码
  35.         $email_hash = md5 ( strtolower ( trim ( $email ) ) );
  36.         
  37.     if (! empty ( $email )) { // 如果邮箱不为空,则使用邮箱地址生成链接
  38.         $host = sprintf ( "http://%d.gravatar.com", (hexdec ( $email_hash ) % 2) );
  39.     } else // 否则使用默认地址
  40.         $host = 'http://0.gravatar.com';
  41.     
  42.     $host = str_replace ( array (
  43.             "www.gravatar.com",
  44.             "0.gravatar.com",
  45.             "1.gravatar.com",
  46.             "2.gravatar.com" 
  47.     ), "gravatar.duoshuo.com", $host );
  48.     
  49.     
  50.     if ('mystery' == $default)
  51.         $default = "$host/avatar/ad516503a11cd5ca435acc9bb6523536?s={$size}"; // ad516503a11cd5ca435acc9bb6523536 == md5('unknown@gravatar.com')
  52.     elseif ('blank' == $default)
  53.         // 如果为空(blank), 则获取空白图像
  54.         $default = $email ? 'blank' : ''; // includes_url( 'images/blank.gif' );
  55.     elseif (! empty ( $email ) && 'gravatar_default' == $default)
  56.         // 如果邮箱已有, 清空默认头像
  57.         $default = '';
  58.     elseif ('gravatar_default' == $default)
  59.         $default = "$host/avatar/?s={$size}";
  60.     elseif (empty ( $email ))
  61.         $default = "$host/avatar/?d=$default&s={$size}";
  62.     
  63.     if (! empty ( $email )) {
  64.         
  65.         
  66.         $out = "$host/avatar/";
  67.         $out .= $email_hash;
  68.         $out .= '?s=' . $size;
  69.         $out .= '&d=' . urlencode ( $default );
  70.         
  71.         $out = str_replace ( '&', '&', strip_whitespace ( $out ) );
  72.     } else {
  73.         $out = $default;
  74.     }
  75.     
  76.     return $out;
  77. }