HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/ai.naniguide.com/app/Library/SubscriberUrlTagResolver.php
<?php

namespace App\Library;

use App\Library\Contracts\TagResolverInterface;
use App\Model\Subscriber;

/**
 * URL-context resolver for embedding a {@see Subscriber}'s data into a redirect URL.
 *
 * Differs from {@see Subscriber::getResolvedTags()} in two ways:
 *  - field values are urlencoded so they survive being placed into a query string
 *    (e.g. spaces, ampersands, accented chars, '+' in emails),
 *  - exposes the bare-id tag {{ ID }} which the email-side resolver doesn't.
 */
class SubscriberUrlTagResolver implements TagResolverInterface
{
    public function __construct(private Subscriber $subscriber)
    {
    }

    public function getResolvedTags(): array
    {
        $fields = [];
        foreach ($this->subscriber->mailList->fields as $field) {
            $fields[strtolower($field->tag)] = urlencode((string) $this->subscriber->getValueByField($field));
        }

        return [
            'subscriber' => $fields,
            'id' => $this->subscriber->id,
            'email' => urlencode((string) $this->subscriber->getValueByTag('EMAIL')),
            'first_name' => urlencode((string) $this->subscriber->getValueByTag('FIRST_NAME')),
            'last_name' => urlencode((string) $this->subscriber->getValueByTag('LAST_NAME')),
        ];
    }
}