DGRAvatarHelper: Получаем глобальный аватар пользователя
Часто владельцы блогов устанавливают на свои сайты плагины для работы с сервисом Gravatar. Если кто не знает, то суть сервиса вот в чём: Любой человек может зарегистрироваться в сервисе, вписать свой email и привязать к нему аватарку. После привязки эта аватарка становится доступной всему миру с сервера Gravatar по идентификатору, легко высчитываемому по адресу электронной почты пользователя.
Что это даёт? Даёт то, что теперь все поддерживающие этот сервис сайты, на которых вы оставляете комментарии (указывая свой email) будут автоматически отображать в комментариях вашу аватарку.
Представляю небольшой класс-хэлпер для генерирования ссылки на изображение в сервисе gravatar.com:
/** * DGRavatarHelper. * * @author ElisDN <mail@elisdn.ru> * @link https://elisdn.ru */ class DGRavatarHelper { const DEFAULT_GRAVATAR = ''; const DEFAULT_404 = '404'; const DEFAULT_MYSTERYMAN = 'mm'; const DEFAULT_ABSTRACT = 'identicon'; const DEFAULT_FACE = 'wavatar'; const DEFAULT_MONSTER = 'monsterid'; const DEFAULT_RETRO = 'retro'; const DEFAULT_BLANK = 'blank'; public static function get($email, $width=0, $default=self::DEFAULT_GRAVATAR) { $id = md5(strtolower(trim($email))); $default = '?d=' . urlencode($default); $width = $width ? '&s=' . $width : ''; return 'http://www.gravatar.com/avatar/' . $id . $default . $width; } }
Обязательно при вызове функции нужно указать только email. Размер изображения указывается одним параметром, так как оно всегда возвращается квадратное. Изображение по умолчанию можно либо выбрать из имеющихся вариантов (заданы константами в классе), либо указать своё.
Примеры получения адреса аватарки по адресу электронной почты:
$email = 'mail@site.com' // всё по умолчанию $src = GRAvatarHelper::get($email); // изображение 100x100 пикселей $src = GRAvatarHelper::get($email, 100); // получаем уникального монстрика, если сервис не найдёт такого пользователя $src = GRAvatarHelper::get($email, 100, GRAvatarHelper::DEFAULT_MONSTER); // указываем наше изображение по умолчанию $src = GRAvatarHelper::get($email, 100, 'http://site.com/defaultavatar.png'); echo CHtml::image($src);
В модели Yii:
// Модель: class User extends Model { const FILE_PATH = 'upload/avatars'; // ... public static function getAvatarUrl() { if ($this->avatar){ return Yii::app()->request->baseUrl . '/' . self::FILE_PATH . '/' . $this->avatar; } else { return GRAvatarHelper::get($this->email); }; } } // Представление: <img src="<?php echo $user->avatarUrl; ?>" alt="<?php echo $user->name; ?>" />
Спасибо то, что нужно! и на много удобнее екстеншина что есть на офф. сайте!
Да, интересно. Одна из лучших реализаций, но пока не самая универсальная.