/** * @Route( * "/add/comments/{userId}/{dropzoneId}", * name="innova_collecticiel_add_comment_for_docs", * requirements={"userId" = "\d+", "dropzoneId" = "\d+"} * ) * @ParamConverter("user",class="ClarolineCoreBundle:User",options={"id" = "userId"}) * @ParamConverter("dropzone", class="InnovaCollecticielBundle:Dropzone", options={"id" = "dropzoneId"}) * @Method("POST") * @Template() */ public function addCommentForDocsInnovaAction(User $user, Dropzone $dropzone) { // Saisie des commentaires à la volée. // Récupération de l'USER $user = $this->get('security.context')->getToken()->getUser(); $em = $this->getDoctrine()->getManager(); $comment = new Comment(); $form = $this->get('form.factory')->createBuilder(new CommentType(), $comment)->getForm(); // Récupération de la saisie du commentaire $request = $this->get('request'); if ($request->isMethod('POST')) { $form->handleRequest($request); if ($form->isValid()) { // Récupération du commentaire $commentText = $comment->getCommentText(); // Récupération des documents sur lesquels porte le commentaire saisi $docs = $this->getRequest()->request->get('docs'); // Récupération des ID des documents $explodeDocIdS = explode('|', $docs); // Parcours du tableau des documents foreach ($explodeDocIdS as $documentId) { // Je ne prends pas le dernier élément du tableau if (is_numeric($documentId)) { // Création du nouveau commentaire $document = $this->getDoctrine()->getRepository('InnovaCollecticielBundle:Document')->find($documentId); // Valorisation du commentaire $comment = new Comment(); $comment->setDocument($document); $comment->setCommentText($commentText); $comment->setUser($user); // Insertion en base du commentaire $em->persist($comment); // Envoi notification. InnovaERV $usersIds = []; // Ici, on récupère le créateur du collecticiel = l'admin if ($document->getType() === 'url') { $userCreator = $document->getDrop()->getDropzone()->getResourceNode()->getCreator()->getId(); } else { $userCreator = $document->getResourceNode()->getCreator()->getId(); } // Ici, on récupère celui qui vient de déposer le nouveau document $userDropDocument = $document->getDrop()->getUser()->getId(); $userSenderDocument = $document->getSender()->getId(); if ($userCreator === $userSenderDocument) { // Ici avertir l'étudiant qui a travaillé sur ce collecticiel $usersIds[] = $userDropDocument; } else { // Ici avertir celui a qui créé le collecticiel $usersIds[] = $userCreator; } $event = new LogDropzoneAddCommentEvent($dropzone, $dropzone->getManualState(), $usersIds, $comment); $this->get('event_dispatcher')->dispatch('log', $event); } } $em->flush(); } } // Ajouter la création du log de la création du commentaire. InnovaERV. $unitOfWork = $em->getUnitOfWork(); $unitOfWork->computeChangeSets(); $dropzoneChangeSet = $unitOfWork->getEntityChangeSet($dropzone); $event = new LogCommentCreateEvent($dropzone, $dropzoneChangeSet, $comment); $this->dispatch($event); // Redirection vers les demandes adressées. InnovaERV. return $this->redirect($this->generateUrl('innova_collecticiel_drops_awaiting', ['resourceId' => $dropzone->getId()])); }
/** * @Route( * "/{documentId}/add/comments/{userId}/{dropzoneId}/{correctionId}", * name="innova_collecticiel_add_comment", * requirements={"documentId" = "\d+", "userId" = "\d+", "dropzoneId" = "\d+", "correctionId" = "\d+"} * ) * @ParamConverter("document", class="InnovaCollecticielBundle:Document", options={"id" = "documentId"}) * @ParamConverter("user",class="ClarolineCoreBundle:User",options={"id" = "userId"}) * @ParamConverter("dropzone", class="InnovaCollecticielBundle:Dropzone", options={"id" = "dropzoneId"}) * @ParamConverter("correction", class="InnovaCollecticielBundle:Correction", options={"id" = "correctionId"}) * @Method("POST") * @Template() */ public function AddCommentsInnovaAction(Document $document, User $user, Dropzone $dropzone, Correction $correction) { $em = $this->getDoctrine()->getManager(); // Valorisation du commentaire $comment = new Comment(); $comment->setDocument($document); $comment->setUser($user); $form = $this->get('form.factory')->createBuilder(new CommentType(), $comment)->getForm(); // Récupération de la saisie du commentaire $request = $this->get('request'); if ($request->isMethod('POST')) { $form->handleRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); // Insertion en base du commentaire $em->persist($comment); $em->flush(); } } // Ajouter la création du log de la création du commentaire. InnovaERV. $unitOfWork = $em->getUnitOfWork(); $unitOfWork->computeChangeSets(); $dropzoneChangeSet = $unitOfWork->getEntityChangeSet($dropzone); $event = new LogCommentCreateEvent($dropzone, $dropzoneChangeSet, $comment); $this->dispatch($event); // Redirection vers la page des commentaires. InnovaERV. return $this->redirect($this->generateUrl('innova_collecticiel_drops_detail_comment', array('resourceId' => $dropzone->getId(), 'state' => 'edit', 'correctionId' => $correction->getId(), 'documentId' => $document->getId()))); }
/** * @Route( * "/add/comments/{userId}/{dropzoneId}", * name="innova_collecticiel_add_comment_for_docs", * requirements={"userId" = "\d+", "dropzoneId" = "\d+"} * ) * @ParamConverter("user",class="ClarolineCoreBundle:User",options={"id" = "userId"}) * @ParamConverter("dropzone", class="InnovaCollecticielBundle:Dropzone", options={"id" = "dropzoneId"}) * @Method("POST") * @Template() */ public function AddCommentForDocsInnovaAction(User $user, Dropzone $dropzone) { // Récupération de l'USER $user = $this->get('security.context')->getToken()->getUser(); $em = $this->getDoctrine()->getManager(); $comment = new Comment(); $form = $this->get('form.factory')->createBuilder(new CommentType(), $comment)->getForm(); // Récupération de la saisie du commentaire $request = $this->get('request'); if ($request->isMethod('POST')) { $form->handleRequest($request); if ($form->isValid()) { $dropzoneManager = $this->get('innova.manager.dropzone_manager'); // Récupération du commentaire $commentText = $comment->getCommentText(); // Récupération des documents sur lesquels porte le commentaire saisi $docs = $this->getRequest()->request->get('docs'); // Récupération des ID des documents $explodeDocIdS = explode("|", $docs); // Parcours du tableau des documents foreach ($explodeDocIdS as $documentId) { // Je ne prends pas le dernier élément du tableau if (is_numeric($documentId)) { // Création du nouveau commentaire $document = $this->getDoctrine()->getRepository('InnovaCollecticielBundle:Document')->find($documentId); // Valorisation du commentaire $comment = new Comment(); $comment->setDocument($document); $comment->setCommentText($commentText); $comment->setUser($user); // var_dump($documentId); // Insertion en base du commentaire $em->persist($comment); } } $em->flush(); // Envoi notification. InnovaERV $usersIds = $dropzoneManager->getDropzoneUsersIds($dropzone); $usersIds = array(); $usersIds[] = $dropzone->getResourceNode()->getCreator()->getId(); $usersIds[] = $document->getSender()->getId(); $event = new LogDropzoneAddCommentEvent($dropzone, $dropzone->getManualState(), $usersIds); $this->get('event_dispatcher')->dispatch('log', $event); } } // Ajouter la création du log de la création du commentaire. InnovaERV. $unitOfWork = $em->getUnitOfWork(); $unitOfWork->computeChangeSets(); $dropzoneChangeSet = $unitOfWork->getEntityChangeSet($dropzone); $event = new LogCommentCreateEvent($dropzone, $dropzoneChangeSet, $comment); $this->dispatch($event); // Redirection vers les demandes adressées. InnovaERV. return $this->redirect($this->generateUrl('innova_collecticiel_drops_awaiting', array('resourceId' => $dropzone->getId()))); }