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')),
];
}
}