<?php /** * Generates URLs for Gravatar.com service using e-mails. Also caches the results. * * @author Stanis Shramko <mailto:im@dinexi.ru> * @version 1.0 * @license LGPL * @link http://www.gravatar.com * @link http://webfari.ru * @copyright Webfari */ class GravatarUrlGenerator {
/** * Keeps the URL of Gravatar script */ const GRAVATAR_URL = 'http://www.gravatar.com/avatar.php'; /** * Contains the possible ratings * * @var array */ private static $GRAVATAR_RATINGS = array('G', 'PG', 'R', 'X'); /** * Keeps the URLs for Gravatars in the simple hash structure; acts as a cache * * @var array */ private static $gravatarsCache = array(); /** * Returns the Gravatar URL * * @param $email string email * @param $rating rating from GRAVATAR_RATINGS * @param $size integer means the size * @param $default string default URL if there is no pic * @param $useCache boolean to cache the results or not * @return string the URL */ public function generateUrl($email, $rating = "G", $size = 80, $default = 'http://en.gravatar.com/images/gravatars/no_gravatar.gif', $useCache = true) { $email = md5(strtolower($email)); $rating = in_array($rating, self::$GRAVATAR_RATINGS) ? $rating : self::$GRAVATAR_RATINGS[0]; $size = (int)$size; if ($useCache) { if (isset(self::$gravatarsCache[$email][$rating . $size])) { return self::$gravatarsCache[$email][$rating . $size]; } } $args = array( 'gravatar_id' => $email, 'default' => $default, 'size' => $size, 'rating' => $rating ); $url = self::GRAVATAR_URL . '?' . http_build_query($args); if ($useCache) { self::$gravatarsCache[$email][$rating . $size] = $url; } return $url; } }
?>
|