Example #1
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 #2
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;
 }