public function postUpdate() { /** @var \Claroline\CoreBundle\Repository\UserRepository $userRepository */ $userRepository = $this->entityManager->getRepository('ClarolineCoreBundle:User'); /** @var \Doctrine\ORM\Query $usersQuery */ $usersQuery = $userRepository->findAllEnabledUsers(false); $users = $usersQuery->iterate(); /** @var \Claroline\CoreBundle\Repository\OrderedToolRepository $orderedToolRepo */ $orderedToolRepo = $this->entityManager->getRepository('ClarolineCoreBundle:Tool\\OrderedTool'); $toolName = 'my_portfolios'; $tool = $this->entityManager->getRepository('ClarolineCoreBundle:Tool\\Tool')->findOneByName($toolName); if (null === $tool) { $tool = new Tool(); $tool->setDisplayableInWorkspace(false)->setName($toolName)->setClass('list-alt'); $this->entityManager->persist($tool); $this->entityManager->flush(); } $countUser = $userRepository->countAllEnabledUsers(); $index = 0; $this->log(sprintf('%d ordered tools to add for users - %s', $countUser, date('Y/m/d H:i:s'))); foreach ($users as $row) { $user = $row[0]; /** @var \Claroline\CoreBundle\Entity\Tool\OrderedTool $orderedTools */ $orderedTool = $orderedToolRepo->findOneBy(['tool' => $tool, 'user' => $user, 'type' => 1]); if (null === $orderedTool) { $orderedTool = new OrderedTool(); $orderedTool->setName($toolName); $orderedTool->setTool($tool); $orderedTool->setUser($user); $orderedTool->setVisibleInDesktop(true); $orderedTool->setOrder(1); $orderedTool->setType(1); $this->entityManager->persist($orderedTool); ++$index; if ($index % 200 === 0) { $this->entityManager->flush(); $this->entityManager->clear($orderedTool); $this->log(sprintf(' %d ordered tools added - %s', 200, date('Y/m/d H:i:s'))); } } } if ($index % 200 !== 0) { $this->entityManager->flush(); $this->entityManager->clear(); $this->log(sprintf(' %d ordered tools added - %s', $index % 200, date('Y/m/d H:i:s'))); } }
/** * {@inheritdoc} */ public function load(ObjectManager $om) { $messagePlugin = $this->getPluginFromIdentityMapOrScheduledForInsert($om, 'Claroline', 'MessageBundle'); if (!is_null($messagePlugin)) { $toolRepo = $om->getRepository('ClarolineCoreBundle:Tool\\Tool'); $messageTool = $toolRepo->findOneBy(array('name' => 'message')); if (is_null($messageTool)) { $messageTool = new Tool(); $messageTool->setName('message'); $messageTool->setClass('envelope'); $messageTool->setDisplayableInWorkspace(false); $messageTool->setDisplayableInDesktop(true); $messageTool->setPlugin($messagePlugin); $om->persist($messageTool); $adminMessageOt = new OrderedTool(); $adminMessageOt->setName('message'); $adminMessageOt->setTool($messageTool); $adminMessageOt->setLocked(false); $adminMessageOt->setOrder(1); $adminMessageOt->setType(0); $adminMessageOt->setVisibleInDesktop(true); $om->persist($adminMessageOt); $userRepo = $om->getRepository('ClarolineCoreBundle:User'); $users = $userRepo->findAllEnabledUsers(); foreach ($users as $user) { $messageOt = new OrderedTool(); $messageOt->setName('message'); $messageOt->setTool($messageTool); $messageOt->setUser($user); $messageOt->setLocked(false); $messageOt->setOrder(1); $messageOt->setType(0); $messageOt->setVisibleInDesktop(true); $om->persist($messageOt); } } else { $messageTool->setPlugin($messagePlugin); $om->persist($messageTool); } $om->flush(); } }
public function createOrderedToolByToolForAllUsers(LoggerInterface $logger, Tool $tool, $type = 0, $isVisible = true) { $toolName = $tool->getName(); $usersQuery = $this->userRepo->findAllEnabledUsers(false); $users = $usersQuery->iterate(); $this->om->startFlushSuite(); $index = 0; $countUser = $this->userRepo->countAllEnabledUsers(); $logger->info(sprintf("%d users to check tools on.", $countUser)); foreach ($users as $row) { $user = $row[0]; /** @var \Claroline\CoreBundle\Entity\Tool\OrderedTool[] $orderedTools */ $orderedTools = $this->orderedToolRepo->findOrderedToolsByToolAndUser($tool, $user, $type); if (count($orderedTools) === 0) { $orderedTool = new OrderedTool(); $orderedTool->setName($toolName); $orderedTool->setTool($tool); $orderedTool->setUser($user); $orderedTool->setVisibleInDesktop($isVisible); $orderedTool->setOrder(1); $orderedTool->setType($type); $this->om->persist($orderedTool); $index++; if ($index % 100 === 0) { $this->om->forceFlush(); $this->om->clear($orderedTool); $logger->info(sprintf(" %d users checked.", 100)); } } else { $orderedTool = $orderedTools[0]; if ($orderedTool->isVisibleInDesktop() !== $isVisible) { $orderedTool->setVisibleInDesktop($isVisible); $this->om->persist($orderedTool); $index++; if ($index % 100 === 0) { $this->om->forceFlush(); $this->om->clear($orderedTool); $logger->info(sprintf(" %d users checked.", 100)); } } } } if ($index % 100 !== 0) { $logger->info(sprintf(" %d users checked.", 100 - $index)); } $this->om->endFlushSuite(); }
protected static function createDesktopTool(Tool $tool, User $user, $position) { $orderedTool = new OrderedTool(); $orderedTool->setName($tool->getName()); $orderedTool->setTool($tool); $orderedTool->setUser($user); $orderedTool->setOrder($position); self::create("orderedTool/{$user->getUsername()}-{$tool->getName()}", $orderedTool); }