예제 #1
0
 /**
  * @param string $username
  *
  * @return User
  */
 public function user($username, $withWorkspace = false)
 {
     $user = new User();
     $user->setFirstName($username);
     $user->setLastName($username);
     $user->setUsername($username);
     $user->setPassword($username);
     $user->setMail($username . '@mail.com');
     $user->setGuid($username);
     $this->om->persist($user);
     if (!$this->userRole) {
         $this->userRole = $this->role('ROLE_USER');
         $this->om->persist($this->userRole);
     }
     $user->addRole($this->userRole);
     if ($withWorkspace) {
         $workspace = new Workspace();
         $workspace->setName($username);
         $workspace->setCreator($user);
         $workspace->setCode($username);
         $workspace->setGuid($username);
         $this->om->persist($workspace);
         $user->setPersonalWorkspace($workspace);
     }
     return $user;
 }
예제 #2
0
 public function user($username)
 {
     $user = new User();
     $user->setFirstName($username);
     $user->setLastName($username);
     $user->setUsername($username);
     $user->setPassword($username);
     $user->setMail($username . '@mail.com');
     $user->setGuid($username);
     $this->om->persist($user);
     if (!$this->userRole) {
         $this->userRole = new Role();
         $this->userRole->setName('ROLE_USER');
         $this->userRole->setTranslationKey('user');
         $this->om->persist($this->userRole);
     }
     $user->addRole($this->userRole);
     $workspace = new Workspace();
     $workspace->setName($username);
     $workspace->setCreator($user);
     $workspace->setCode($username);
     $workspace->setGuid($username);
     $this->om->persist($workspace);
     $user->setPersonalWorkspace($workspace);
     $this->om->flush();
     return $user;
 }
예제 #3
0
 /**
  * @param string $name
  *
  * @return Workspace
  */
 public function workspace($name, User $creator)
 {
     $workspace = new Workspace();
     $workspace->setName($name);
     $workspace->setCode($name);
     $workspace->setCreator($creator);
     $template = new SfFile($this->container->getParameter('claroline.param.default_template'));
     //optimize this later
     $this->container->get('claroline.manager.workspace_manager')->create($workspace, $template);
     return $workspace;
 }
예제 #4
0
 /**
  * @param $username
  *
  * @return User
  */
 public function user($username)
 {
     $user = new User();
     $user->setFirstName($username);
     $user->setLastName($username);
     $user->setUsername($username);
     $user->setPassword($username);
     $user->setMail($username . '@mail.com');
     $user->setGuid($username);
     $this->om->persist($user);
     $user->addRole($this->userRole);
     $workspace = new Workspace();
     $workspace->setName($username);
     $workspace->setCreator($user);
     $workspace->setCode($username);
     $workspace->setGuid($username);
     $this->om->persist($workspace);
     $user->setPersonalWorkspace($workspace);
     return $user;
 }
예제 #5
0
 public function user($username)
 {
     $user = new User();
     $user->setFirstName($username);
     $user->setLastName($username);
     $user->setUsername($username);
     $user->setPassword($username);
     $user->setMail($username . '@mail.com');
     $user->setGuid($username);
     $user->setPublicUrl($username);
     $this->om->persist($user);
     if (!$this->userRole) {
         $this->userRole = $this->om->getRepository('ClarolineCoreBundle:Role')->findOneByName('ROLE_USER');
     }
     $user->addRole($this->userRole);
     $workspace = new Workspace();
     $workspace->setName($username);
     $workspace->setCreator($user);
     $workspace->setCode($username);
     $workspace->setGuid($username);
     $this->om->persist($workspace);
     $user->setPersonalWorkspace($workspace);
     return $user;
 }
예제 #6
0
 public function createWorkspaceFromModel(WorkspaceModel $model, User $user, $name, $code, $description, $displayable, $selfRegistration, $selfUnregistration, &$errors = array())
 {
     $workspaceModelManager = $this->container->get('claroline.manager.workspace_model_manager');
     $workspace = new Workspace();
     $workspace->setName($name);
     $workspace->setCode($code);
     $workspace->setDescription($description);
     $workspace->setDisplayable($displayable);
     $workspace->setSelfRegistration($selfRegistration);
     $workspace->setSelfUnregistration($selfUnregistration);
     $guid = $this->ut->generateGuid();
     $workspace->setGuid($guid);
     $date = new \Datetime(date('d-m-Y H:i'));
     $workspace->setCreationDate($date->getTimestamp());
     $workspace->setCreator($user);
     $errors = [];
     $this->createWorkspace($workspace);
     $workspaceModelManager->addDataFromModel($model, $workspace, $user, $errors);
     return $workspace;
 }
