Browse Source

Ajout de commentaires, nettoyage code, petites refactorisations.

bastien 12 years ago
parent
commit
0f1d9f77a1

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

@@ -14,8 +14,14 @@ use Symfony\Component\HttpFoundation\RedirectResponse;
14 14
 
15 15
 class CoreController extends Controller
16 16
 {
17
-  
18
-  public function changeLanguageAction($language, $redirect)
17
+
18
+  /**
19
+   * Action permettant de changer le language
20
+   *
21
+   * @param string $language
22
+   * @return RedirectResponse
23
+   */
24
+  public function changeLanguageAction($language)
19 25
   {
20 26
     if($language != null)
21 27
     {
@@ -25,7 +31,7 @@ class CoreController extends Controller
25 31
     
26 32
     $url_referer = $this->container->get('request')->headers->get('referer');
27 33
     
28
-    // On effectue un contrôl un peu sépcial:
34
+    // On effectue un contrôle un peu spécial:
29 35
     // Si la page de demande était la page de connexion (hello)
30 36
     if (
31 37
       $this->generateUrl('index', array('_locale' => $old), true) == $url_referer
@@ -63,6 +69,8 @@ class CoreController extends Controller
63 69
   }
64 70
   
65 71
   /**
72
+   * Cette action permet a un utilisateur de suivre ou de ne plus suivre
73
+   * un utilisateur ou un groupe.
66 74
    * 
67 75
    * @param string $type
68 76
    * @param int $id
@@ -76,7 +84,8 @@ class CoreController extends Controller
76 84
     {
77 85
       throw $this->createNotFoundException();
78 86
     }
79
-    
87
+
88
+    // On tente de récupérer l'enregistrement FollowUser / FollowGroup
80 89
     $em = $this->getDoctrine()->getEntityManager();
81 90
     $Follow = $em
82 91
       ->getRepository('MuzichCoreBundle:Follow' . ucfirst($type))
@@ -87,22 +96,25 @@ class CoreController extends Controller
87 96
         )
88 97
       )
89 98
     ;
90
-    
99
+
100
+    // Si il existe déjà c'est qu'il ne veut plus suivre
91 101
     if ($Follow)
92 102
     {
93 103
       // L'utilisateur suis déjà, on doit détruire l'entité
94 104
       $em->remove($Follow);
95 105
       $em->flush();
96 106
     }
107
+    // Sinon, c'est qu'il veut le suivre
97 108
     else
98 109
     {
110
+      // On récupére l'entité a suivre
99 111
       $followed = $em->getRepository('MuzichCoreBundle:'.ucfirst($type))->find($id);
100 112
 
101 113
       if (!$followed) {
102 114
           throw $this->createNotFoundException('No '.$type.' found for id '.$id);
103 115
       }
104 116
       
105
-      
117
+      // On instancie te renseigne l'objet Follow****
106 118
       if ($type == 'user') { $Follow = new FollowUser(); }
107 119
       else { $Follow = new FollowGroup(); }
108 120
       $Follow->setFollower($user);
@@ -123,7 +135,10 @@ class CoreController extends Controller
123 135
       return $this->redirect($this->container->get('request')->headers->get('referer'));
124 136
     }
125 137
   }
126
-  
138
+
139
+  /**
140
+   *  Procédure d'ajout d'un element
141
+   */
127 142
   public function elementAddAction()
128 143
   {
129 144
     $user = $this->getUser();
@@ -145,7 +160,8 @@ class CoreController extends Controller
145 160
       {
146 161
         $data = $form->getData();
147 162
         $element = new Element();
148
-        
163
+
164
+        // On utilise le gestionnaire d'élément
149 165
         $factory = new ElementManager($element, $em, $this->container);
150 166
         $factory->proceedFill($data, $user);
151 167
         
@@ -180,10 +196,4 @@ class CoreController extends Controller
180 196
     
181 197
   }
182 198
   
183
-//  protected function proceedElement(Element $element)
184
-//  {
185
-//    $factory = new ElementFactory();
186
-//    $factory->proceed($element, $form->getData());
187
-//  }
188
-  
189 199
 }

+ 5 - 3
src/Muzich/CoreBundle/Controller/SearchController.php View File

@@ -7,7 +7,6 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
7 7
 
8 8
 use Muzich\CoreBundle\Searcher\ElementSearcher;
9 9
 use Muzich\CoreBundle\Form\Search\ElementSearchForm;
10
-use Doctrine\ORM\Query;
11 10
 
12 11
 class SearchController extends Controller
13 12
 {
@@ -20,7 +19,7 @@ class SearchController extends Controller
20 19
   public function searchElementsAction()
21 20
   {
22 21
     $request = $this->getRequest();
23
-    $search_object = $this->getElementSearcher($this->getUser()->getId());
22
+    $search_object = $this->getElementSearcher();
24 23
     
25 24
     $search_form = $this->createForm(
26 25
       new ElementSearchForm(), 
@@ -31,10 +30,13 @@ class SearchController extends Controller
31 30
     if ($request->getMethod() == 'POST')
32 31
     {
33 32
       $search_form->bindRequest($request);
33
+      // Si le formulaire est valide
34 34
       if ($search_form->isValid())
35 35
       {
36
+        // On met a jour l'objet avec les nouveaux paramétres saisie dans le form
36 37
         $search_object->update($search_form->getData());
37
-        $this->setElementSearcher($search_object);
38
+        // Et on met a jour la "mémoire" de la recherche
39
+        $this->setElementSearcherParams($search_object->getParams());
38 40
       }
39 41
     }
40 42
     

+ 7 - 1
src/Muzich/CoreBundle/ElementFactory/ElementManager.php View File

@@ -43,7 +43,13 @@ class ElementManager
43 43
       'tags' => array()
44 44
     );
45 45
   }
46
-  
46
+
47
+  /**
48
+   * 
49
+   * @param Element $element
50
+   * @param EntityManager $em
51
+   * @param Container $container
52
+   */
47 53
   public function __construct(Element $element, EntityManager $em, Container $container)
48 54
   {
49 55
     $this->element = $element;

+ 0 - 1
src/Muzich/CoreBundle/Managers/GroupManager.php View File

@@ -38,7 +38,6 @@ class GroupManager
38 38
    * Procédure chargé de construire le contenu tags.
39 39
    * 
40 40
    * @param array $tags_ids
41
-   * @param User $owner
42 41
    */
43 42
   public function proceedTags($tags_ids)
44 43
   {

+ 2 - 2
src/Muzich/CoreBundle/Repository/GroupRepository.php View File

@@ -8,8 +8,8 @@ class GroupRepository extends EntityRepository
8 8
 {
9 9
   
10 10
   /**
11
-   * Retourne un tableau d'user correspondant a un chaine de caractère
12
-   * La recherche est effectué sur le username.
11
+   * Retourne un tableau de groupe correspondant a un chaine de caractère
12
+   * La recherche est effectué sur le name.
13 13
    * 
14 14
    * @param type $string
15 15
    * @return Doctrine\ORM\Query

+ 1 - 1
src/Muzich/CoreBundle/Repository/TagRepository.php View File

@@ -8,7 +8,7 @@ class TagRepository extends EntityRepository
8 8
 {
9 9
   
10 10
   /**
11
-   * Retourne les tags
11
+   * Retourne tous les tags connus sous forme d'un tableau
12 12
    * 
13 13
    * @return array id => name
14 14
    */

+ 16 - 11
src/Muzich/CoreBundle/Repository/UserRepository.php View File

@@ -52,15 +52,6 @@ class UserRepository extends EntityRepository
52 52
       $join   .= ' LEFT JOIN u.groups_owned og';
53 53
     }
54 54
     
55
-//    if (array_key_exists('followed_user_id', $join_list))
56
-//    {
57
-//      $select .= ', fu, fu_u';
58
-//      $join   .= ' LEFT JOIN u.followeds_users fu WITH fu.followed = :fuid LEFT JOIN fu.followed fu_u';
59
-//      $parameters = array_merge($parameters, array(
60
-//        'fuid' => $join_list['followed_user_id']
61
-//      ));
62
-//    }
63
-    
64 55
     return $this->getEntityManager()
65 56
       ->createQuery("
66 57
         SELECT $select FROM MuzichCoreBundle:User u
@@ -140,7 +131,14 @@ class UserRepository extends EntityRepository
140 131
       ))
141 132
     ;
142 133
   }
143
-  
134
+
135
+  /**
136
+   * Retourne vrai si follower suis followed
137
+   *
138
+   * @param int $follower_id
139
+   * @param int $followed_id
140
+   * @return boolean
141
+   */
144 142
   public function isFollowingUser($follower_id, $followed_id)
145 143
   {
146 144
     $result = $this->getEntityManager()
@@ -157,7 +155,14 @@ class UserRepository extends EntityRepository
157 155
     
158 156
     return $result[1];
159 157
   }
160
-  
158
+
159
+  /**
160
+   * Retourne vrai si follower suis le groupe
161
+   *
162
+   * @param int $follower_id
163
+   * @param int $group_id
164
+   * @return boolean
165
+   */
161 166
   public function isFollowingGroup($follower_id, $group_id)
162 167
   {
163 168
     $result = $this->getEntityManager()

+ 32 - 7
src/Muzich/CoreBundle/Searcher/ElementSearcher.php View File

@@ -133,20 +133,45 @@ class ElementSearcher extends Searcher implements SearcherInterface
133 133
   {
134 134
     return $this->favorite;
135 135
   }
136
-  
136
+
137 137
   /**
138
-   * Retourne les elements correspondant a la recherche
139
-   * 
138
+   * Construction de l'objet Query
139
+   *
140 140
    * @param Registry $doctrine
141 141
    * @return collection
142 142
    */
143
-  public function doSearch(Registry $doctrine, $user_id)
143
+  protected function constructQueryObject(Registry $doctrine, $user_id)
144 144
   {
145
-    return $doctrine
145
+    $this->setQuery($doctrine
146 146
       ->getRepository('MuzichCoreBundle:Element')
147
-      ->findBySearch($this, $user_id)
148
-      ->execute()
147
+      ->findBySearch($this, $user_id))
149 148
     ;
150 149
   }
151 150
   
151
+  /**
152
+   * Retourne l'objet Query
153
+   * 
154
+   * @param Registry $doctrine
155
+   * @return collection
156
+   */
157
+  public function getQuery(Registry $doctrine, $user_id)
158
+  {
159
+    if (!$this->query)
160
+    {
161
+      $this->constructQueryObject($doctrine, $user_id);
162
+    }
163
+    return $this->query;
164
+  }
165
+
166
+  /**
167
+   * Retourne les elements correspondant a la recherche
168
+   *
169
+   * @param Registry $doctrine
170
+   * @return collection
171
+   */
172
+  public function getElements(Registry $doctrine, $user_id)
173
+  {
174
+    return $this->getQuery($doctrine, $user_id)->execute();
175
+  }
176
+  
152 177
 }

+ 22 - 1
src/Muzich/CoreBundle/Searcher/Searcher.php View File

@@ -2,12 +2,22 @@
2 2
 
3 3
 namespace Muzich\CoreBundle\Searcher;
4 4
 
5
+use Doctrine\ORM\Query;
6
+use Symfony\Bundle\DoctrineBundle\Registry;
7
+
5 8
 /**
6 9
  * Objet utiliser pour cadrer la recherche.
7 10
  * 
8 11
  */
9
-class Searcher
12
+abstract class Searcher
10 13
 {
14
+  /**
15
+   * Query est l'objet requete correspondant a la recherche
16
+   *
17
+   * @var Query
18
+   */
19
+  protected $query = null;
20
+
11 21
   protected function checkParams($params, $neededs)
12 22
   {
13 23
     foreach ($neededs as $config_id => $message)
@@ -33,4 +43,15 @@ class Searcher
33 43
       }
34 44
     }
35 45
   }
46
+
47
+  protected function setQuery(Query $query)
48
+  {
49
+    $this->query = $query;
50
+  }
51
+
52
+  public function getQuery(Registry $doctrine, $user_id)
53
+  {
54
+    return $this->query;
55
+  }
56
+
36 57
 }

+ 0 - 16
src/Muzich/CoreBundle/Searcher/SearcherInterface.php View File

@@ -24,20 +24,4 @@ interface SearcherInterface
24 24
    */
25 25
   public function getParams();
26 26
   
27
-//  /**
28
-//   * Procédure qui construit la requete.
29
-//   */
30
-//  public function constructQueryObject();
31
-//  
32
-//  /**
33
-//   * Récupération de l'objet requete, pour ajouter des JOIN 
34
-//   * par exemple.
35
-//   */
36
-//  public function getQueryObject();
37
-//  
38
-//  /**
39
-//   * Récupération des résultats.
40
-//   */
41
-//  public function getResults();
42
-  
43 27
 }

+ 8 - 8
src/Muzich/CoreBundle/lib/Controller.php View File

@@ -25,23 +25,22 @@ class Controller extends BaseController
25 25
   }
