/** * Get user avatar, and creates a image link * * Optionally, if it is allowed, used [Gravatar]. * * Example: * ~~~ * $post = Post::dcache($id, 'page', $config); * * echo HTML::anchor($post->user->url, User::getAvatar($post->user)); * ~~~ * * @since 1.1.0 * * @param ORM $user User model * @param array $attrs Default attributes + type = crop|ratio [Optional] * @param mixed $protocol Protocol to pass to `URL::base()` [Optional] * @param boolean $index Include the index page [Optional] * * @return string * * @uses Config::get * @uses Gravatar::setSize * @uses Gravatar::setDefaultImage * @uses Gravatar::getImage * @uses URL::site * @uses Arr::merge */ public static function getAvatar(ORM $user, array $attrs = array(), $protocol = NULL, $index = FALSE) { // Default user pic $avatar = 'media/images/avatar-user-400.png'; // Set default attributes $attrs_default = array('size' => 32, 'type' => 'resize', 'itemprop' => 'image', 'default_image' => URL::site($avatar, TRUE)); // Merge attributes $attrs = Arr::merge($attrs_default, $attrs); $use_gravatar = Config::get('site.use_gravatars', FALSE); if ($use_gravatar) { $avatar = Gravatar::instance($user->mail)->setSize($attrs['size'])->setDefaultImage($attrs['default_image'])->getImage(array('alt' => $user->nick, 'itemprop' => $attrs['itemprop'], 'width' => $attrs['size'], 'height' => $attrs['size']), $protocol, $index); } else { if (!empty($user->picture)) { $avatar = $user->picture; } $avatar = HTML::resize($avatar, array('alt' => $user->nick, 'height' => $attrs['size'], 'width' => $attrs['size'], 'type' => $attrs['type'], 'itemprop' => $attrs['itemprop']), $protocol, $index); } return $avatar; }