![]() 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 namespace Mautic\CampaignBundle\Controller; use Doctrine\Persistence\ManagerRegistry; use Mautic\CampaignBundle\Entity\LeadEventLog; use Mautic\CampaignBundle\Model\EventLogModel; use Mautic\CoreBundle\Controller\AjaxController as CommonAjaxController; use Mautic\CoreBundle\Factory\MauticFactory; use Mautic\CoreBundle\Factory\ModelFactory; use Mautic\CoreBundle\Helper\CoreParametersHelper; use Mautic\CoreBundle\Helper\InputHelper; use Mautic\CoreBundle\Helper\UserHelper; use Mautic\CoreBundle\Security\Permissions\CorePermissions; use Mautic\CoreBundle\Service\FlashBag; use Mautic\CoreBundle\Translation\Translator; use Mautic\CoreBundle\Twig\Helper\DateHelper; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; class AjaxController extends CommonAjaxController { public function __construct( private DateHelper $dateHelper, ManagerRegistry $doctrine, MauticFactory $factory, ModelFactory $modelFactory, UserHelper $userHelper, CoreParametersHelper $coreParametersHelper, EventDispatcherInterface $dispatcher, Translator $translator, FlashBag $flashBag, RequestStack $requestStack, CorePermissions $security ) { parent::__construct($doctrine, $factory, $modelFactory, $userHelper, $coreParametersHelper, $dispatcher, $translator, $flashBag, $requestStack, $security); } public function updateConnectionsAction(Request $request): \Symfony\Component\HttpFoundation\JsonResponse { $session = $request->getSession(); $campaignId = InputHelper::clean($request->query->get('campaignId')); $canvasSettings = $request->request->get('canvasSettings') ?? []; if (empty($campaignId)) { $dataArray = ['success' => 0]; } else { $session->set('mautic.campaign.'.$campaignId.'.events.canvassettings', $canvasSettings); $dataArray = ['success' => 1]; } return $this->sendJsonResponse($dataArray); } public function updateScheduledCampaignEventAction(Request $request): \Symfony\Component\HttpFoundation\JsonResponse { $eventId = (int) $request->request->get('eventId'); $contactId = (int) $request->request->get('contactId'); $newDate = InputHelper::clean($request->request->get('date')); $originalDate = InputHelper::clean($request->request->get('originalDate')); $dataArray = ['success' => 0, 'date' => $originalDate]; if (!empty($eventId) && !empty($contactId) && !empty($newDate)) { if ($log = $this->getContactEventLog($eventId, $contactId)) { $newDate = new \DateTime($newDate); if ($newDate >= new \DateTime()) { $log->setTriggerDate($newDate); /** @var EventLogModel $logModel */ $logModel = $this->getModel('campaign.event_log'); $logModel->saveEntity($log); $dataArray = [ 'success' => 1, 'date' => $newDate->format('Y-m-d H:i:s'), ]; } } } // Format the date to match the view $dataArray['formattedDate'] = $this->dateHelper->toFull($dataArray['date']); return $this->sendJsonResponse($dataArray); } public function cancelScheduledCampaignEventAction(Request $request): \Symfony\Component\HttpFoundation\JsonResponse { $dataArray = ['success' => 0]; $eventId = (int) $request->request->get('eventId'); $contactId = (int) $request->request->get('contactId'); if (!empty($eventId) && !empty($contactId)) { if ($log = $this->getContactEventLog($eventId, $contactId)) { $log->setIsScheduled(false); /** @var EventLogModel $logModel */ $logModel = $this->getModel('campaign.event_log'); $metadata = $log->getMetadata(); $metadata['errors'] = $this->translator->trans( 'mautic.campaign.event.cancelled.time', ['%date%' => $log->getTriggerDate()->format('Y-m-d H:i:s')] ); $log->setMetadata($metadata); $logModel->getRepository()->saveEntity($log); $dataArray = ['success' => 1]; } } return $this->sendJsonResponse($dataArray); } /** * @return LeadEventLog|null */ protected function getContactEventLog($eventId, $contactId) { $contact = $this->getModel('lead')->getEntity($contactId); if ($contact) { if ($this->security->hasEntityAccess('lead:leads:editown', 'lead:leads:editother', $contact->getPermissionUser())) { /** @var EventLogModel $logModel */ $logModel = $this->getModel('campaign.event_log'); /** @var LeadEventLog $log */ $log = $logModel->getRepository() ->findOneBy( [ 'lead' => $contactId, 'event' => $eventId, ], ['dateTriggered' => 'desc'] ); if ($log && ($log->getTriggerDate() > new \DateTime())) { return $log; } } } return null; } }