26 26
     
27 27
   /**
28
-   * Met a jour l'objet ElementSearcher (en réallité on met a jour les
29
-   * paramètres en sessions).
28
+   * Met a jour les parametres de ElementSearcher pour la "mémoire" de la
29
+   * recherche
30 30
    * 
31
-   * @param ElementSearcher $es 
31
+   * @param array $params
32 32
    */
33
-  protected function setElementSearcher(ElementSearcher $es)
33
+  protected function setElementSearcherParams($params)
34 34
   {
35
-    $this->get("session")->set('user.element_search.params', $es->getParams());
35
+    $this->get("session")->set('user.element_search.params', $params);
36 36
   }
37 37
   
38 38
   /**
39 39
    * Retourn l'objet ElementSearcher en cours.
40 40
    * 
41
-   * @param int $user_id
42 41
    * @return  ElementSearcher
43 42
    */
44
-  protected function getElementSearcher($user_id)
43
+  protected function getElementSearcher()
45 44
   {
46 45
     $session = $this->get("session");
47 46
     // Si l'objet n'existe pas encore, a t-on déjà des paramètres de recherche
@@ -53,7 +52,7 @@ class Controller extends BaseController
53 52
       $this->ElementSearcher->init(array(
54 53
         'tags' => $this->getDoctrine()->getRepository('MuzichCoreBundle:User')
55 54
         // TODO: 3: CONFIG !!
56
-        ->getTagIdsFavorites($user_id, 3)
55
+        ->getTagIdsFavorites($this->getUserId(), 3)
57 56
       ));
58 57
 
59 58
       // Et on met en session les paramètres
@@ -63,6 +62,7 @@ class Controller extends BaseController
63 62
     {
64 63
       // Des paramètres existes, on fabrique l'objet recherche
65 64
       $this->ElementSearcher = new ElementSearcher();
65
+      // et on l'initatialise avec ces paramétres connus
66 66
       $this->ElementSearcher->init($session->get('user.element_search.params'));
67 67
     }
68 68
     

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

@@ -31,13 +31,15 @@ class FavoriteController extends Controller
31 31
     {
32 32
       throw $this->createNotFoundException();
33 33
     }
34
-    
34
+
35
+    // Si l'élément n'est pas déjà en favoris
35 36
     if (!$em->getRepository('MuzichCoreBundle:UsersElementsFavorites')
36 37
       ->findOneBy(array(
37 38
         'user'    => $user->getId(),
38 39
         'element' => $id
39 40
       )))
40 41
     {
42
+      // On créer un objet 
41 43
       $favorite = new UsersElementsFavorites();
42 44
       $favorite->setUser($user);
43 45
       $favorite->setElement($element);
@@ -69,7 +71,7 @@ class FavoriteController extends Controller
69 71
     
70 72
     return array(
71 73
       'user'     => $this->getUser(),
72
-      'elements' => $search_object->doSearch($this->getDoctrine(), $this->getUserId())
74
+      'elements' => $search_object->getElements($this->getDoctrine(), $this->getUserId())
73 75
     );
74 76
   }
75 77
   
@@ -91,7 +93,7 @@ class FavoriteController extends Controller
91 93
     return array(
92 94
       'user'        => $this->getUser(),
93 95
       'viewed_user' => $viewed_user,
94
-      'elements'    => $search_object->doSearch($this->getDoctrine(), $this->getUserId())
96
+      'elements'    => $search_object->getElements($this->getDoctrine(), $this->getUserId())
95 97
     );
96 98
   }
