Spaces:
No application file
No application file
| 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, | |
| ] | |
| ); | |
| } | |
| } | |