public function importDirectoriesFromCsv($file) { $data = file_get_contents($file); $data = $this->container->get('claroline.utilities.misc')->formatCsvOutput($data); $lines = str_getcsv($data, PHP_EOL); $this->om->startFlushSuite(); $i = 0; $resourceType = $this->om->getRepository('ClarolineCoreBundle:Resource\\ResourceType')->findOneByName('directory'); foreach ($lines as $line) { $values = str_getcsv($line, ';'); $code = $values[0]; $workspace = $this->om->getRepository('ClarolineCoreBundle:Workspace\\Workspace')->findOneByCode($code); $name = $values[1]; $directory = $this->om->getRepository('ClarolineCoreBundle:Resource\\ResourceNode')->findOneBy(['workspace' => $workspace, 'name' => $name, 'resourceType' => $resourceType]); if (!$directory) { $directory = new Directory(); $directory->setName($name); $this->log("Create directory {$name} for workspace {$code}"); $this->create($directory, $resourceType, $workspace->getCreator(), $workspace, $this->getWorkspaceRoot($workspace)); ++$i; } else { $this->log("Directory {$name} already exists for workspace {$code}"); } if ($i % 100 === 0) { $this->om->forceFlush(); $this->om->clear(); $resourceType = $this->om->getRepository('ClarolineCoreBundle:Resource\\ResourceType')->findOneByName('directory'); $this->om->merge($resourceType); } } $this->om->endFlushSuite(); }
/** * Import a workspace list from a csv data. * * @param array $workspaces */ public function importWorkspaces(array $workspaces, $logger = null, $update = false) { $i = 0; $workspaceModelManager = $this->container->get('claroline.manager.workspace_model_manager'); foreach ($workspaces as $workspace) { ++$i; $this->om->startFlushSuite(); $endDate = null; $model = null; $name = $workspace[0]; $code = $workspace[1]; $isVisible = $workspace[2]; $selfRegistration = $workspace[3]; $registrationValidation = $workspace[4]; $selfUnregistration = $workspace[5]; if (isset($workspace[6]) && trim($workspace[6]) !== '') { $user = $this->om->getRepository('ClarolineCoreBundle:User')->findOneByUsername($workspace[6]); } else { $user = $this->container->get('security.context')->getToken()->getUser(); } if (isset($workspace[7])) { $model = $this->om->getRepository('ClarolineCoreBundle:Model\\WorkspaceModel')->findOneByName($workspace[7]); } if (isset($workspace[8])) { $endDate = new \DateTime(); $endDate->setTimestamp($workspace[8]); } if ($update) { $workspace = $this->getOneByCode($code); if (!$workspace) { //if the workspace doesn't exists, just keep going... continue; } if ($logger) { $logger('Updating ' . $code . ' (' . $i . '/' . count($workspaces) . ') ...'); } } else { $workspace = new Workspace(); } $workspace->setName($name); $workspace->setCode($code); $workspace->setDisplayable($isVisible); $workspace->setSelfRegistration($selfRegistration); $workspace->setSelfUnregistration($selfUnregistration); $workspace->setRegistrationValidation($registrationValidation); $workspace->setCreator($user); if ($endDate) { $workspace->setEndDate($endDate); } if (!$update) { if ($logger) { $logger('Creating ' . $code . ' (' . $i . '/' . count($workspaces) . ') ...'); } if ($model) { $guid = $this->ut->generateGuid(); $this->createWorkspace($workspace); $workspace->setGuid($guid); $date = new \Datetime(date('d-m-Y H:i')); $workspace->setCreationDate($date->getTimestamp()); $workspaceModelManager->addDataFromModel($model, $workspace, $user); } else { $template = new File($this->container->getParameter('claroline.param.default_template')); $this->container->get('claroline.manager.transfer_manager')->createWorkspace($workspace, $template, true); } } else { if ($model) { $workspaceModelManager->updateDataFromModel($model, $workspace); } } $this->om->persist($workspace); $logger('UOW: ' . $this->om->getUnitOfWork()->size()); if ($i % 100 === 0) { $this->om->forceFlush(); $user = $this->om->getRepository('ClarolineCoreBundle:User')->find($user->getId()); $this->om->merge($user); $this->om->refresh($user); } } $logger('Final flush...'); $this->om->endFlushSuite(); }