src/Twig/MemberMediaExtension.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Twig;
  3. use App\Dictionary\ImageVars;
  4. use App\Security\ApiUser;
  5. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  6. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  7. use Twig\Extension\AbstractExtension;
  8. use Twig\TwigFunction;
  9. class MemberMediaExtension extends AbstractExtension
  10. {
  11.     protected TokenInterface $tokenStorage;
  12.     public function __construct(TokenStorageInterface $tokenStorage)
  13.     {
  14.         $this->token $tokenStorage->getToken();
  15.     }
  16.     /**
  17.      * @return array
  18.      */
  19.     public function getFunctions(): array
  20.     {
  21.         return [
  22.             new TwigFunction('memberMediaSource', [$this'getMemberMediaSource']),
  23.             new TwigFunction('originalMemberMediaSource', [$this'getOriginalMemberMediaSource']),
  24.         ];
  25.     }
  26.     /**
  27.      * @param array $specs
  28.      * @param string $filterName
  29.      * @param bool $forceHardcore
  30.      * @return string
  31.      */
  32.     public function getMemberMediaSource(array $specsstring $filterName ImageVars::PREVIEW_BIGbool $forceHardcore false): string
  33.     {
  34.         if ($forceHardcore) {
  35.             return $this->getOriginalMemberMediaSource($specs$filterName);
  36.         }
  37.         if ((null === $this->token || !$this->token->getUser() instanceof ApiUser) && ( //when not logged in
  38.                 in_array(($specs['is_checked'] ?? false), [false0'0'], true) || //'is_checked' is false or *missing*
  39.                 in_array(($specs['is_hardcore'] ?? true), [true1'1'], true//is_hardcore is true or *missing*
  40.             )
  41.         )
  42.         {
  43.             return str_replace('__filter__'$filterName$specs['pixelated_url'] ?? '');
  44.         }
  45.         if($specs["is_hardcore"] == true && $this->token->getUser()->getShallHardcore() === false) {
  46.             return str_replace('__filter__'$filterName$specs['pixelated_url'] ?? '');
  47.         }
  48.         return $this->getOriginalMemberMediaSource($specs$filterName);
  49.     }
  50.     /**
  51.      * @param array $specs
  52.      * @param string $filterName
  53.      * @return string
  54.      */
  55.     public function getOriginalMemberMediaSource(array $specsstring $filterName ImageVars::PREVIEW_BIG): string
  56.     {
  57.         return str_replace('__filter__'$filterName$specs['url'] ?? '');
  58.     }
  59. }