Der Gravatar

Der „Gravatar“ Service von Automattic Inc. ermöglicht es Benutzern einen Avatar an die eigene E-Mailadresse zu binden und so einen globalen Avatar überall hin mit zu nehmen. Das spart Zeit, Bandbreite und damit Kosten. Der Gravatar wird von allen gängigen Blog-, Board-, Foren-, Gästebuch und Pinnwandsystemen unterstützt und ist völlig kostenfrei. Zur Anmeldung benötigt man…

Der „Gravatar“ Service von Automattic Inc. ermöglicht es Benutzern einen Avatar an die eigene E-Mailadresse zu binden und so einen globalen Avatar überall hin mit zu nehmen. Das spart Zeit, Bandbreite und damit Kosten. Der Gravatar wird von allen gängigen Blog-, Board-, Foren-, Gästebuch und Pinnwandsystemen unterstützt und ist völlig kostenfrei.

Zur Anmeldung benötigt man ausschließlich eine Mailadresse und einen Avatar (Das Bild welches man anhängen möchte).

Um den Gravatar auf der eigenen Seite einzubinden braucht man, im Gegensatz zu vielen anderen Diensten, weder einen Account noch einen Developer Key oder ähnliches.

Wer nur mal schnell einen fremden Gravatar nachschlagen will schaut hier: http://aruljohn.com/gravatar/

Die API

Um einen Gravatar abzurufen, benötigt man nur die E-Mailadresse des Eigentümers, weitere Parameter sind optional. Die Url des Gravatars wird wie folgt gebildet:

http://www.gravatar.com/avatar/[MD5-Hash der Mail]/?[Parameter]

Für die Mailadresse: „iHaveAn@email.com“ ergibt sich als URL:

// Ermitteln des Hash-Wertes:
$hash = MD5(StrToLower(Trim('iHaveAn@email.com')));
Echo $hash;

„http://www.gravatar.com/avatar/3b3be63a4c2a439b013787725dfce802“

Analog dazu wäre ebenso gültig:

  • http://gravatar.com/avatar/3b3be63a4c2a439b013787725dfce802/bild.jpg
  • http://gravatar.com/avatar/3b3be63a4c2a439b013787725dfce802/
  • http://gravatar.com/avatar/3b3be63a4c2a439b013787725dfce802.jpeg
  • http://gravatar.com/avatar/3b3be63a4c2a439b013787725dfce802.jpg

Parameter lassen sich als HTTP-GET Parameter anfügen und müssen ggf. enkodiert werden. Zulässige Parameter sind:

  • „size“ / „s“ > Größe des Gravatars in Pixel, zwischen 1 und 512
  • „rating“ / „r“ > Maximale Alterszulassung
  • „default“ / „d“ > Alternativ-URL / ID, falls der Gravatar nicht existiert

Die Bewertung des Gravatars (Rating) kennt folgende Werte:

  1. G: ohne Altersbeschränkung
  2. PG: nicht für Kinder unter 12 Jahren
  3. R: nicht für Kinder und Jugendliche unter 17 Jahren
  4. X: jugendgefährdend

Vordefinierte Gravatare

Über den Parameter „default“ kann man nicht nur eine alternative Url übermitteln sondern auch vordefinierte Strings. Zulässig sind:

  1. Zeile: „identicon
  2. Zeile: „monsterid
  3. Zeile: „wavatar

Je nach E-Mailadresse ändert sich der Gravatar. Anbei ein paar Gravatare mit vier verschiedenen E-Mail-Adressen:

Gravatar Gravatar Gravatar Gravatar
Gravatar Gravatar Gravatar Gravatar
Gravatar Gravatar Gravatar Gravatar

Zur Benutzung des Gravatars habe ich folgende Klasse geschrieben:

Class Gravatar {
  var $mail;
  var $size = 80;
  var $rating = 'g';
  var $default = '';

  Function setMail ($mail){
    $mail = Trim ($mail);
    If ($mail == '') return False;
    $this->mail = StrToLower ($mail);
    return True;
  }

  Function setSize ($size){
    $size = IntVal ($size);
    If ($size < 1 || $size > 512) return False;
    $this->size = $size;
    return True;
  }

  Function setRating ($rating){
    $arr_valid = Array ('g', 'pg', 'r', 'x');
    $rating = StrToLower (Trim ($rating));
    If (Array_Search ($rating, $arr_valid) === False) return False;
    $this->rating = $rating;
    return True;
  }

  Function setDefault ($default){
    // Valid: identicon, monsterid, wavatar or an url
    $default = Trim ($default);
    $this->default = UrlEncode($default);
  }

  Function getUrl (){
    If ($this->mail == '') return False;
    $url = 'http://www.gravatar.com/avatar/'.
           MD5($this->mail).'?'.
           'size='.$this->size.'&'.
           'rating='.$this->rating.'&'.
           'default='.$this->default;
    return $url;
  }
}

Dokumentation und Beispiel

Include 'class_gravatar.php';
$gravatar = New Gravatar;
$gravatar->setMail ('user@example.com');

// Optional:
$gravatar->setSize (100);
$gravatar->setDefault('monsterid');

// Get Url:
Echo $gravatar->getUrl();

Wer sich ein paar vordefnierte Gravatare anschauen möchte, kann dazu diesen Code verwenden: ;)

Der folgende Quellcode ist mit Vorsicht zu genießen. Er enthält PHP Short Open Tags. Diese sind nur in Testumgebungen zugelassen! (Und Teilweise nicht mal da.)

Include 'class_gravatar.php';
$gravatar = New Gravatar;
$gravatar->setSize (100);
< ? ForEach ( Array('identicon','monsterid','wavatar') AS $id) : $gravatar->setDefault($id); ?>
  < ? For ($x = 0; $x < 4; $x++) : $gravatar->setMail(Rand().'@example.com'); ?>
    getUrl() ?>" alt="Gravatar">
  < ? EndFor; ?>
  
< ? EndForEach; ?>