46 lines
1.4 KiB
PHP
Executable File
46 lines
1.4 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Mautic\NotificationBundle\Api;
|
|
|
|
use GuzzleHttp\Client;
|
|
use Mautic\NotificationBundle\Entity\Notification;
|
|
use Mautic\PageBundle\Model\TrackableModel;
|
|
use Mautic\PluginBundle\Helper\IntegrationHelper;
|
|
use Psr\Http\Message\ResponseInterface;
|
|
|
|
abstract class AbstractNotificationApi
|
|
{
|
|
public function __construct(
|
|
protected Client $http,
|
|
protected TrackableModel $trackableModel,
|
|
protected IntegrationHelper $integrationHelper,
|
|
) {
|
|
}
|
|
|
|
/**
|
|
* @param string $endpoint One of "apps", "players", or "notifications"
|
|
* @param array $data Array of data to send
|
|
*/
|
|
abstract public function send(string $endpoint, array $data): ResponseInterface;
|
|
|
|
/**
|
|
* @return ResponseInterface
|
|
*/
|
|
abstract public function sendNotification($id, Notification $notification);
|
|
|
|
/**
|
|
* Convert a non-tracked url to a tracked url.
|
|
*
|
|
* @param string $url
|
|
*
|
|
* @return string
|
|
*/
|
|
public function convertToTrackedUrl($url, array $clickthrough, Notification $notification)
|
|
{
|
|
/* @var \Mautic\PageBundle\Entity\Redirect $redirect */
|
|
$trackable = $this->trackableModel->getTrackableByUrl($url, 'notification', $clickthrough['notification']);
|
|
|
|
return $this->trackableModel->generateTrackableUrl($trackable, $clickthrough, [], $notification->getUtmTags());
|
|
}
|
|
}
|