예제 #1
0
 /**
  * The form submission is working but I had to do some weird things to make it works.
  *
  * @EXT\Route(
  *     "/subject/create/{category}",
  *     name="claro_forum_create_subject"
  * )
  * @EXT\ParamConverter("authenticatedUser", options={"authenticatedUser" = true})
  * @EXT\Template("ClarolineForumBundle:Forum:subjectForm.html.twig")
  *
  * @param Category $category
  *
  * @throws \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException
  * @throws \Exception
  *
  * @return array|\Symfony\Component\HttpFoundation\RedirectResponse
  */
 public function createSubjectAction(Category $category)
 {
     $forum = $category->getForum();
     $collection = new ResourceCollection(array($forum->getResourceNode()));
     if (!$this->authorization->isGranted('post', $collection)) {
         throw new AccessDeniedException($collection->getErrorsForDisplay());
     }
     $form = $this->get('form.factory')->create(new SubjectType(), new Subject());
     $form->handleRequest($this->get('request'));
     if ($form->isValid()) {
         $user = $this->tokenStorage->getToken()->getUser();
         $subject = $form->getData();
         $subject->setCreator($user);
         $subject->setAuthor($user->getFirstName() . ' ' . $user->getLastName());
         //instantiation of the new resources
         $subject->setCategory($category);
         $this->forumManager->createSubject($subject);
         $dataMessage = $form->get('message')->getData();
         if ($dataMessage['content'] !== null) {
             $message = new Message();
             $message->setContent($dataMessage['content']);
             $message->setCreator($user);
             $message->setAuthor($user->getFirstName() . ' ' . $user->getLastName());
             $message->setSubject($subject);
             $this->forumManager->createMessage($message, $subject);
             return new RedirectResponse($this->generateUrl('claro_forum_subjects', array('category' => $category->getId())));
         }
     }
     $form->get('message')->addError(new FormError($this->get('translator')->trans('field_content_required', array(), 'forum')));
     return array('form' => $form->createView(), '_resource' => $forum, 'workspace' => $forum->getResourceNode()->getWorkspace());
 }
예제 #2
0
 /**
  * @param \Claroline\ForumBundle\Entity\Message $message
  * @param \Claroline\ForumBundle\Entity\Subject $subject
  *
  * @throws \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException
  *
  * @return \Claroline\ForumBundle\Entity\Message
  */
 public function createMessage(Message $message, Subject $subject)
 {
     $forum = $subject->getCategory()->getForum();
     $collection = new ResourceCollection(array($forum->getResourceNode()));
     if (!$this->authorization->isGranted('post', $collection)) {
         throw new AccessDeniedHttpException($collection->getErrorsForDisplay());
     }
     $user = $this->tokenStorage->getToken()->getUser();
     $message->setCreator($user);
     $message->setAuthor($user->getFirstName() . ' ' . $user->getLastName());
     $message->setSubject($subject);
     $this->om->persist($message);
     $this->om->flush();
     $this->dispatch(new CreateMessageEvent($message));
     $this->sendMessageNotification($message, $message->getCreator());
     return $message;
 }
예제 #3
0
 public function import(array $data)
 {
     $forum = new Forum();
     $repo = $this->om->getRepository('ClarolineCoreBundle:User');
     if (isset($data['data'])) {
         foreach ($data['data'] as $category) {
             $entityCategory = new Category();
             $entityCategory->setForum($forum);
             $entityCategory->setName($category['category']['name']);
             foreach ($category['category']['subjects'] as $subject) {
                 $subjectEntity = new Subject();
                 $subjectEntity->setTitle($subject['subject']['name']);
                 $creator = null;
                 if ($subject['subject']['creator'] !== null) {
                     $creator = $repo->findOneByUsername($subject['subject']['creator']);
                 }
                 if ($creator === null) {
                     $creator = $this->container->get('security.context')->getToken()->getUser();
                 }
                 $subjectEntity->setCreator($creator);
                 $subjectEntity->setCategory($entityCategory);
                 foreach ($subject['subject']['messages'] as $message) {
                     $messageEntity = new Message();
                     $content = file_get_contents($this->getRootPath() . DIRECTORY_SEPARATOR . $message['message']['path']);
                     $messageEntity->setContent($content);
                     $creator = null;
                     if ($message['message']['creator'] !== null) {
                         $creator = $repo->findOneByUsername($message['message']['creator']);
                     }
                     if ($creator === null) {
                         $creator = $this->container->get('security.context')->getToken()->getUser();
                     }
                     $messageEntity->setCreator($creator);
                     $messageEntity->setSubject($subjectEntity);
                     $messageEntity->setAuthor($message['message']['author']);
                     $this->om->persist($messageEntity);
                 }
                 $this->om->persist($subjectEntity);
             }
             $this->om->persist($entityCategory);
         }
     }
     $this->om->persist($forum);
     return $forum;
 }