diff --git a/src/Provider/SeptemberFirstUser.php b/src/Provider/SeptemberFirstUser.php
index 710be09..5368a5e 100755
--- a/src/Provider/SeptemberFirstUser.php
+++ b/src/Provider/SeptemberFirstUser.php
@@ -9,6 +9,8 @@ use League\OAuth2\Client\Provider\ResourceOwnerInterface;
*/
class SeptemberFirstUser implements ResourceOwnerInterface
{
+ const AVATAR_BASE = 'https://avatar.1sept.ru';
+
/**
* @var array Массив с данными о пользователе
*/
@@ -142,29 +144,90 @@ class SeptemberFirstUser implements ResourceOwnerInterface
}
/**
- * URL картинки
+ * URL аватарки (150x150)
*
- * @param bool $rejectEmptyAvatar Если true, то пустые аватарки (заглушки) не отдаются
+ * @param bool $addVersion Использовать версию аватарки для улучшенного кэширования
* @return string|null
*/
- public function getAvatarUrl(bool $rejectEmptyAvatar = false): ?string
+ public function getAvatarUrl(bool $addVersion = true): ?string
{
- if (empty($this->data['avatar']) or ((!isset($this->data['has_avatar']) or !$this->data['has_avatar']) and $rejectEmptyAvatar)) {
- return null;
- }
-
- return $this->getField('avatar');
+ return $this->getField('avatar') . ($addVersion ? $this->getAvatarVersionQuery() : '');
}
/**
- * Адрес аватарки 50x50
+ * URL аватарки определённого размера (
)
*
- * @param bool $rejectEmptyAvatar Если true, то пустые аватарки (заглушки) не отдаются
+ * @param int $size Размер от 1 до 1990 ($size x $size — квадрат)
+ * @param int $ratioMultiplier Множитель разрешения картинки: 1 (по умолчанию), 2 или 3
+ * @param bool $addVersion Использовать версию аватарки для улучшенного кэширования
* @return string|null
*/
- public function getAvatar50Url(bool $rejectEmptyAvatar = false): ?string
+ public function getAvatarSizeUrl(int $size, int $ratioMultiplier = 1, bool $addVersion = true): ?string
{
- return $this->getAvatarUrl($rejectEmptyAvatar);
+ $ratio = ($ratioMultiplier > 1) ? '@' . $ratioMultiplier . 'x' : '';
+ $url = static::AVATAR_BASE .'/'. $this->getId() . ($size ? '.' : '') . $size . $ratio . '.jpeg';
+ return $url . ($addVersion ? $this->getAvatarVersionQuery() : '');
+ }
+
+ /**
+ * URL аватарки для экранов разных разрешений (
)
+ *
+ * @param int $size Размер от 1 до 1990 ($size x $size — квадрат)
+ * @param bool $addVersion Использовать версию аватарки для улучшенного кэширования
+ * @return string
+ */
+ public function getAvatarSetSizeUrl(int $size, bool $addVersion = true): string
+ {
+ return $this->getAvatarSizeUrl($size, 1, $addVersion) . ' 1x, '
+ . $this->getAvatarSizeUrl($size, 2, $addVersion) . ' 2x, '
+ . $this->getAvatarSizeUrl($size, 3, $addVersion) . ' 3x';
+ }
+
+ /**
+ * URL аватарки c максимальным размером
+ *
+ * @param bool $useVersion Использовать версию аватарки для улучшенного кэширования
+ * @return string|null
+ */
+ public function getAvatarMaxUrl(bool $addVersion = false): ?string
+ {
+ return $this->getField('avatar_max') . ($addVersion ? $this->getAvatarVersionQuery() : '');
+ }
+
+ /**
+ * Версия аватарки
+ * Изменение версии сигнализирует об обновлении аватарки.
+ *
+ * @return int | null
+ */
+
+ public function getAvatarVersion(): ?int
+ {
+ return $this->getField('avatar_version');
+ }
+
+ /**
+ * Является ли аватарка заглушкой
+ *
+ * @return boolean
+ */
+ public function isDefaultAvatar(): bool
+ {
+ return $this->getField('avatar_default');
+ }
+
+ /**
+ * Query cтрока c версией аватарки (улучшает кэширование)
+ *
+ * @return string
+ */
+ public function getAvatarVersionQuery(): string
+ {
+ $url = '';
+ if ($version = $this->getField('avatar_version')) {
+ $url .= '?v=' . $version;
+ }
+ return $url;
}
/**