123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- <?php
-
- namespace Muzich\CoreBundle\Actions\User;
-
- use Muzich\CoreBundle\Entity\User;
- use Muzich\CoreBundle\Entity\Event as EventEntity;
- use Symfony\Component\DependencyInjection\Container;
-
- /**
- * Refactorisation d'actions lié aux événement de l'utilisateur
- *
- * @author bux
- */
- class Event
- {
-
- /**
- *
- * @var User
- */
- protected $user;
- protected $event;
- protected $new = false;
- protected $container;
-
- /**
- *
- * @param User $user L'utilisateur concerné par l'événement
- * @param Container $container
- */
- public function __construct(User $user, Container $container)
- {
- $this->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);
- }
-
- }
|