protected function setPublicUrlOnUsers() { $this->log('Updating public url for users...'); /** @var \Claroline\CoreBundle\Repository\UserRepository $userRepository */ $userRepository = $this->objectManager->getRepository('ClarolineCoreBundle:User'); $this->log('User to update - ' . date('Y/m/d H:i:s')); $this->log('It may take a while to process, go grab a coffee.'); /** @var \Claroline\CoreBundle\Manager\UserManager $userManager */ $userManager = $this->container->get('claroline.manager.user_manager'); $nbUsers = 0; /** @var \Claroline\CoreBundle\Entity\User $user */ $user = $userRepository->findOneByPublicUrl(null); while (null !== $user) { $publicUrl = $userManager->generatePublicUrl($user); $user->setPublicUrl($publicUrl); $this->objectManager->persist($user); $this->objectManager->flush(); $nbUsers++; if (100 === $nbUsers) { $this->log(' ' . $nbUsers . ' updated users - ' . date('Y/m/d H:i:s')); $nbUsers = 0; } $personalWorkspace = $user->getPersonalWorkspace(); if (null !== $personalWorkspace) { $this->objectManager->detach($personalWorkspace); } $this->objectManager->detach($user); $user = $userRepository->findOneByPublicUrl(null); } $this->log('Public url for users updated.'); }
/** * @param ResourceNode $node * @param bool $detach */ public function reorder(ResourceNode $node, $detach = false) { /** @var \Claroline\CoreBundle\Repository\ResourceNodeRepository $resourceNodeRepository */ $resourceNodeRepository = $this->om->getRepository('ClarolineCoreBundle:Resource\\ResourceNode'); $children = $resourceNodeRepository->getChildren($node, true, 'index'); $index = 1; foreach ($children as $child) { $child->setIndex($index); $index++; $this->om->persist($child); } $this->om->flush(); if ($detach) { foreach ($children as $child) { $this->om->detach($child); } } }