public function onCopy(CopyResourceEvent $event) { $entityManager = $this->container->get('claroline.persistence.object_manager'); /** @var \Icap\BlogBundle\Entity\Blog $blog */ $blog = $event->getResource(); $user = $this->container->get('security.token_storage')->getToken()->getUser(); $newBlog = new Blog(); $entityManager->persist($newBlog); $entityManager->flush($newBlog); foreach ($blog->getPosts() as $post) { /** @var \Icap\BlogBundle\Entity\Post $newPost */ $newPost = new Post(); $newPost->setTitle($post->getTitle())->setContent($post->getContent())->setAuthor($post->getAuthor())->setStatus($post->getStatus())->setBlog($newBlog); $newTags = $post->getTags(); foreach ($newTags as $tag) { $newPost->addTag($tag); } $entityManager->persist($newPost); $entityManager->flush($newPost); foreach ($post->getComments() as $comment) { /** @var \Icap\BlogBundle\Entity\Comment $newComment */ $newComment = new Comment(); $newComment->setAuthor($comment->getAuthor())->setMessage($comment->getMessage())->setPost($newPost); } } $entityManager->persist($newBlog); $event->setCopy($newBlog); $event->stopPropagation(); }