|
@@ -5,6 +5,8 @@ namespace Muzich\AdminBundle\Controller;
|
5
|
5
|
use Muzich\CoreBundle\lib\Controller;
|
6
|
6
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
|
7
|
7
|
//use Muzich\CoreBundle\Util\TagLike;
|
|
8
|
+use Muzich\CoreBundle\Entity\UsersTagsFavorites;
|
|
9
|
+use Muzich\CoreBundle\Entity\GroupsTagsFavorites;
|
8
|
10
|
|
9
|
11
|
class ModerateController extends Controller
|
10
|
12
|
{
|
|
@@ -168,33 +170,74 @@ class ModerateController extends Controller
|
168
|
170
|
*/
|
169
|
171
|
$em = $this->getDoctrine()->getEntityManager();
|
170
|
172
|
|
171
|
|
- $netags = array();
|
|
173
|
+ // Sur un élément
|
172
|
174
|
foreach ($elements = $this->getDoctrine()->getEntityManager()->createQuery("
|
173
|
175
|
SELECT e, t FROM MuzichCoreBundle:Element e
|
174
|
176
|
JOIN e.tags t
|
175
|
177
|
WHERE t.id = :tid
|
176
|
178
|
")
|
177
|
|
- ->setParameter('tid', $tag_new_id)
|
|
179
|
+ ->setParameter('tid', $tag_id)
|
178
|
180
|
->getResult() as $element)
|
179
|
181
|
{
|
180
|
|
-
|
181
|
|
- // TODO: a faire ...
|
182
|
|
-// foreach ($element->getTags() as $etag)
|
183
|
|
-// {
|
184
|
|
-// if ($etag->getId() != $tag->getId())
|
185
|
|
-// {
|
186
|
|
-// $netags[] = $etag;
|
187
|
|
-// }
|
188
|
|
-// }
|
189
|
|
-// $netags[] = $new_tag;
|
190
|
|
-//
|
191
|
|
-// $element->setTags(array());
|
192
|
|
-// $em->persist($element);
|
193
|
|
-// $em->flush();
|
194
|
|
-//
|
195
|
|
-// $element->setTags($netags);
|
196
|
|
-// $em->persist($element);
|
197
|
|
-// $em->flush();
|
|
182
|
+ // Pour chaque elements lié a ce tag
|
|
183
|
+ // On ajoute un lien vers le nouveau tag si il n'en n'a pas déjà
|
|
184
|
+ if (!$element->hasTag($new_tag))
|
|
185
|
+ {
|
|
186
|
+ $element->addTag($new_tag);
|
|
187
|
+ $em->persist($element);
|
|
188
|
+ }
|
|
189
|
+ }
|
|
190
|
+
|
|
191
|
+ // Tag favoris
|
|
192
|
+ foreach ($favorites = $this->getDoctrine()->getEntityManager()->createQuery("
|
|
193
|
+ SELECT f FROM MuzichCoreBundle:UsersTagsFavorites f
|
|
194
|
+ WHERE f.tag = :tid
|
|
195
|
+ ")
|
|
196
|
+ ->setParameter('tid', $tag_id)
|
|
197
|
+ ->getResult() as $fav)
|
|
198
|
+ {
|
|
199
|
+ // Pour chaque favoris utilisant ce tag on regarde si l'utilisateur
|
|
200
|
+ // n'a pas déjà le nouveau tag en favoris.
|
|
201
|
+ if (!$this->getDoctrine()->getEntityManager()->createQuery("
|
|
202
|
+ SELECT COUNT(f.id) FROM MuzichCoreBundle:UsersTagsFavorites f
|
|
203
|
+ WHERE f.tag = :tid AND f.user = :uid
|
|
204
|
+ ")
|
|
205
|
+ ->setParameters(array('tid' => $tag_new_id, 'uid' => $fav->getUser()->getId()))
|
|
206
|
+ ->getSingleScalarResult())
|
|
207
|
+ {
|
|
208
|
+ $new_fav = new UsersTagsFavorites();
|
|
209
|
+ $new_fav->setTag($new_tag);
|
|
210
|
+ $new_fav->setUser($fav->getUser());
|
|
211
|
+ $new_fav->setPosition($fav->getPosition());
|
|
212
|
+ $em->persist($new_fav);
|
|
213
|
+ }
|
|
214
|
+ $em->remove($fav);
|
|
215
|
+ }
|
|
216
|
+
|
|
217
|
+ // groupe
|
|
218
|
+ foreach ($this->getDoctrine()->getEntityManager()->createQuery("
|
|
219
|
+ SELECT f FROM MuzichCoreBundle:GroupsTagsFavorites f
|
|
220
|
+ WHERE f.tag = :tid
|
|
221
|
+ ")
|
|
222
|
+ ->setParameter('tid', $tag_id)
|
|
223
|
+ ->getResult() as $fav)
|
|
224
|
+ {
|
|
225
|
+ // Pour chaque favoris utilisant ce tag on regarde si le groupe
|
|
226
|
+ // n'a pas déjà le nouveau tag en favoris.
|
|
227
|
+ if (!$this->getDoctrine()->getEntityManager()->createQuery("
|
|
228
|
+ SELECT COUNT(f.id) FROM MuzichCoreBundle:GroupsTagsFavorites f
|
|
229
|
+ WHERE f.tag = :tid AND f.group = :gid
|
|
230
|
+ ")
|
|
231
|
+ ->setParameters(array('tid' => $tag_new_id, 'gid' => $fav->getGroup()->getId()))
|
|
232
|
+ ->getSingleScalarResult())
|
|
233
|
+ {
|
|
234
|
+ $new_fav = new GroupsTagsFavorites();
|
|
235
|
+ $new_fav->setTag($new_tag);
|
|
236
|
+ $new_fav->setGroup($fav->getGroup());
|
|
237
|
+ $new_fav->setPosition($fav->getPosition());
|
|
238
|
+ $em->persist($new_fav);
|
|
239
|
+ }
|
|
240
|
+ $em->remove($fav);
|
198
|
241
|
}
|
199
|
242
|
|
200
|
243
|
$em->remove($tag);
|