![]() 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/CampaignBundle/Controller/ |
<?php declare(strict_types=1); namespace Mautic\CampaignBundle\Controller; use Doctrine\DBAL\Exception; use Mautic\CampaignBundle\Entity\Campaign; use Mautic\CampaignBundle\Model\CampaignModel; use Mautic\CoreBundle\Helper\MapHelper; use Mautic\CoreBundle\Security\Permissions\CorePermissions; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; class CampaignMapStatsController extends AbstractController { public const MAP_OPTIONS = [ 'contacts' => [ 'label' => 'mautic.lead.leads', 'unit' => 'Contact', ], 'read_count' => [ 'label' => 'mautic.email.read', 'unit' => 'Read', ], 'clicked_through_count'=> [ 'label' => 'mautic.email.click', 'unit' => 'Click', ], ]; public const LEGEND_TEXT = 'Total: %total (%withCountry with country)'; public function __construct(private CampaignModel $model) { } /** * @return array<string, array<int, array<string, int|string>>> * * @throws Exception */ public function getData(Campaign $entity, \DateTimeImmutable $dateFromObject, \DateTimeImmutable $dateToObject): array { return $this->model->getCountryStats($entity, $dateFromObject, $dateToObject); } public function hasAccess(CorePermissions $security, Campaign $entity): bool { return $security->hasEntityAccess( 'email:emails:viewown', 'email:emails:viewother', $entity->getCreatedBy() ); } /** * @return array<string,array<string, string>> */ public function getMapOptions(Campaign $entity): array { if ($entity->isEmailCampaign()) { return self::MAP_OPTIONS; } $key = array_key_first(self::MAP_OPTIONS); return [$key => self::MAP_OPTIONS[$key]]; } public function getMapOptionsTitle(): string { return ''; } /** * @throws \Exception */ public function viewAction( CorePermissions $security, int $objectId, string $dateFrom = '', string $dateTo = '' ): Response { $entity = $this->model->getEntity($objectId); if (empty($entity) || !$this->hasAccess($security, $entity)) { throw new AccessDeniedHttpException(); } $statsCountries = $this->getData($entity, new \DateTimeImmutable($dateFrom), new \DateTimeImmutable($dateTo)); $mapData = MapHelper::buildMapData($statsCountries, $this->getMapOptions($entity), self::LEGEND_TEXT); return $this->render( '@MauticCore/Helper/map.html.twig', [ 'data' => $mapData[0]['data'], 'height' => 315, 'optionsEnabled' => true, 'optionsTitle' => $this->getMapOptionsTitle(), 'options' => $mapData, 'legendEnabled' => true, 'statUnit' => $mapData[0]['unit'], ] ); } }