Point avatars twig extension.
This commit is contained in:
parent
9b052cc97e
commit
cf08978c58
|
@ -65,3 +65,11 @@ services:
|
|||
class: Skobkin\Bundle\PointToolsBundle\EventListener\UserRenameSubscriber
|
||||
tags:
|
||||
- { name: doctrine.event_subscriber, connection: default }
|
||||
|
||||
# Twig extensions
|
||||
point_tools.twig.point_avatar_extension:
|
||||
class: Skobkin\Bundle\PointToolsBundle\Twig\PointAvatarExtension
|
||||
public: false
|
||||
arguments: ['@skobkin_point_tools.api_user']
|
||||
tags:
|
||||
- { name: twig.extension }
|
|
@ -294,18 +294,31 @@ class UserApi extends AbstractApi
|
|||
}
|
||||
|
||||
/**
|
||||
* Creates avatar with specified size URL for user
|
||||
* Creates URL of avatar with specified size by User object
|
||||
*
|
||||
* @param User $user
|
||||
* @param int $size
|
||||
* @return string
|
||||
*/
|
||||
public function getAvatarUrl(User $user, $size)
|
||||
{
|
||||
return $this->getAvatarUrlByLogin($user->getLogin(), $size);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates URL of avatar with specified size by login string
|
||||
*
|
||||
* @param $login
|
||||
* @param $size
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getAvatarUrlByLogin($login, $size)
|
||||
{
|
||||
if (!in_array($size, [self::AVATAR_SIZE_SMALL, self::AVATAR_SIZE_MEDIUM, self::AVATAR_SIZE_LARGE], true)) {
|
||||
throw new \InvalidArgumentException('Avatar size must be one of restricted variants. See UserApi class AVATAR_SIZE_* constants.');
|
||||
}
|
||||
|
||||
return $this->avatarsBaseUrl.urlencode($user->getLogin()).'/'.$size;
|
||||
return $this->avatarsBaseUrl.urlencode($login).'/'.$size;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
<?php
|
||||
|
||||
namespace Skobkin\Bundle\PointToolsBundle\Twig;
|
||||
|
||||
use Skobkin\Bundle\PointToolsBundle\Service\UserApi;
|
||||
|
||||
class PointAvatarExtension extends \Twig_Extension
|
||||
{
|
||||
/**
|
||||
* @var UserApi
|
||||
*/
|
||||
private $userApi;
|
||||
|
||||
public function __construct(UserApi $userApi)
|
||||
{
|
||||
$this->userApi = $userApi;
|
||||
}
|
||||
|
||||
public function getFunctions()
|
||||
{
|
||||
return [
|
||||
new \Twig_SimpleFunction('point_avatar', [$this, 'pointAvatarFunction']),
|
||||
new \Twig_SimpleFunction('point_avatar_small', [$this, 'pointAvatarSmallFunction']),
|
||||
new \Twig_SimpleFunction('point_avatar_medium', [$this, 'pointAvatarMediumFunction']),
|
||||
new \Twig_SimpleFunction('point_avatar_large', [$this, 'pointAvatarLargeFunction']),
|
||||
];
|
||||
}
|
||||
|
||||
public function pointAvatarSmallFunction($login)
|
||||
{
|
||||
return $this->pointAvatarFunction($login, UserApi::AVATAR_SIZE_SMALL);
|
||||
}
|
||||
|
||||
public function pointAvatarMediumFunction($login)
|
||||
{
|
||||
return $this->pointAvatarFunction($login, UserApi::AVATAR_SIZE_MEDIUM);
|
||||
}
|
||||
|
||||
public function pointAvatarLargeFunction($login)
|
||||
{
|
||||
return $this->pointAvatarFunction($login, UserApi::AVATAR_SIZE_LARGE);
|
||||
}
|
||||
|
||||
public function pointAvatarFunction($login, $size)
|
||||
{
|
||||
return $this->userApi->getAvatarUrlByLogin($login, $size);
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return 'point_tools_avatars';
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue