![]() 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/ChannelBundle/PreferenceBuilder/ |
<?php namespace Mautic\ChannelBundle\PreferenceBuilder; use Doctrine\Common\Collections\ArrayCollection; use Mautic\CampaignBundle\Entity\Event; use Mautic\CampaignBundle\Entity\LeadEventLog; class ChannelPreferences { /** * @var ArrayCollection[] */ private array $organizedByPriority = []; public function __construct( private Event $event ) { } /** * @param int $priority * * @return $this */ public function addPriority($priority) { $priority = (int) $priority; if (!isset($this->organizedByPriority[$priority])) { $this->organizedByPriority[$priority] = new ArrayCollection(); } return $this; } /** * @param int $priority * * @return $this */ public function addLog(LeadEventLog $log, $priority) { $priority = (int) $priority; $this->addPriority($priority); // We have to clone the log to not affect the original assocaited with the MM event itself // Clone to remove from Doctrine's ORM memory since we're having to apply a pseudo event $log = clone $log; $log->setEvent($this->event); $this->organizedByPriority[$priority]->set($log->getId(), $log); return $this; } /** * Removes a log from all prioritized groups. * * @return $this */ public function removeLog(LeadEventLog $log) { foreach ($this->organizedByPriority as $logs) { /** @var ArrayCollection<int, LeadEventLog> $logs */ $logs->remove($log->getId()); } return $this; } /** * @param int $priority * * @return ArrayCollection|LeadEventLog[] */ public function getLogsByPriority($priority) { $priority = (int) $priority; return $this->organizedByPriority[$priority] ?? new ArrayCollection(); } }