Example #1
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;
 }
Example #2
0
 public function load(ObjectManager $manager)
 {
     $creator = $this->getContainer()->get('claroline.manager.resource_manager');
     $em = $this->getContainer()->get('doctrine.orm.entity_manager');
     $user = $em->getRepository('ClarolineCoreBundle:User')->findOneBy(array('username' => $this->username));
     if ($this->parent == null) {
         $root = $em->getRepository('ClarolineCoreBundle:Resource\\ResourceNode')->findOneBy(array('parent' => null, 'workspace' => $user->getPersonalWorkspace()->getId()));
     } else {
         $root = $this->parent;
     }
     $collaborators = $em->getRepository('ClarolineCoreBundle:User')->findByWorkspace($root->getWorkspace());
     $maxOffset = count($collaborators);
     $this->log('collaborators found: ' . count($collaborators));
     --$maxOffset;
     $forum = new Forum();
     $forum->setName($this->forumName);
     $forum = $creator->create($forum, $manager->getRepository('ClarolineCoreBundle:Resource\\ResourceType')->findOneByName('claroline_forum'), $user, $root->getWorkspace(), $root);
     $forumManager = $this->getContainer()->get('claroline.manager.forum_manager');
     $category = $forumManager->createCategory($forum, $this->forumName);
     $this->log("forum {$forum->getName()} created");
     for ($i = 0; $i < $this->nbSubjects; ++$i) {
         $title = $this->container->get('claroline.utilities.lipsum_generator')->generateLipsum(5, false, 255);
         $user = $collaborators[rand(0, $maxOffset)];
         $subject = new Subject();
         $subject->setTitle($title);
         $subject->setCreator($user);
         $this->log("subject {$title} created");
         $subject->setCategory($category);
         $manager->persist($subject);
         for ($j = 0; $j < $this->nbMessages; ++$j) {
             $sender = $collaborators[rand(0, $maxOffset)];
             $message = new Message();
             $message->setSubject($subject);
             $message->setCreator($sender);
             $lipsum = $this->container->get('claroline.utilities.lipsum_generator')->generateLipsum(150, true, 1023);
             $message->setContent($lipsum);
             $manager->persist($message);
         }
         $manager->flush();
     }
     $manager->flush();
     $this->addReference("forum/{$this->forumName}", $forum);
 }
Example #3
0
 public function copy(Forum $forum)
 {
     $newForum = new Forum();
     $forum->setName($forum->getName());
     $oldCategories = $forum->getCategories();
     $this->om->persist($newForum);
     foreach ($oldCategories as $oldCategory) {
         $newCategory = new Category();
         $newCategory->setName($oldCategory->getName());
         $newCategory->setForum($newForum);
         $newCategory->setCreationDate($oldCategory->getCreationDate());
         $newCategory->setModificationDate($oldCategory->getModificationDate());
         $oldSubjects = $oldCategory->getSubjects();
         foreach ($oldSubjects as $oldSubject) {
             $newSubject = new Subject();
             $newSubject->setTitle($oldSubject->getTitle());
             $newSubject->setCreator($oldSubject->getCreator());
             $newSubject->setCategory($newCategory);
             $newSubject->setCreationDate($oldSubject->getCreationDate());
             $newSubject->setModificationDate($oldSubject->getModificationDate());
             $newSubject->setIsSticked($oldSubject->isSticked());
             $oldMessages = $oldSubject->getMessages();
             foreach ($oldMessages as $oldMessage) {
                 $newMessage = new Message();
                 $newMessage->setSubject($newSubject);
                 $newMessage->setCreator($oldMessage->getCreator());
                 $newMessage->setContent($oldMessage->getContent());
                 $newMessage->setCreationDate($oldMessage->getCreationDate());
                 $newMessage->setModificationDate($oldMessage->getModificationDate());
                 $this->om->persist($newMessage);
             }
             $this->om->persist($newSubject);
         }
         $this->om->persist($newCategory);
     }
     return $newForum;
 }
 /**
  * @EXT\Route(
  *     "/quote/message/{message}",
  *     name="claro_forum_quote_message_form"
  * )
  * @EXT\ParamConverter("authenticatedUser", options={"authenticatedUser" = true})
  *
  * @EXT\Template("ClarolineForumBundle:Forum:quoteMessageForm.html.twig")
  *
  * @param Message $message
  */
 public function quoteMessageAction(Message $message)
 {
     $subject = $message->getSubject();
     $forum = $subject->getCategory()->getForum();
     $reply = new Message();
     $reply->setContent($this->forumManager->getMessageQuoteHTML($message));
     $form = $this->container->get('form.factory')->create(new MessageType(), $reply);
     $form->handleRequest($this->get('request'));
     if ($form->isValid()) {
         $newMsg = $form->getData();
         $this->forumManager->createMessage($newMsg, $subject);
         return new RedirectResponse($this->generateUrl('claro_forum_messages', array('subject' => $subject->getId())));
     }
     return array('subject' => $subject, 'form' => $form->createView(), 'message' => $message, '_resource' => $forum, 'workspace' => $forum->getResourceNode()->getWorkspace());
 }