/** * Creates an image from a file. * * @param string $filePath * @param string $baseMime (image|video) * * @return null|string $thumnnailPath */ public function createFromFile($filePath, $baseMime, Workspace $workspace = null) { $ds = DIRECTORY_SEPARATOR; if (is_null($workspace)) { $prefix = $this->thumbDir; } else { $prefix = $this->thumbDir . $ds . $workspace->getCode(); if (!is_dir($prefix)) { @mkdir($prefix); } } $newPath = $prefix . $ds . $this->ut->generateGuid() . ".png"; $thumbnailPath = null; if ($baseMime === 'video') { try { $thumbnailPath = $this->creator->fromVideo($filePath, $newPath, 100, 100); } catch (\Exception $e) { $thumbnailPath = null; //error handling ? $thumbnailPath = null } } if ($baseMime === 'image') { try { $thumbnailPath = $this->creator->fromImage($filePath, $newPath, 100, 100); } catch (\Exception $e) { $thumbnailPath = null; //error handling ? $thumbnailPath = null } } return $thumbnailPath; }
/** * 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]; $errors = array(); 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 ($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) { $this->om->forceFlush(); $this->om->clear(); } $this->om->endFlushSuite(); } }
/** * Adds the storage exceeded error in a form. * * @param Form $form * @param int $filesize */ public function addStorageExceededFormError(Form $form, $fileSize, Workspace $workspace) { $maxSize = $this->ut->getRealFileSize($workspace->getMaxStorageSize()); $usedSize = $this->ut->getRealFileSize($this->container->get('claroline.manager.workspace_manager')->getUsedStorage($workspace)); $storageLeft = $maxSize - $usedSize; $fileSize = $this->ut->formatFileSize($this->ut->getRealFileSize($fileSize)); $storageLeft = $this->ut->formatFileSize($storageLeft); $translator = $this->container->get('translator'); $msg = $translator->trans('storage_limit_exceeded', ['%storageLeft%' => $storageLeft, '%fileSize%' => $fileSize], 'platform'); $form->addError(new FormError($msg)); }
/** * Adds the storage exceeded error in a form. * * @param Form $form * @param integer $filesize */ public function addStorageExceededFormError(Form $form, $fileSize, Workspace $workspace) { $filesize = $this->ut->getRealFileSize($fileSize); //we want how many bites and well... $maxSize = $this->ut->getRealFileSize($workspace->getMaxStorageSize()); //throw new \Exception($maxSize); $usedSize = $this->ut->getRealFileSize($this->container->get('claroline.manager.workspace_manager')->getUsedStorage($workspace)); $storageLeft = $maxSize - $usedSize; $fileSize = $this->ut->formatFileSize($fileSize); $storageLeft = $this->ut->formatFileSize($storageLeft); $translator = $this->container->get('translator'); $msg = $translator->trans('storage_limit_exceeded', array('%storageLeft%' => $storageLeft, '%fileSize%' => $fileSize), 'platform'); $form->addError(new FormError($msg)); }
/** * Returns the sorted list of OrderedTools for configuration in admin. * * @return \Claroline\CoreBundle\Entity\Tool\OrderedTool */ public function getDesktopToolsConfigurationArrayForAdmin($type = 0) { $orderedToolList = array(); $desktopTools = $this->orderedToolRepo->findDisplayableDesktopOrderedToolsByTypeForAdmin($type); foreach ($desktopTools as $desktopTool) { //this field isn't mapped $desktopTool->getTool()->setVisible($desktopTool->isVisibleInDesktop()); $orderedToolList[$desktopTool->getOrder()] = $desktopTool->getTool(); } $undisplayedTools = $this->toolRepo->findDesktopUndisplayedToolsByTypeForAdmin($type); foreach ($undisplayedTools as $tool) { //this field isn't mapped $tool->setVisible(false); } $this->addMissingDesktopToolsForAdmin($undisplayedTools, count($desktopTools) + 1, $type); return $this->utilities->arrayFill($orderedToolList, $undisplayedTools); }
/** * 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(); }