Przeglądaj źródła

Evolution #404: Inscription: confirmation de l'email et conséquences

Bastien Sevajol 11 lat temu
rodzic
commit
980257ab21

+ 4 - 3
src/Muzich/CoreBundle/Command/RecalculateReputationCommand.php Wyświetl plik

@@ -88,8 +88,8 @@ class RecalculateReputationCommand extends ContainerAwareCommand
88 88
       $count_favs = 0;
89 89
       $fav = $em->createQuery(
90 90
         "SELECT COUNT(f) FROM MuzichCoreBundle:UsersElementsFavorites f"
91
-        . " JOIN f.element e"
92
-        . " WHERE e.owner = :uid AND f.user != :uid"
91
+        . " JOIN f.element e JOIN f.user fu"
92
+        . " WHERE e.owner = :uid AND f.user != :uid AND fu.email_confirmed = 1"
93 93
       )->setParameter('uid', $user->getId())
94 94
        ->getScalarResult()      
95 95
       ;
@@ -109,7 +109,8 @@ class RecalculateReputationCommand extends ContainerAwareCommand
109 109
       $count_follow = 0;
110 110
       $fol = $em->createQuery(
111 111
         "SELECT COUNT(f) FROM MuzichCoreBundle:FollowUser f"
112
-        . " WHERE f.followed = :uid"
112
+        . " JOIN f.follower fu"
113
+        . " WHERE f.followed = :uid AND fu.email_confirmed = 1"
113 114
       )->setParameter('uid', $user->getId())
114 115
        ->getScalarResult()      
115 116
       ;

+ 1 - 1
src/Muzich/CoreBundle/Controller/CoreController.php Wyświetl plik

@@ -157,7 +157,7 @@ class CoreController extends Controller
157 157
       {
158 158
         // L'utilisateur suis déjà, on doit détruire l'entité
159 159
         $event = new EventUser($this->container);
160
-        $event->removeFromFollow($Follow->getFollowed());
160
+        $event->removeFromFollow($Follow->getFollowed(), $this->getUser());
161 161
         $em->persist($Follow->getFollowed());
162 162
       }
163 163
       

+ 17 - 8
src/Muzich/CoreBundle/Propagator/EventElement.php Wyświetl plik

@@ -12,6 +12,7 @@ use Muzich\CoreBundle\Managers\CommentsManager;
12 12
 use Muzich\CoreBundle\Entity\ElementTagsProposition;
13 13
 use Muzich\CoreBundle\Managers\EventArchiveManager;
14 14
 use Muzich\CoreBundle\Entity\EventArchive;
15
+use Muzich\CoreBundle\Security\Context as SecurityContext;
15 16
 
16 17
 /**
17 18
  * Propagateur d'événement concernant les éléments
@@ -102,12 +103,16 @@ class EventElement extends EventPropagator
102 103
    * 
103 104
    * @param Element $element 
104 105
    */
