EventUser.php 1.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace Muzich\CoreBundle\Propagator;
  3. use Muzich\CoreBundle\Propagator\EventPropagator;
  4. use Muzich\CoreBundle\Entity\User;
  5. use Muzich\CoreBundle\Actions\User\Event as UserEventAction;
  6. use Muzich\CoreBundle\Actions\User\Reputation as UserReputation;
  7. use Muzich\CoreBundle\Entity\Event;
  8. use Muzich\CoreBundle\Security\Context as SecurityContext;
  9. /**
  10. * Propagateur d'événement concernant les users
  11. *
  12. * @author bux
  13. */
  14. class EventUser extends EventPropagator
  15. {
  16. /**
  17. * L'utilisateur est suivis par un autre utilisateur
  18. *
  19. * @param User $user Utilisateur suivis
  20. */
  21. public function addToFollow(User $user, User $follower)
  22. {
  23. // Points de réputation
  24. $ur = new UserReputation($user);
  25. $security_context = new SecurityContext($follower);
  26. if (!$security_context->actionIsAffectedBy(SecurityContext::AFFECT_NO_SCORING, SecurityContext::ACTION_USER_FOLLOW))
  27. {
  28. $ur->addPoints(
  29. $this->container->getParameter('reputation_element_follow_value')
  30. );
  31. }
  32. // Event de suivis
  33. $uea = new UserEventAction($user, $this->container);
  34. $event = $uea->proceed(Event::TYPE_USER_FOLLOW, $follower->getId());
  35. $this->container->get('doctrine')->getEntityManager()->persist($event);
  36. }
  37. /**
  38. * L'utilisateur n'est plus suivit par un autre utilisateur
  39. *
  40. * @param User $user Utilisateur plus suivis
  41. */
  42. public function removeFromFollow(User $user, User $old_follower)
  43. {
  44. $ur = new UserReputation($user);
  45. $security_context = new SecurityContext($old_follower);
  46. if (!$security_context->actionIsAffectedBy(SecurityContext::AFFECT_NO_SCORING, SecurityContext::ACTION_USER_FOLLOW))
  47. {
  48. $ur->removePoints(
  49. $this->container->getParameter('reputation_element_follow_value')
  50. );
  51. }
  52. }
  53. }