query->get('website'); return $availabilityChecker->check($url, $request->getScheme()); } public function generatePreviewAction(Request $request): JsonResponse { $responseContent = ['html' => '', 'style' => '']; $focus = $request->request->all(); if (isset($focus['focus'])) { $focusArray = InputHelper::_($focus['focus']); if (!empty($focusArray['style']) && !empty($focusArray['type'])) { /** @var FocusModel $model */ $model = $this->getModel('focus'); $focusArray['id'] = 'preview'; $responseContent['html'] = $model->getContent($focusArray, true); $responseContent['style'] = $focusArray['style']; // Required by JS in response } } return $this->sendJsonResponse($responseContent); } public function getViewsCountAction(Request $request, CacheProvider $cacheProvider): JsonResponse { $focusId = (int) InputHelper::clean($request->query->get('focusId')); if (0 === $focusId) { return $this->sendJsonResponse([ 'success' => 0, 'message' => $this->translator->trans('mautic.core.error.badrequest'), ], 400); } $cacheTimeout = (int) $this->coreParametersHelper->get('cached_data_timeout'); $cacheItem = $cacheProvider->getItem('focus.viewsCount.'.$focusId); if ($cacheItem->isHit()) { $cacheItemValue = $cacheItem->get(); $viewsCount = $cacheItemValue['views']; $uniqueViewsCount = $cacheItemValue['uniqueViews']; } else { /** @var FocusModel $model */ $model = $this->getModel('focus'); $focus = $model->getEntity($focusId); if (null === $focus) { return $this->sendJsonResponse([ 'success' => 0, 'message' => $this->translator->trans('mautic.api.call.notfound'), ], 404); } $viewsCount = $model->getViewsCount($focus); $uniqueViewsCount = $model->getUniqueViewsCount($focus); $cacheItem->set([ 'views' => $viewsCount, 'uniqueViews' => $uniqueViewsCount, ]); $cacheItem->tag("focus.{$focusId}"); $cacheItem->expiresAfter($cacheTimeout * 60); $cacheProvider->save($cacheItem); } return $this->sendJsonResponse([ 'success' => 1, 'views' => $viewsCount, 'uniqueViews' => $uniqueViewsCount, ]); } public function getClickThroughCountAction(Request $request, CacheProvider $cacheProvider): JsonResponse { $focusId = (int) InputHelper::clean($request->query->get('focusId')); if (0 === $focusId) { return $this->sendJsonResponse([ 'success' => 0, 'message' => $this->translator->trans('mautic.core.error.badrequest'), ], 400); } $cacheTimeout = (int) $this->coreParametersHelper->get('cached_data_timeout'); $cacheItem = $cacheProvider->getItem('focus.clickThroughCount.'.$focusId); if ($cacheItem->isHit()) { $clickThroughCount = $cacheItem->get(); } else { /** @var FocusModel $model */ $model = $this->getModel('focus'); $focus = $model->getEntity($focusId); if (null === $focus) { return $this->sendJsonResponse([ 'success' => 0, 'message' => $this->translator->trans('mautic.api.call.notfound'), ], 404); } $clickThroughCount = $model->getClickThroughCount($focus); $cacheItem->set($clickThroughCount); $cacheItem->tag("focus.{$focusId}"); $cacheItem->expiresAfter($cacheTimeout * 60); $cacheProvider->save($cacheItem); } return $this->sendJsonResponse([ 'success' => 1, 'clickThrough' => $clickThroughCount, ]); } }