<?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;
}
}
?>
|