Ejemplo n.º 1
0
 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()));
 }
Ejemplo n.º 2
0
 /**
  * @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()));
 }