Spaces:
No application file
No application file
File size: 2,425 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 MauticPlugin\MauticFocusBundle\Controller;
use Mautic\CoreBundle\Controller\CommonController;
use Mautic\CoreBundle\Helper\TrackingPixelHelper;
use Mautic\LeadBundle\Tracker\ContactTracker;
use MauticPlugin\MauticFocusBundle\Entity\Stat;
use MauticPlugin\MauticFocusBundle\Event\FocusViewEvent;
use MauticPlugin\MauticFocusBundle\FocusEvents;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class PublicController extends CommonController
{
/**
* @return array|\Symfony\Component\HttpFoundation\JsonResponse|\Symfony\Component\HttpFoundation\RedirectResponse|Response
*/
public function generateAction($id)
{
// Don't store a visitor with this request
defined('MAUTIC_NON_TRACKABLE_REQUEST') || define('MAUTIC_NON_TRACKABLE_REQUEST', 1);
/** @var \MauticPlugin\MauticFocusBundle\Model\FocusModel $model */
$model = $this->getModel('focus');
$focus = $model->getEntity($id);
if ($focus) {
if (!$focus->isPublished()) {
return new Response('', 200, ['Content-Type' => 'application/javascript']);
}
$content = $model->generateJavascript($focus, false, MAUTIC_ENV == 'dev');
return new Response($content, 200, ['Content-Type' => 'application/javascript']);
} else {
return new Response('', 200, ['Content-Type' => 'application/javascript']);
}
}
/**
* @return Response
*/
public function viewPixelAction(Request $request, ContactTracker $contactTracker)
{
$id = $request->get('id', false);
if ($id) {
/** @var \MauticPlugin\MauticFocusBundle\Model\FocusModel $model */
$model = $this->getModel('focus');
$focus = $model->getEntity($id);
$lead = $contactTracker->getContact();
if ($focus && $focus->isPublished() && $lead) {
$stat = $model->addStat($focus, Stat::TYPE_NOTIFICATION, $request, $lead);
if ($stat && $this->dispatcher->hasListeners(FocusEvents::FOCUS_ON_VIEW)) {
$event = new FocusViewEvent($stat);
$this->dispatcher->dispatch($event, FocusEvents::FOCUS_ON_VIEW);
unset($event);
}
}
}
return TrackingPixelHelper::getResponse($request);
}
}
|