Spaces:
No application file
No application file
File size: 1,765 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
<?php
namespace Mautic\CoreBundle\Twig\Helper;
use Mautic\CoreBundle\Helper\CoreParametersHelper;
use Mautic\CoreBundle\Helper\UrlHelper;
use Mautic\LeadBundle\Twig\Helper\DefaultAvatarHelper;
use Symfony\Component\HttpFoundation\RequestStack;
final class GravatarHelper
{
private bool $devMode;
/**
* @var array<string>
*/
private array $devHosts;
public function __construct(
private DefaultAvatarHelper $defaultAvatarHelper,
CoreParametersHelper $coreParametersHelper,
private RequestStack $requestStack
) {
$this->devMode = MAUTIC_ENV === 'dev';
$this->devHosts = (array) $coreParametersHelper->get('dev_hosts');
}
/**
* @param string $email
* @param string $size
* @param string $default
*/
public function getImage($email, $size = '250', $default = null): string
{
$request = $this->requestStack->getCurrentRequest();
$localDefault = ($this->devMode
|| ($request
&& in_array(
$request->getClientIp(),
array_merge($this->devHosts, ['127.0.0.1', 'fe80::1', '::1'])
)))
?
'mp'
:
$this->defaultAvatarHelper->getDefaultAvatar(true);
$url = 'https://www.gravatar.com/avatar/'.md5(strtolower(trim($email))).'?s='.$size;
if (null === $default) {
$default = $localDefault;
}
$default = (str_contains($default, '.') && !str_starts_with($default, 'http')) ? UrlHelper::rel2abs($default) : $default;
return $url.('&d='.urlencode($default));
}
public function getName(): string
{
return 'gravatar';
}
}
|