Browse Source

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

Bastien Sevajol 12 years ago
parent
commit
980257ab21

+ 4 - 3
src/Muzich/CoreBundle/Command/RecalculateReputationCommand.php View File

88
       $count_favs = 0;
88
       $count_favs = 0;
89
       $fav = $em->createQuery(
89
       $fav = $em->createQuery(
90
         "SELECT COUNT(f) FROM MuzichCoreBundle:UsersElementsFavorites f"
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
       )->setParameter('uid', $user->getId())
93
       )->setParameter('uid', $user->getId())
94
        ->getScalarResult()      
94
        ->getScalarResult()      
95
       ;
95
       ;
109
       $count_follow = 0;
109
       $count_follow = 0;
110
       $fol = $em->createQuery(
110
       $fol = $em->createQuery(
111
         "SELECT COUNT(f) FROM MuzichCoreBundle:FollowUser f"
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
       )->setParameter('uid', $user->getId())
114
       )->setParameter('uid', $user->getId())
114
        ->getScalarResult()      
115
        ->getScalarResult()      
115
       ;
116
       ;

+ 1 - 1
src/Muzich/CoreBundle/Controller/CoreController.php View File

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

+ 17 - 8
src/Muzich/CoreBundle/Propagator/EventElement.php View File

12
 use Muzich\CoreBundle\Entity\ElementTagsProposition;
12
 use Muzich\CoreBundle\Entity\ElementTagsProposition;
13
 use Muzich\CoreBundle\Managers\EventArchiveManager;
13
 use Muzich\CoreBundle\Managers\EventArchiveManager;
14
 use Muzich\CoreBundle\Entity\EventArchive;
14
 use Muzich\CoreBundle\Entity\EventArchive;
15
+use Muzich\CoreBundle\Security\Context as SecurityContext;
15
 
16
 
16
 /**
17
 /**
17
  * Propagateur d'événement concernant les éléments
18
  * Propagateur d'événement concernant les éléments
102
    * 
103
    * 
103
    * @param Element $element 
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
     $ur = new UserReputation($element->getOwner());
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
     $uea = new UserEventAction($element->getOwner(), $this->container);
117
     $uea = new UserEventAction($element->getOwner(), $this->container);
113
     $event = $uea->proceed(Event::TYPE_FAV_ADDED_ELEMENT, $element->getId());
118
     $event = $uea->proceed(Event::TYPE_FAV_ADDED_ELEMENT, $element->getId());
119
    * 
124
    * 
120
    * @param Element $element 
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
     $ur = new UserReputation($element->getOwner());
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 View File

7
 use Muzich\CoreBundle\Actions\User\Event as UserEventAction;
7
 use Muzich\CoreBundle\Actions\User\Event as UserEventAction;
8
 use Muzich\CoreBundle\Actions\User\Reputation as UserReputation;
8
 use Muzich\CoreBundle\Actions\User\Reputation as UserReputation;
9
 use Muzich\CoreBundle\Entity\Event;
9
 use Muzich\CoreBundle\Entity\Event;
10
+use Muzich\CoreBundle\Security\Context as SecurityContext;
10
 
11
 
11
 /**
12
 /**
12
  * Propagateur d'événement concernant les users
13
  * Propagateur d'événement concernant les users
25
   {
26
   {
26
     // Points de réputation
27
     // Points de réputation
27
     $ur = new UserReputation($user);
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
     // Event de suivis
37
     // Event de suivis
33
     $uea = new UserEventAction($user, $this->container);
38
     $uea = new UserEventAction($user, $this->container);
40
    * 
45
    * 
41
    * @param User $user Utilisateur plus suivis
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
     $ur = new UserReputation($user);
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 View File

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

+ 2 - 2
src/Muzich/FavoriteBundle/Controller/FavoriteController.php View File

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