/** * @param HookEvent $hookEvent */ public function onHookRequest(HookEvent $hookEvent) { $hook = $hookEvent->getHook(); // update letter and snapshot $letter = $this->letterManager->updateByHook($hook); //update campaign if ($letter instanceof Letter) { $tag = $letter->getTags(); } if (isset($tag)) { $campRepo = $this->em->getRepository("GroslabMailerBundle:Campaign"); $camp = $campRepo->findOneBy(array('referer' => $tag)); } if (isset($camp) && $camp instanceof Campaign) { if ($hook->getEvent() === HookEvents::DELIVERED) { $camp->addCountDelivered(); } if ($hook->getEvent() === HookEvents::SPAMREPORT) { // todo: } if ($hook->getEvent() === HookEvents::OPEN) { $camp->addCountOpened(); } if ($hook->getEvent() === HookEvents::CLICK) { $camp->addCountClicked(); } if ($hook->getEvent() === HookEvents::BOUNCE) { //todo: } $this->em->persist($camp); $this->em->flush($camp); } }