97 99
   

+ 16 - 17
src/Muzich/GroupBundle/Controller/DefaultController.php View File

@@ -13,7 +13,9 @@ class DefaultController extends Controller
13 13
 {
14 14
   
15 15
   /**
16
-   * 
16
+   * Page listant les groupes possédés par l'utilisateur. Comporte egallement
17
+   * un formulaire pour ajouter un groupe.
18
+   *
17 19
    * @Template()
18 20
    */
19 21
   public function myListAction()
@@ -37,6 +39,9 @@ class DefaultController extends Controller
37 39
   
38 40
   /**
39 41
    * Procédure d'ajout d'un groupe
42
+   *
43
+   * @param Request $request
44
+   * @return redirect|template
40 45
    */
41 46
   public function addAction(Request $request)
42 47
   {
@@ -83,8 +88,12 @@ class DefaultController extends Controller
83 88
   }
84 89
   
85 90
   /**
86
-   * 
91
+   * Modification d'un groupe
92
+   *
87 93
    * @Template()
94
+   * @param Request $request
95
+   * @param string $slug
96
+   * @return array
88 97
    */
89 98
   public function editAction(Request $request, $slug)
90 99
   {
@@ -123,26 +132,16 @@ class DefaultController extends Controller
123 132
   
124 133
   public function updateAction(Request $request, $slug)
125 134
   {
126
-    $user = $this->getUser();
127 135
     $em = $this->getDoctrine()->getEntityManager();
136
+    $group = $this->findGroupWithSlug($slug);
128 137
     
129
-    try {
130
-      
131
-      $group = $this->getDoctrine()
132
-        ->getRepository('MuzichCoreBundle:Group')
133
-        ->findOneBySlug($slug)
134
-        ->getSingleResult()
135
-      ;
136
-      
137
-    } catch (\Doctrine\ORM\NoResultException $e) {
138
-        throw $this->createNotFoundException('Groupe introuvable.');
139
-    }
140
-    
141
-    if ($group->getOwner()->getId() != $user->getId())
138
+    if ($group->getOwner()->getId() != $this->getUserId())
142 139
     {
143 140
       throw $this->createNotFoundException('Vous n\'ête pas le créateur de ce groupe.');
144 141
     }
145
-    
142
+
143
+    // Pour être compatible avec le formulaire, la collection de tags dois être
144
+    // une collection d'id
146 145
     $group->setTagsToIds();
147 146
     
148 147
     $form = $this->createForm(

+ 2 - 2
src/Muzich/HomeBundle/Controller/HomeController.php View File

@@ -20,7 +20,7 @@ class HomeController extends Controller
20 20
    */
21 21
   public function indexAction()
22 22
   {
23
-    $search_object = $this->getElementSearcher($this->getUserId());
23
+    $search_object = $this->getElementSearcher();
24 24
     
25 25
     $search_form = $this->createForm(
26 26
       new ElementSearchForm(), 
@@ -43,7 +43,7 @@ class HomeController extends Controller
43 43
       'user'        => $this->getUser(),
44 44
       'add_form'    => $add_form->createView(),
45 45
       'search_form' => $search_form->createView(),
46
-      'elements'    => $search_object->doSearch($this->getDoctrine(), $this->getUserId())
46
+      'elements'    => $search_object->getElements($this->getDoctrine(), $this->getUserId())
47 47
     );
48 48
   }
49 49
 }

+ 4 - 2
src/Muzich/HomeBundle/Controller/ShowController.php View File

@@ -12,6 +12,7 @@ class ShowController extends Controller
12 12
    * Page public de l'utilisateur demandé.
13 13
    * 
14 14
    * @Template()
15
+   * @param string $slug
15 16
    */
16 17
   public function showUserAction($slug)
17 18
   {
@@ -23,7 +24,7 @@ class ShowController extends Controller
23 24
     
24 25
     return array(
25 26
       'viewed_user' => $viewed_user,
26
-      'elements'    => $search_object->doSearch($this->getDoctrine(), $this->getUserId()),
27
+      'elements'    => $search_object->getElements($this->getDoctrine(), $this->getUserId()),
27 28
       'following'   => $this->getUser()->isFollowingUserByQuery($this->getDoctrine(), $viewed_user->getId()),
28 29
       'user'        => $this->getUser()
29 30
     );
@@ -33,6 +34,7 @@ class ShowController extends Controller
33 34
    * Page publique du groupe demandé.
34 35
    * 
35 36
    * @Template()
37
+   * @param string $slug
36 38
    */
37 39
   public function showGroupAction($slug)
38 40
   {
@@ -45,7 +47,7 @@ class ShowController extends Controller
45 47
     return array(
46 48
       'group'     => $group,
47 49
       'his_group' => ($group->getOwner()->getId() == $this->getUserId()) ? true : false,
48
-      'elements'  => $search_object->doSearch($this->getDoctrine(), $this->getUserId()),
50
+      'elements'  => $search_object->getElements($this->getDoctrine(), $this->getUserId()),
49 51
       'following' => $this->getUser()->isFollowingGroupByQuery($this->getDoctrine(), $group->getId()),
50 52
       'user'      => $this->getUser()
51 53
     );

+ 3 - 1
src/Muzich/MynetworkBundle/Controller/MynetworkController.php View File

@@ -10,7 +10,9 @@ class MynetworkController extends Controller
10 10
 {
11 11
   
12 12
   /**
13
-   * 
13
+   * Page listant les personnes et groupes que l'on suit, ainsi que les 
14
+   * personnes qui nous duivent.
15
+   *
14 16
    * @Template()
15 17
    */
16 18
   public function indexAction()

+ 4 - 0
src/Muzich/UserBundle/Controller/UserController.php View File

@@ -12,6 +12,8 @@ use Muzich\CoreBundle\Form\Tag\TagFavoritesForm;
12 12
 class UserController extends Controller
13 13
 {
14 14
   /**
15
+   * Page de configuration de son compte
16
+   *
15 17
    * @Template()
16 18
    */
17 19
   public function accountAction()
@@ -100,6 +102,8 @@ class UserController extends Controller
100 102
   }
101 103
   
102 104
   /**
105
+   * Page ouverte après l'inscription sur laquelle on propose de saisir ses
106
+   * tags favoris.
103 107
    * 
104 108
    * @Template()
105 109
    */