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