![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/app/bundles/EmailBundle/Controller/ |
<?php namespace Mautic\EmailBundle\Controller; use Mautic\CoreBundle\Form\Type\DateRangeType; use Mautic\CoreBundle\Security\Permissions\CorePermissions; use Mautic\EmailBundle\Model\EmailModel; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Form\FormFactoryInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; class EmailGraphStatsController extends AbstractController { /** * Loads a specific form into the detailed panel. * * @param int $objectId * @param bool $isVariant * @param string $dateFrom * @param string $dateTo * * @return \Symfony\Component\HttpFoundation\JsonResponse|\Symfony\Component\HttpFoundation\Response * * @throws \Exception */ public function viewAction( Request $request, EmailModel $model, FormFactoryInterface $formFactory, CorePermissions $security, $objectId, $isVariant, $dateFrom = null, $dateTo = null ): \Symfony\Component\HttpFoundation\Response { /** @var \Mautic\EmailBundle\Entity\Email $email */ $email = $model->getEntity($objectId); // Init the date range filter form $dateRangeValues = ['date_from' => $dateFrom, 'date_to' => $dateTo]; $action = $this->generateUrl('mautic_email_action', ['objectAction' => 'view', 'objectId' => $objectId]); $dateRangeForm = $formFactory->create(DateRangeType::class, $dateRangeValues, ['action' => $action]); if (null === $email || !$security->hasEntityAccess( 'email:emails:viewown', 'email:emails:viewother', $email->getCreatedBy() )) { throw new AccessDeniedHttpException(); } // get A/B test information [$parent, $children] = $email->getVariants(); // get related translations [$translationParent, $translationChildren] = $email->getTranslations(); // Prepare stats for bargraph if ($chartStatsSource = $request->query->get('stats', false)) { $includeVariants = ('all' === $chartStatsSource); } else { $includeVariants = (($email->isVariant() && $parent === $email) || ($email->isTranslation() && $translationParent === $email)); } $dateFromObject = new \DateTime($dateFrom); $dateToObject = new \DateTime($dateTo); if ('template' === $email->getEmailType()) { $stats = $model->getEmailGeneralStats( $email, $includeVariants, null, $dateFromObject, $dateToObject ); } else { $stats = $model->getEmailListStats( $email, $includeVariants, $dateFromObject, $dateToObject ); } $statsDevices = $model->getEmailDeviceStats( $email, $includeVariants, $dateFromObject, $dateToObject ); return $this->render( '@MauticEmail/Email/graph.html.twig', [ 'email' => $email, 'stats' => $stats, 'statsDevices' => $statsDevices, 'showAllStats' => $includeVariants, 'dateRangeForm' => $dateRangeForm->createView(), 'isVariant' => $isVariant, ] ); } }