/** * Edition d'événement * @param $idEvent * @param Request $request * @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response */ public function eventEditAction($idEvent, Request $request) { // Formulaire barre de recherche (header) $formSearchBar = $this->createForm(new SearchType()); $user = $this->getUser(); if (!$user->hasRole('ROLE_ADMIN') and !$user->hasRole('ROLE_SUPER_ADMIN')) { $this->addFlash('warning', 'Permission refusée'); return $this->redirect($this->generateUrl('agil_hall_homepage')); } $em = $this->getDoctrine()->getManager(); $event = $em->getRepository('AGILHallBundle:AgilEvent')->find($idEvent); $files = new ArrayCollection(); /*$fs = new Filesystem(); foreach($event->getPhotos() as $photo) { $files->add(new UploadedFile($photo->getPhotoUrl(), $photo->getPhotoTitle(), null, 1000000, null, false)); }*/ $form = $this->createForm(new EditEventType($files), null); $form->handleRequest($request); if ($form->isValid()) { if ($event->getEventTitle() != $form->get('eventTitle')->getData()) { $eventTmp = $em->getRepository('AGILHallBundle:AgilEvent')->findBy(array('eventTitle' => $form->get('eventTitle')->getData())); if (!empty($eventTmp)) { $this->addFlash('warning', 'Titre de l\'événement déjà utilisé.'); return $this->redirect($this->generateUrl('agil_hall_event_edit')); } } $event->setEventTitle($form->get('eventTitle')->getData()); $event->setEventText($form->get('eventText')->getData()); $event->setEventDateEnd($form->get('eventDateEnd')->getData()); $event->setEventDate($form->get('eventDate')->getData()); // les tags $tagsArrayString = explode(" ", $form->get('tags')->getData()); $tagsManager = $this->get('agil_default.tags'); foreach ($tagsArrayString as $tag) { $tagsManager->insertTag($tag); } $tagsManager->insertDone(); $event->removeTags(); $em->persist($event); $em->flush(); $event->setTags($em->getRepository("AGILDefaultBundle:AgilTag")->findByTagName($tagsArrayString)); if ($form->get('photos')->getData()[0] != null) { $nbInputs = 0; $inputPhoto = $form->get('photos')->getData()[$nbInputs]; while (!empty($inputPhoto)) { $array = new ArrayCollection(); foreach ($inputPhoto as $item) { if ($item != null && $item != "") { if ($item->guessExtension() != "jpeg" && $item->guessExtension() != "png" && $item->guessExtension() != "gif") { $this->addFlash('warning', 'Erreur ! Le format de l\'image ne convient pas ! (formats autorisés: jpeg,png,gif)'); return $this->redirect($this->generateUrl('agil_hall_event_edit')); } else { if ($item->getClientSize() > 1024000) { $this->addFlash('warning', 'Erreur ! La taille de l\'image dépasse la limite ! (limite autorisée: 1Mo)'); return $this->redirect($this->generateUrl('agil_hall_event_edit')); } } $fileName = md5(uniqid()) . '.' . $item->guessExtension(); $dir = $this->container->getParameter('kernel.root_dir') . '/../web/img/hall'; $item->move($dir, $fileName); $photo = new AgilPhoto(); $photo->setPhotoUrl($fileName); $photo->setPhotoTitle($item->getClientOriginalName()); $array->add($photo); $photo->setEvent($event); $em->persist($photo); } } $nbInputs++; if (!empty($form->get('photos')->getData()[$nbInputs])) { $inputPhoto = $form->get('photos')->getData()[$nbInputs]; } else { $inputPhoto = null; } } $event->setImages($array); } $em->persist($event); $em->flush(); $this->addFlash('success', 'Evénement modifié'); return $this->redirect($this->generateUrl('agil_hall_event', array('idEvent' => $event->getEventId()))); } $form->get('eventTitle')->setData($event->getEventTitle()); $form->get('eventText')->setData($event->getEventText()); $form->get('eventDate')->setData($event->getEventDate()); $form->get('eventDateEnd')->setData($event->getEventDateEnd()); //$form->get('photos')->setData($event->getPhotos()); $tagArray = ""; foreach ($event->getTags() as $tag) { $tagArray .= $tag->getTagName() . " "; } $form->get('tags')->setData($tagArray); return $this->render('AGILHallBundle:Event:event_edit.html.twig', array('form' => $form->createView(), 'event' => $event, 'formSearchBar' => $formSearchBar->createView())); }
/** * @param AgilPhoto $photo * @return $this */ public function addPhoto(AgilPhoto $photo) { $this->photos[] = $photo; $photo->setEvent($this); return $this; }