From 7384e5aa5090c39d2226ae61890e92ebe83ee754 Mon Sep 17 00:00:00 2001 From: Alexander Vasilyev Date: Wed, 3 Jun 2020 13:14:41 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=B0=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20?= =?UTF-8?q?=D1=81=20=D0=B0=D0=B2=D0=B0=D1=82=D0=B0=D1=80=D0=BA=D0=BE=D0=B9?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5?= =?UTF-8?q?=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [feature] Добавлена возможность получения URL аватарки произвольных размеров. [feature] Поддержка версий аватарок для улучшенного кэширования. [bugfix] Исправлено определение заглушечных аватарок. --- src/Provider/SeptemberFirstUser.php | 87 +++++++++++++++++++++++++---- 1 file changed, 75 insertions(+), 12 deletions(-) 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; } /**