src/Twig/Extension/HeroReplacementExtension.php line 36

Open in your IDE?
  1. <?php
  2. namespace App\Twig\Extension;
  3. use Pimcore\Model\DataObject\Policy;
  4. use Pimcore\Model\DataObject\Policyholder;
  5. use Twig\TwigFunction;
  6. use Twig\Extension\AbstractExtension;
  7. use Symfony\Component\HttpFoundation\RequestStack;
  8. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  9. class HeroReplacementExtension extends AbstractExtension
  10. {
  11.     private TokenStorageInterface $tokenStorage;
  12.     private RequestStack $requestStack;
  13.     public const CODE_403 403;
  14.     public function __construct(TokenStorageInterface $tokenStorageRequestStack $requestStack)
  15.     {
  16.         $this->tokenStorage $tokenStorage;
  17.         $this->requestStack $requestStack;
  18.     }
  19.     public function getFunctions(): array
  20.     {
  21.         return [
  22.             new TwigFunction('replaceHeroVars', [$this'replaceHeroVars']),
  23.         ];
  24.     }
  25.     public function replaceHeroVars(string $heroText): string
  26.     {
  27.         $session $this->requestStack->getSession();
  28.         $sessionData json_decode($session->get('mvk_angular'));
  29.         if (!$sessionData) {
  30.             return $heroText;
  31.         }
  32.         $policyholder $sessionData->policyHolderId Policyholder::getById($sessionData->policyHolderId) : null;
  33.         $policy $sessionData->policyId Policy::getById($sessionData->policyId) : null;
  34.         $regex "/##(firstName|lastName|partnerNr|bmsMembershipNo|policyNumber|policyType)##/";
  35.         preg_match_all($regex$heroText$matches);
  36.         foreach ($matches[1] as $match) {
  37.             switch ($match) {
  38.                 case 'firstName':
  39.                     if ($policyholder) {
  40.                         $firstName $policyholder->getFirstname();
  41.                         $heroText str_replace('##firstName##'$firstName$heroText);
  42.                     }
  43.                     break;
  44.                 case 'lastName':
  45.                     if ($policyholder) {
  46.                         $lastName $policyholder->getName();
  47.                         $heroText str_replace('##lastName##'$lastName$heroText);
  48.                     }
  49.                     break;
  50.                 case 'partnerNr':
  51.                     if ($policyholder) {
  52.                         $partnerNr $policyholder->getPartnerNr();
  53.                         $heroText str_replace('##partnerNr##'$partnerNr$heroText);
  54.                     }
  55.                     break;
  56.                 case 'bmsMembershipNo':
  57.                     if ($policyholder) {
  58.                         $bmsMembershipNo $policyholder->getBmsMembershipNo();
  59.                         $heroText str_replace('##bmsMembershipNo##'$bmsMembershipNo$heroText);
  60.                     }
  61.                     break;
  62.                 case 'policyNumber':
  63.                     if ($policy) {
  64.                         $policyNumber $policy->getPoliceNr();
  65.                         $heroText str_replace('##policyNumber##'$policyNumber$heroText);
  66.                     }
  67.                     break;
  68.                 case 'policyType':
  69.                     if ($policy) {
  70.                         $policyType $policy->getPolicyType();
  71.                         $heroText str_replace('##policyType##'$policyType$heroText);
  72.                     }
  73.                     break;
  74.             }
  75.         }
  76.         return $heroText;
  77.     }
  78. }