Smarty Image Requests
Courtesy: http://www.kevinpapst.de/blog/gravatar-smarty-tag.html
<?php
/*
* -------------------------------------------------------------
* File: function.gravatar.php
* Type: function
* Name: gravatar
* Description: This TAG creates a valid URL to a Gravatar.
*
* See https://en.gravatar.com/ for further information.
* -------------------------------------------------------------
* @copyright Copyright (C) 2008 Kevin Papst
* @see http://www.kevinpapst.de/
* @license GNU Public License (GPL)
*
* This function was originally writen as part of the Comments Extension
* for the BIGACE CMS:
* http://www.bigace.de/
* http://wiki.bigace.de/bigace:extensions:addon:comments
* -------------------------------------------------------------
* Parameter:
* - email = the email to fetch the gravatar for (required)
* - default = full url to the default image in case of none existing OR
* invalid rating (required, only if "email" is not set)
* - width = the images width
* - rating = the highest possible rating displayed image [ G | PG | R | X ]
* - assign = if you want to assign the URL to a template variable instead
* of returning it directly
* -------------------------------------------------------------
* Example usage:
*
* <img src="{gravatar email="example@example.com"}">
* <img src="{gravatar email="example@example.com" rating="PG" size="40" default="https://www.example.com/gravatar.gif"}">
*
* {gravatar email="example@example.com" size="40" assign="gravatarUrl"}
* <img src="{$gravatarUrl}">
*/
function smarty_function_gravatar($params, &$smarty) {
// check for email adress
if(!isset($params['email']) && !isset($params['default'])) {
$smarty->trigger_error("gravatar: neither 'email' nor 'default' attribute passed");
return;
}
$email = (isset($params['email']) ? trim(strtolower($params['email'])) : '');
$rating = (isset($params['rating']) ? $params['rating'] : 'R');
$url = "https://www.gravatar.com/avatar/".md5($email) . "?r=".$rating;
if(isset($params['default']))
$url .= "&d=".urlencode($params['default']);
if(isset($params['size']))
$url .= "&s=".$params['size'];
if(isset($params['assign'])) {
$smarty->assign($params['assign'], $url);
return;
}
return $url;
}
?>