/** * Get Event dictionary for given tracking event * * @param TrackingEvent $event * @return TrackingEventDictionary */ protected function getEventType(TrackingEvent $event) { $eventWebsite = $event->getWebsite(); if ($eventWebsite && isset($this->eventDictionary[$eventWebsite->getId()], $this->eventDictionary[$eventWebsite->getId()][$event->getName()])) { $eventType = $this->eventDictionary[$eventWebsite->getId()][$event->getName()]; } else { $eventType = $this->getEntityManager()->getRepository('OroTrackingBundle:TrackingEventDictionary')->findOneBy(['name' => $event->getName(), 'website' => $eventWebsite]); } if (!$eventType) { $eventType = new TrackingEventDictionary(); $eventType->setName($event->getName()); $eventType->setWebsite($eventWebsite); $this->getEntityManager()->persist($eventType); $this->eventDictionary[$eventWebsite ? $eventWebsite->getId() : null][$event->getName()] = $eventType; } return $eventType; }