Example #1
0
 /**
  * {@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;
 }
Example #2
0
 /** @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);
 }
Example #3
0
 /**
  * {@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;
 }
Example #6
0
 /**
  * @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);
 }
Example #7
0
 /**
  * @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();
 }
Example #8
0
 /**
  * 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();
     }
 }
Example #9
0
 /**
  * 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');
 }
Example #11
0
 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);
 }
Example #13
0
 /**
  * @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);
 }