105
-  public function addedToFavorites(Element $element)
106
+  public function addedToFavorites(Element $element, User $added_by_user)
106 107
   {
107 108
     $ur = new UserReputation($element->getOwner());
108
-    $ur->addPoints(
109
-      $this->container->getParameter('reputation_element_favorite_value')
110
-    );
109
+    $security_context = new SecurityContext($added_by_user);
110
+    if (!$security_context->actionIsAffectedBy(SecurityContext::AFFECT_NO_SCORING, SecurityContext::ACTION_ELEMENT_ADD_TO_FAVORITES))
111
+    {
112
+      $ur->addPoints(
113
+        $this->container->getParameter('reputation_element_favorite_value')
114
+      );
115
+    }
111 116
     
112 117
     $uea = new UserEventAction($element->getOwner(), $this->container);
113 118
     $event = $uea->proceed(Event::TYPE_FAV_ADDED_ELEMENT, $element->getId());
@@ -119,12 +124,16 @@ class EventElement extends EventPropagator
119 124
    * 
120 125
    * @param Element $element 
121 126
    */
122
-  public function removedFromFavorites(Element $element)
127
+  public function removedFromFavorites(Element $element, User $removed_by_user)
123 128
   {
124 129
     $ur = new UserReputation($element->getOwner());
125
-    $ur->removePoints(
126
-      $this->container->getParameter('reputation_element_favorite_value')
127
-    );
130
+    $security_context = new SecurityContext($removed_by_user);
131
+    if (!$security_context->actionIsAffectedBy(SecurityContext::AFFECT_NO_SCORING, SecurityContext::ACTION_ELEMENT_ADD_TO_FAVORITES))
132
+    {
133
+      $ur->removePoints(
134
+        $this->container->getParameter('reputation_element_favorite_value')
135
+      );
136
+    }
128 137
   }
129 138
   
130 139
   /**

+ 16 - 7
src/Muzich/CoreBundle/Propagator/EventUser.php Wyświetl plik

@@ -7,6 +7,7 @@ use Muzich\CoreBundle\Entity\User;
7 7
 use Muzich\CoreBundle\Actions\User\Event as UserEventAction;
8 8
 use Muzich\CoreBundle\Actions\User\Reputation as UserReputation;
9 9
 use Muzich\CoreBundle\Entity\Event;
10
+use Muzich\CoreBundle\Security\Context as SecurityContext;
10 11
 
11 12
 /**
12 13
  * Propagateur d'événement concernant les users
@@ -25,9 +26,13 @@ class EventUser extends EventPropagator
25 26
   {
26 27
     // Points de réputation
27 28
     $ur = new UserReputation($user);
28
-    $ur->addPoints(
29
-      $this->container->getParameter('reputation_element_follow_value')
30
-    );
29
+    $security_context = new SecurityContext($follower);
30
+    if (!$security_context->actionIsAffectedBy(SecurityContext::AFFECT_NO_SCORING, SecurityContext::ACTION_USER_FOLLOW))
31
+    {
32
+      $ur->addPoints(
33
+        $this->container->getParameter('reputation_element_follow_value')
34
+      );
35
+    }
31 36
     
32 37
     // Event de suivis
33 38
     $uea = new UserEventAction($user, $this->container);
@@ -40,12 +45,16 @@ class EventUser extends EventPropagator
40 45
    * 
41 46
    * @param User $user Utilisateur plus suivis
42 47
    */
43
-  public function removeFromFollow(User $user)
48
+  public function removeFromFollow(User $user, User $old_follower)
44 49
   {
45 50
     $ur = new UserReputation($user);
46
-    $ur->removePoints(
47
-      $this->container->getParameter('reputation_element_follow_value')
48
-    );
51
+    $security_context = new SecurityContext($old_follower);
52
+    if (!$security_context->actionIsAffectedBy(SecurityContext::AFFECT_NO_SCORING, SecurityContext::ACTION_USER_FOLLOW))
53
+    {
54
+      $ur->removePoints(
55
+        $this->container->getParameter('reputation_element_follow_value')
56
+      );
57
+    }
49 58
   }
50 59
   
51 60
 }

+ 1 - 3
src/Muzich/CoreBundle/Resources/public/js/muzich.js Wyświetl plik

@@ -1526,8 +1526,6 @@ $(document).ready(function(){
1526 1526
       function(){}
1527 1527
     );
1528 1528
     
1529
-    if (response.status === 'success')
1530
-    {
1531 1529
       // Si on en est a la première étape la réponse sera des données récupérés auprès
1532 1530
       // des apis
1533 1531
       if ($('input#form_add_step').val() == '1')
@@ -1568,7 +1566,7 @@ $(document).ready(function(){
1568 1566
           form_add_reinit();
1569 1567
         }
1570 1568
       }
1571
-    }
1569
+    
1572 1570
     
1573 1571
     return false;
1574 1572
   });

+ 2 - 2
src/Muzich/FavoriteBundle/Controller/FavoriteController.php Wyświetl plik

@@ -70,7 +70,7 @@ class FavoriteController extends Controller
70 70
       {
71 71
         // On déclenche les événements liés a cette action
72 72
         $event = new EventElement($this->container);
73
-        $event->addedToFavorites($element);
73
+        $event->addedToFavorites($element, $user);
74 74
         $em->persist($user);
75 75
       }
76 76
       
@@ -134,7 +134,7 @@ class FavoriteController extends Controller
134 134
       {
135 135
         // On déclenche les événements liés a cette action
136 136
         $event = new EventElement($this->container);
137
-        $event->removedFromFavorites($element);
137
+        $event->removedFromFavorites($element, $user);
138 138
       }
139 139
       
140 140
       // On signale que cet user a modifié sa liste de favoris