![]() 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/Model/ |
<?php namespace Mautic\CampaignBundle\Model; use Mautic\CampaignBundle\CampaignEvents; use Mautic\CampaignBundle\Entity\Campaign; use Mautic\CampaignBundle\Entity\Event; use Mautic\CampaignBundle\Entity\LeadEventLog; use Mautic\CampaignBundle\Entity\LeadEventLogRepository; use Mautic\CampaignBundle\Event\DeleteEvent; use Mautic\CoreBundle\Helper\Chart\ChartQuery; use Mautic\CoreBundle\Helper\Chart\LineChart; use Mautic\CoreBundle\Model\FormModel; /** * @extends FormModel<Event> */ class EventModel extends FormModel { /** * @return \Mautic\CampaignBundle\Entity\EventRepository */ public function getRepository() { return $this->em->getRepository(Event::class); } /** * @return \Mautic\CampaignBundle\Entity\CampaignRepository */ public function getCampaignRepository() { return $this->em->getRepository(Campaign::class); } /** * @return LeadEventLogRepository */ public function getLeadEventLogRepository() { return $this->em->getRepository(LeadEventLog::class); } public function getPermissionBase(): string { return 'campaign:campaigns'; } /** * Get a specific entity or generate a new one if id is empty. */ public function getEntity($id = null): ?Event { if (null === $id) { return new Event(); } return parent::getEntity($id); } public function deleteEvents($currentEvents, $deletedEvents): void { $deletedKeys = []; foreach ($deletedEvents as $k => $deleteMe) { if ($deleteMe instanceof Event) { $deleteMe = $deleteMe->getId(); } if (str_starts_with($deleteMe, 'new')) { unset($deletedEvents[$k]); } if (isset($currentEvents[$deleteMe])) { unset($deletedEvents[$k]); } if (isset($deletedEvents[$k])) { $deletedKeys[] = $deleteMe; } } if (count($deletedEvents)) { // wipe out any references to these events to prevent restraint violations $this->getRepository()->nullEventRelationships($deletedKeys); $this->getRepository()->setEventsAsDeleted($deletedEvents); $this->dispatcher->dispatch(new DeleteEvent($deletedKeys), CampaignEvents::ON_EVENT_DELETE); } } public function deleteEventsByCampaignId(int $campaignId): void { $eventIds = $this->getRepository()->getCampaignEventIds($campaignId); $this->deleteEventsByEventIds($eventIds); } /** * @param string[] $eventIds */ public function deleteEventsByEventIds(array $eventIds): void { $this->getRepository()->deleteEvents($eventIds); $this->dispatcher->dispatch(new DeleteEvent($eventIds), CampaignEvents::ON_AFTER_EVENTS_DELETE); } /** * Get line chart data of campaign events. * * @param string $unit {@link php.net/manual/en/function.date.php#refsect1-function.date-parameters} * @param string $dateFormat * @param array $filter * @param bool $canViewOthers */ public function getEventLineChartData($unit, \DateTime $dateFrom, \DateTime $dateTo, $dateFormat = null, $filter = [], $canViewOthers = true): array { $chart = new LineChart($unit, $dateFrom, $dateTo, $dateFormat); $query = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo); $q = $query->prepareTimeDataQuery('campaign_lead_event_log', 'date_triggered', $filter); if (!$canViewOthers) { $q->join('t', MAUTIC_TABLE_PREFIX.'campaigns', 'c', 'c.id = t.campaign_id') ->andWhere('c.created_by = :userId') ->setParameter('userId', $this->userHelper->getUser()->getId()); } $data = $query->loadAndBuildTimeData($q); $chart->setDataset($this->translator->trans('mautic.campaign.triggered.events'), $data); return $chart->render(); } }