/** * {@inheritDoc} */ public function load(ObjectManager $manager) { $workspaceManager = $this->container->get('claroline.manager.workspace_manager'); $count = $manager->getRepository('ClarolineCoreBundle:Workspace\\Workspace')->count(); $totalWorkspaces = $count + 1; $admin = $this->findJohnDoe($manager); $personalWsTemplateFile = $this->container->getParameter('claroline.param.templates_directory') . "default.zip"; $config = new Configuration($personalWsTemplateFile); $start = time(); for ($j = 0, $i = 0; $i < $this->numberWorkspaces; $i++, $totalWorkspaces++) { $mandatoryFieldValue = "ws_batch" . $totalWorkspaces; $config->setWorkspaceName($mandatoryFieldValue); $config->setWorkspaceCode($mandatoryFieldValue); $workspaceManager->create($config, $admin); if ($i % self::BATCH_SIZE === 0) { $j++; $manager->flush(); $manager->clear(); $admin = $this->findJohnDoe($manager); $totalInserts = $i + 1; $this->log("batch [{$j}] | workspaces [{$totalInserts}] | UOW [{$manager->getUnitOfWork()->size()}]"); } } $manager->flush(); $manager->clear(); $end = time(); $duration = $this->container->get('claroline.utilities.misc')->timeElapsed($end - $start); $this->log("Time elapsed for the workspace creation: " . $duration); return $duration; }
/** @dataProvider rolesProvider */ public function testCheckThrowsExceptionOnMissingRoles($roles, $isExeptionExpected) { if ($isExeptionExpected) { $this->setExpectedException('Claroline\\CoreBundle\\Library\\Workspace\\Exception\\BaseRoleException'); } $config = new Configuration(null, false); $config->checkRoles($roles); }
/** * {@inheritDoc} */ public function load(ObjectManager $manager) { $workspaceManager = $this->container->get('claroline.manager.workspace_manager'); $personalWsTemplateFile = $this->container->getParameter('claroline.param.templates_directory') . "default.zip"; foreach ($this->workspaces as $name => $username) { $config = new Configuration($personalWsTemplateFile); $config->setWorkspaceName($name); $config->setWorkspaceCode(substr($name, 0, 1) . self::$codeDiscrCount); $config->setDisplayable(true); $workspace = $workspaceManager->create($config, $this->getReference('user/' . $username)); $this->setReference("workspace/{$name}", $workspace); $wsRoot = $manager->getRepository('ClarolineCoreBundle:Resource\\ResourceNode')->findWorkspaceRoot($workspace); $this->setReference('directory/' . $name, $wsRoot); ++self::$codeDiscrCount; } }
protected function execute(InputInterface $input, OutputInterface $output) { $verbosityLevelMap = array(LogLevel::NOTICE => OutputInterface::VERBOSITY_NORMAL, LogLevel::INFO => OutputInterface::VERBOSITY_NORMAL, LogLevel::DEBUG => OutputInterface::VERBOSITY_NORMAL); $consoleLogger = new ConsoleLogger($output, $verbosityLevelMap); $workspaceManager = $this->getContainer()->get('claroline.manager.workspace_manager'); $workspaceManager->setLogger($consoleLogger); $validator = $this->getContainer()->get('validator'); $template = $input->getArgument('archive_path'); $username = $input->getArgument('owner_username'); $code = $input->getArgument('code'); $name = $input->getArgument('name'); $user = $this->getContainer()->get('claroline.manager.user_manager')->getUserByUsername($username); $token = new UsernamePasswordToken($user, null, 'main', $user->getRoles()); $this->getContainer()->get('security.context')->setToken($token); $config = Configuration::fromTemplate($template); $config->setWorkspaceName($name); $config->setWorkspaceCode($code); $config->setDisplayable(true); $config->setSelfRegistration(true); $config->setRegistrationValidation(true); $config->setSelfUnregistration(true); $config->setWorkspaceDescription(true); $workspaceManager->create($config, $user); $workspaceManager->importRichText(); }
/** * @View(serializerGroups={"api"}) * @ApiDoc( * description="Create a workspace", * views = {"workspace"}, * input="Claroline\CoreBundle\Form\WorkspaceType" * ) * @ParamConverter("user", class="ClarolineCoreBundle:User", options={"repository_method" = "findForApi"}) */ public function postWorkspaceUserAction(User $user) { $workspaceType = new WorkspaceType($user); $workspaceType->enableApi(); $form = $this->formFactory->create($workspaceType); $form->submit($this->request); //$form->handleRequest($this->request); if ($form->isValid()) { $config = Configuration::fromTemplate($this->templateDir . DIRECTORY_SEPARATOR . 'default.zip'); $config->setWorkspaceName($form->get('name')->getData()); $config->setWorkspaceCode($form->get('code')->getData()); $config->setDisplayable($form->get('displayable')->getData()); $config->setSelfRegistration($form->get('selfRegistration')->getData()); $config->setRegistrationValidation($form->get('registrationValidation')->getData()); $config->setSelfUnregistration($form->get('selfUnregistration')->getData()); $config->setWorkspaceDescription($form->get('description')->getData()); $workspace = $this->workspaceManager->create($config, $user); $workspace->setEndDate($form->get('endDate')->getData()); $workspace->setMaxStorageSize($form->get('maxStorageSize')->getData()); $workspace->setMaxUploadResources($form->get('maxUploadResources')->getData()); $workspace->setMaxUsers($form->get('maxUsers')->getData()); $this->workspaceManager->editWorkspace($workspace); return $workspace; } return $form; }
/** * @EXT\Route( * "/import/submit", * name="claro_workspace_import", * ) * @EXT\Template() * * @param int $page * * @return array */ public function importAction() { $form = $this->formFactory->create(FormFactory::TYPE_WORKSPACE_IMPORT, array()); $form->handleRequest($this->request); if ($form->isValid()) { $template = $form->get('workspace')->getData(); $config = Configuration::fromTemplate($template); $config->setWorkspaceName($form->get('name')->getData()); $config->setWorkspaceCode($form->get('code')->getData()); $config->setDisplayable($form->get('displayable')->getData()); $config->setSelfRegistration($form->get('selfRegistration')->getData()); $config->setRegistrationValidation($form->get('registrationValidation')->getData()); $config->setSelfUnregistration($form->get('selfUnregistration')->getData()); $config->setWorkspaceDescription($form->get('description')->getData()); $this->workspaceManager->create($config, $this->tokenStorage->getToken()->getUser()); $this->workspaceManager->importRichText(); } else { throw new \Exception('Invalid form'); } $route = $this->router->generate('claro_workspace_by_user'); return new RedirectResponse($route); }
/** * @param Configuration $configuration * @param User $owner */ public function importResources(Configuration $configuration, User $owner, ResourceNode $directory) { $configuration->setOwner($owner); $data = $configuration->getData(); $data = $this->reorderData($data); $this->data = $data; $this->workspace = $directory->getWorkspace(); $this->om->startFlushSuite(); $this->setImporters($configuration, $data); $resourceImporter = $this->container->get('claroline.tool.resource_manager_importer'); if (isset($data['tools']) && is_array($data['tools'])) { foreach ($data['tools'] as $dataTool) { $tool = $dataTool['tool']; if ($tool['type'] === 'resource_manager') { $resourceImporter->import($tool, $this->workspace, array(), $this->container->get('claroline.manager.resource_manager')->getResourceFromNode($directory), false); break; } } } $this->om->endFlushSuite(); }
/** * Import a workspace list from a csv data. * * @param array $workspaces */ public function importWorkspaces(array $workspaces, $logger = null) { $this->om->clear(); $ds = DIRECTORY_SEPARATOR; $i = 0; $j = 0; $workspaceModelManager = $this->container->get('claroline.manager.workspace_model_manager'); foreach ($workspaces as $workspace) { $this->om->startFlushSuite(); $model = null; $name = $workspace[0]; $code = $workspace[1]; $isVisible = $workspace[2]; $selfRegistration = $workspace[3]; $registrationValidation = $workspace[4]; $selfUnregistration = $workspace[5]; if (isset($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 ($model) { $guid = $this->ut->generateGuid(); $workspace = new Workspace(); $this->createWorkspace($workspace); $workspace->setName($name); $workspace->setCode($code); $workspace->setDisplayable($isVisible); $workspace->setSelfRegistration($selfRegistration); $workspace->setSelfUnregistration($selfUnregistration); $workspace->setRegistrationValidation($registrationValidation); $workspace->setGuid($guid); $date = new \Datetime(date('d-m-Y H:i')); $workspace->setCreationDate($date->getTimestamp()); $workspace->setCreator($user); $workspaceModelManager->addDataFromModel($model, $workspace, $user, $errors); } else { //this should be changed later $configuration = new Configuration($this->templateDir . $ds . 'default.zip'); $configuration->setWorkspaceName($name); $configuration->setWorkspaceCode($code); $configuration->setDisplayable($isVisible); $configuration->setSelfRegistration($selfRegistration); $configuration->setSelfUnregistration($registrationValidation); $this->container->get('claroline.manager.transfert_manager')->createWorkspace($configuration, $user); } $i++; $j++; if ($i % self::MAX_WORKSPACE_BATCH_SIZE === 0) { if ($logger) { $logger(" [UOW size: " . $this->om->getUnitOfWork()->size() . "]"); } $i = 0; $this->om->forceFlush(); if ($logger) { $logger(" Workspace {$j} ({$name}) being created"); } $this->om->clear(); } $this->om->endFlushSuite(); } }
/** * Creates the personal workspace of a user. * * @param \Claroline\CoreBundle\Entity\User $user * @param Model $model */ public function setPersonalWorkspace(User $user, $model = null) { $locale = $this->platformConfigHandler->getParameter('locale_language'); $this->translator->setLocale($locale); $created = $this->workspaceManager->getWorkspaceByCode($user->getUsername()); if (count($created) > 0) { $code = $user->getUsername() . '~' . uniqid(); } else { $code = $user->getUsername(); } $personalWorkspaceName = $this->translator->trans('personal_workspace', array(), 'platform') . ' - ' . $user->getUsername(); if (!$model) { $config = Configuration::fromTemplate($this->personalWsTemplateFile); $config->setWorkspaceName($personalWorkspaceName); $config->setWorkspaceCode($code); $workspace = $this->transfertManager->createWorkspace($config, $user, true); } else { $workspace = $this->workspaceManager->createWorkspaceFromModel($model, $user, $personalWorkspaceName, $user->getUsername(), '', false, false, false, $errors); } //add "my public documents" folder $resourceManager = $this->container->get('claroline.manager.resource_manager'); $resourceManager->addPublicFileDirectory($workspace); $workspace->setIsPersonal(true); $user->setPersonalWorkspace($workspace); $this->objectManager->persist($user); $this->objectManager->flush(); }
/** * @EXT\Route( * "/{workspace}/import/partial/submit", * name="claro_workspace_partial_import_submit" * ) * @EXT\Template("ClarolineCoreBundle:Tool\workspace\parameters:importForm.html.twig") * @param Workspace $workspace * @throws \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException * @return Response */ public function importAction(Workspace $workspace) { $this->checkAccess($workspace); $form = $this->container->get('form.factory')->create(new PartialWorkspaceImportType()); $form->handleRequest($this->request); if ($form->isValid()) { $template = $form->get('workspace')->getData(); $config = Configuration::fromTemplate($template); $this->workspaceManager->importInExistingWorkspace($config, $workspace); } return new Response('under construction'); }
public function generateWorkspace(Course $course, CourseSession $session, User $user) { $model = $course->getWorkspaceModel(); $description = $course->getDescription(); $displayable = false; $selfRegistration = false; $selfUnregistration = false; $registrationValidation = false; $name = $course->getTitle() . ' [' . $session->getName() . ']'; $code = $this->generateWorkspaceCode($course->getCode()); if (is_null($model)) { $ds = DIRECTORY_SEPARATOR; $config = Configuration::fromTemplate($this->templateDir . $ds . 'default.zip'); $config->setWorkspaceName($name); $config->setWorkspaceCode($code); $config->setDisplayable($displayable); $config->setSelfRegistration($selfRegistration); $config->setSelfUnregistration($selfUnregistration); $config->setRegistrationValidation($registrationValidation); $config->setWorkspaceDescription($description); $workspace = $this->workspaceManager->create($config, $user); } else { $workspace = $this->workspaceManager->createWorkspaceFromModel($model, $user, $name, $code, $description, $displayable, $selfRegistration, $selfUnregistration); } $workspace->setWorkspaceType(0); $startDate = $session->getStartDate(); $endDate = $session->getEndDate(); if (!is_null($startDate)) { $workspace->setStartDate($startDate); } if (!is_null($endDate)) { $workspace->setEndDate($endDate); } $this->workspaceManager->editWorkspace($workspace); return $workspace; }
/** * @EXT\Route( * "/{workspace}/import/partial/submit", * name="claro_workspace_partial_import_submit" * ) * @EXT\Template("ClarolineCoreBundle:Tool\workspace\parameters:importForm.html.twig") * @param Workspace $workspace * @throws \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException * @return Response */ public function importAction(Workspace $workspace) { $this->checkAccess($workspace); $form = $this->container->get('form.factory')->create(new PartialWorkspaceImportType()); $form->handleRequest($this->request); if ($form->isValid()) { $template = $form->get('workspace')->getData(); $config = Configuration::fromTemplate($template); $this->workspaceManager->importInExistingWorkspace($config, $workspace); } $url = $this->router->generate('claro_workspace_edit_form', array('workspace' => $workspace->getId())); return new RedirectResponse($url); }
/** * @EXT\Route( * "/{directory}/import", * name="claro_resource_import", * options={"expose"=true} * ) * @EXT\Template("ClarolineCoreBundle:Resource:importModalForm.html.twig") * * @return \Symfony\Component\HttpFoundation\Response */ public function importAction(ResourceNode $directory) { $form = $this->formFactory->create(new ImportResourcesType()); $form->handleRequest($this->request); /*try {*/ if ($form->isValid()) { $template = $form->get('file')->getData(); $config = Configuration::fromTemplate($template); $user = $this->tokenStorage->getToken()->getUser(); $this->transferManager->importResources($config, $user, $directory); $this->transferManager->importRichText(); return new JsonResponse(array()); } else { return array('form' => $form->createView(), 'directory' => $directory); } /* } catch (\Exception $e) { $errorMsg = $this->translator->trans( 'invalid_file', array(), 'platform' ); $form->addError(new FormError($e->getMessage()));*/ return array('form' => $form->createView(), 'directory' => $directory); //} }
protected function execute(InputInterface $input, OutputInterface $output) { $archive = $this->getContainer()->getParameter('claroline.param.templates_directory') . 'default.zip'; $config = Configuration::fromTemplate($archive); $this->getContainer()->get('claroline.manager.transfert_manager')->import($config); }