Spaces:
No application file
No application file
| 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'; | |
| } | |
| } | |