private function upload($deleteIfExist = false, $options = array()) { $document = new Document(); if (count($options)) { $relatedDocument = new RelatedDocument(); $relatedDocument->setDocument($document); $document->setRelation($relatedDocument); if (key_exists('etude', $options)) { $relatedDocument->setEtude($options['etude']); } if (key_exists('etudiant', $options)) { $relatedDocument->setMembre($options['etudiant']); } } $form = $this->createForm(new DocumentType(), $document, $options); if ($this->get('request')->getMethod() == 'POST') { $form->handleRequest($this->get('request')); if ($form->isValid()) { $documentManager = $this->get('Mgate.document_manager'); $documentManager->uploadDocument($document, null, $deleteIfExist); return false; } } return $this->render('MgatePubliBundle:Document:upload.html.twig', array('form' => $form->createView())); }
/** * @Security("has_role('ROLE_SUIVEUR')") */ public function modifierAction($id) { $em = $this->getDoctrine()->getManager(); $documentManager = $this->get('Mgate.document_manager'); if (!($membre = $em->getRepository('Mgate\\PersonneBundle\\Entity\\Membre')->find($id))) { $membre = new Membre(); $now = new \DateTime('now'); $now->modify('+ 3 year'); $membre->setPromotion($now->format('Y')); $now = new \DateTime('now'); $now->modify('- 20 year'); $membre->setDateDeNaissance($now); } // Mail étudiant if (!$membre->getEmailEMSE()) { $email_etu_service = $this->container->get('Mgate.email_etu'); $membre->setEmailEMSE($email_etu_service->getEmailEtu($membre)); } $form = $this->createForm(new MembreType(), $membre); $deleteForm = $this->createDeleteForm($id); $mandatsToRemove = $membre->getMandats()->toArray(); $form = $this->createForm(new MembreType(), $membre); if ($this->get('request')->getMethod() == 'POST') { $form->handleRequest($this->get('request')); $photoUpload = $form->get('photo')->getData(); if ($form->isValid()) { if ($membre->getPersonne()) { // Photo de l'étudiant $path = $membre->getPromotion() . '/' . preg_replace('#[^a-zA-Z0-9ÁÀÂÄÉÈÊËÍÌÎÏÓÒÔÖÚÙÛÜáàâäéèêëíìîïóòôöúùûüÇç\\-_]#', '_', mb_strtolower($membre->getPersonne()->getNom(), 'UTF-8')) . '_' . preg_replace('#[^a-zA-Z0-9ÁÀÂÄÉÈÊËÍÌÎÏÓÒÔÖÚÙÛÜáàâäéèêëíìîïóòôöúùûüÇç\\-_]#', '_', mb_strtolower($membre->getPersonne()->getPrenom(), 'UTF-8')); } else { $path = ''; } $promo = $membre->getPromotion(); /* * Traitement de l'image de profil */ if ($membre->getPersonne()) { $authorizedMIMEType = array('image/jpeg', 'image/png', 'image/bmp'); $photoInformation = new RelatedDocument(); $photoInformation->setMembre($membre); $name = 'Photo - ' . $membre->getIdentifiant() . ' - ' . $membre->getPersonne()->getPrenomNom(); if ($photoUpload) { $document = $documentManager->uploadDocumentFromFile($photoUpload, $authorizedMIMEType, $name, $photoInformation, true); $membre->setPhotoURI($document->getWebPath()); } elseif (!$membre->getPhotoURI() && $promo !== null && $membre->getPersonne()) { // Spécifique EMSE $ressourceURL = 'http://ismin.emse.fr/ismin/Photos/P' . urlencode($path); $headers = get_headers($ressourceURL); if (preg_match('#200#', $headers[0])) { $document = $documentManager->uploadDocumentFromUrl($ressourceURL, $authorizedMIMEType, $name, $photoInformation, true); $membre->setPhotoURI($document->getWebPath()); } } } /* * Traitement des postes */ if ($this->get('request')->get('add')) { $mandatNew = new Mandat(); $poste = $em->getRepository('Mgate\\PersonneBundle\\Entity\\Poste')->findOneBy(array('intitule' => 'Membre')); $dt = new \DateTime('now'); $dtl = clone $dt; $dtl->modify('+1 year'); if ($poste) { $mandatNew->setPoste($poste); } $mandatNew->setMembre($membre); $mandatNew->setDebutMandat($dt); $mandatNew->setFinMandat($dtl); $membre->addMandat($mandatNew); } if (!$membre->getIdentifiant()) { $initial = substr($membre->getPersonne()->getPrenom(), 0, 1) . substr($membre->getPersonne()->getNom(), 0, 1); $ident = count($em->getRepository('Mgate\\PersonneBundle\\Entity\\Membre')->findBy(array('identifiant' => $initial))) + 1; while ($em->getRepository('Mgate\\PersonneBundle\\Entity\\Membre')->findOneBy(array('identifiant' => $initial . $ident))) { ++$ident; } $membre->setIdentifiant(strtoupper($initial . $ident)); } if (isset($now)) { // Si c'est un nouveau membre et qu'on ajoute un poste $em->persist($membre); $em->flush(); return $this->redirect($this->generateUrl('MgatePersonne_membre_modifier', array('id' => $membre->getId()))); } // Suppression des mandat à supprimer //Recherche des mandats supprimés foreach ($membre->getMandats() as $mandat) { $key = array_search($mandat, $mandatsToRemove); if ($key !== false) { array_splice($mandatsToRemove, $key, 1); } } //Supression de la BDD foreach ($mandatsToRemove as $mandat) { $em->remove($mandat); } $em->persist($membre); // persist $etude / $form->getData() $em->flush(); $form = $this->createForm(new MembreType(), $membre); } } return $this->render('MgatePersonneBundle:Membre:modifier.html.twig', array('form' => $form->createView(), 'delete_form' => $deleteForm->createView(), 'photoURI' => $membre->getPhotoURI())); }