user = $user; $this->container = $container; } /** * Cette méthode récupére (si elle existe) en base l'objet Event * correspondant a cet événement. * * @param string $type */ protected function initialize($type) { $em = $this->container->get('doctrine')->getEntityManager(); try { $this->event = $em->createQuery( 'SELECT e FROM MuzichCoreBundle:Event e WHERE e.user = :uid AND e.type = :type' )->setParameters(array( 'uid' => $this->user->getId(), 'type' => $type ))->getSingleResult() ; $this->new = false; } catch (\Doctrine\ORM\NoResultException $e) { $this->event = new EventEntity(); $this->new = true; } } /** * Procéde a l'ajout de l'événement a la liste de l'utilisateur. * * @param string $type * @param int $element_id * @return Event */ public function proceed($type, $element_id) { $this->initialize($type); if ($this->new) { $this->initEvent($type, $element_id); } else { $this->updateEvent($element_id); } return $this->event; } /** * * * @param int $element_id */ protected function updateEvent($element_id) { $this->event->addId($element_id); } /** * Création d'un objet Event * * @param string $type * @param int $element_id */ protected function initEvent($type, $element_id) { $this->event->addId($element_id); $this->event->setType($type); $this->event->setUser($this->user); } }