Spaces:
No application file
No application file
File size: 2,482 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
<?php
namespace Mautic\DynamicContentBundle\Controller;
use Mautic\CoreBundle\Controller\CommonController;
use Mautic\DynamicContentBundle\Helper\DynamicContentHelper;
use Mautic\LeadBundle\Helper\ContactRequestHelper;
use Mautic\LeadBundle\Tracker\Service\DeviceTrackingService\DeviceTrackingServiceInterface;
use Mautic\PageBundle\Model\PageModel;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\HttpException;
class DynamicContentApiController extends CommonController
{
/**
* @return mixed
*/
public function processAction(Request $request, $objectAlias)
{
// Don't store a visitor with this request
defined('MAUTIC_NON_TRACKABLE_REQUEST') || define('MAUTIC_NON_TRACKABLE_REQUEST', 1);
$method = strtolower($request->getMethod());
if (method_exists($this, $method.'Action')) {
return $this->forwardWithPost(
static::class.'::'.$method.'Action',
$request->request->all(),
[
'objectAlias' => $objectAlias,
],
$request->query->all()
);
} else {
throw new HttpException(Response::HTTP_FORBIDDEN, 'This endpoint is not able to process '.strtoupper($method).' requests.');
}
}
public function getAction(
Request $request,
DynamicContentHelper $helper,
DeviceTrackingServiceInterface $deviceTrackingService,
ContactRequestHelper $contactRequestHelper,
$objectAlias
): Response {
/** @var PageModel $pageModel */
$pageModel = $this->getModel('page');
$lead = $contactRequestHelper->getContactFromQuery($pageModel->getHitQuery($request));
$content = $helper->getDynamicContentForLead($objectAlias, $lead);
$trackedDevice = $deviceTrackingService->getTrackedDevice();
$deviceId = (null === $trackedDevice ? null : $trackedDevice->getTrackingId());
return empty($content)
? new Response('', Response::HTTP_NO_CONTENT)
: new JsonResponse(
[
'content' => $content,
'id' => $lead->getId(),
'sid' => $deviceId,
'device_id' => $deviceId,
]
);
}
}
|