예제 #7
0
 /**
  * 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();
 }
예제 #8
0
 protected function persistActivity($name)
 {
     if (!isset($this->defaults['user'])) {
         $this->defaults['user'] = $this->persistUser('default_user');
     }
     if (!isset($this->defaults['workspace'])) {
         $workspace = new Workspace();
         $workspace->setName('ws-jdoe');
         $workspace->setCreator($this->defaults['user']);
         $workspace->setCode('jdoe-123');
         $workspace->setGuid('123');
         $this->om->persist($workspace);
         $this->defaults['workspace'] = $workspace;
     }
     if (!isset($this->defaults['activity_type'])) {
         $type = $this->om->getRepository('ClarolineCoreBundle:Resource\\ResourceType')->findOneByName('activity');
         $this->defaults['activity_type'] = $type;
     }
     $node = new ResourceNode();
     $node->setName($name);
     $node->setCreator($this->defaults['user']);
     $node->setResourceType($this->defaults['activity_type']);
     $node->setWorkspace($this->defaults['workspace']);
     $node->setGuid($name);
     $node->setClass('foo');
     $activity = new Activity();
     $activity->setName($name);
     $activity->setDescription('desc');
     $activity->setResourceNode($node);
     $this->om->persist($node);
     $this->om->persist($activity);
     return $activity;
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $verbosityLevelMap = [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);
     $dirPath = $input->getArgument('directory_path');
     $username = $input->getArgument('owner_username');
     $om = $this->getContainer()->get('claroline.persistence.object_manager');
     $total = 0;
     $iterator = new \DirectoryIterator($dirPath);
     foreach ($iterator as $pathinfo) {
         if ($pathinfo->isFile()) {
             ++$total;
         }
     }
     $i = 0;
     $output->writeln('<comment> Removing workspaces... </comment>');
     foreach ($iterator as $pathinfo) {
         if ($pathinfo->isFile()) {
             $code = pathinfo($pathinfo->getFileName(), PATHINFO_FILENAME);
             $workspace = $om->getRepository('ClarolineCoreBundle:Workspace\\Workspace')->findOneByCode($code);
             if ($workspace) {
                 $output->writeln("<error> Removing {$workspace->getCode()} </error>");
                 $this->getContainer()->get('claroline.manager.workspace_manager')->deleteWorkspace($workspace);
                 $om->clear();
             }
         }
     }
     foreach ($iterator as $pathinfo) {
         if ($pathinfo->isFile()) {
             ++$i;
             $output->writeln('<comment> Clearing object manager... </comment>');
             $om->clear();
             $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);
             $workspace = new Workspace();
             $workspace->setCreator($user);
             $file = new File($pathinfo->getPathname());
             $workspaceManager->create($workspace, $file);
             $output->writeln("<comment> Workspace {$i}/{$total} created. </comment>");
         }
     }
 }
예제 #10
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', [], 'platform') . ' - ' . $user->getUsername();
     if (!$model) {
         $workspace = new Workspace();
         $workspace->setName($personalWorkspaceName);
         $workspace->setCode($code);
         $workspace->setCreator($user);
         $template = new File($this->personalWsTemplateFile);
         $workspace = $this->transferManager->createWorkspace($workspace, $template, true);
     } else {
         $workspace = $this->workspaceManager->createWorkspaceFromModel($model, $user, $personalWorkspaceName, $user->getUsername(), '', false, false, false);
     }
     //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();
 }
 private function createActivity($name)
 {
     $user = new User();
     $user->setFirstName('John');
     $user->setLastName('Doe');
     $user->setUsername('jdoe');
     $user->setMail('*****@*****.**');
     $user->setPassword('123');
     $workspace = new Workspace();
     $workspace->setName('w1');
     $workspace->setCode('abc');
     $workspace->setGuid('abc123');
     $workspace->setCreator($user);
     $type = new ResourceType();
     $type->setName('activity');
     $node = new ResourceNode();
     $node->setName($name);
     $node->setClass('FooClass');
     $node->setCreator($user);
     $node->setResourceType($type);
     $node->setWorkspace($workspace);
     $activity = new Activity();
     $activity->setResourceNode($node);
     $activity->setDescription('activity...');
     $this->om->persist($user);
     $this->om->persist($workspace);
     $this->om->persist($type);
     $this->om->persist($node);
     $this->om->persist($activity);
     return $activity;
 }
예제 #12
0
 public function generateWorkspace(Course $course, CourseSession $session)
 {
     $user = $this->tokenStorage->getToken()->getUser();
     $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)) {
         $template = new File($this->defaultTemplate);
         $workspace = new Workspace();
         $workspace->setCreator($user);
         $workspace->setName($name);
         $workspace->setCode($code);
         $workspace->setDisplayable($displayable);
         $workspace->setSelfRegistration($selfRegistration);
         $workspace->setSelfUnregistration($selfUnregistration);
         $workspace->setRegistrationValidation($registrationValidation);
         $workspace->setDescription($description);
         $workspace = $this->workspaceManager->create($workspace, $template);
     } 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;
 }