/** * @DI\Observe("create_innova_audio_recorder") * @param CreateResourceEvent $event */ public function onCreate(CreateResourceEvent $event) { $request = $this->container->get('request'); $formData = $request->request->all(); $blob = $request->files->get('file'); $workspace = $event->getParent()->getWorkspace(); $result = $this->arm->uploadFileAndCreateResource($formData, $blob, $workspace); if (!is_null($result['errors']) && count($result['errors']) > 0) { $msg = $result['errors'][0]; $event->setErrorFormContent($msg); } $file = $result['file']; $event->setPublished(true); $event->setResourceType('file'); $event->setResources(array($file)); $event->stopPropagation(); }
/** * @DI\Observe("create_innova_media_resource") * * @param CreateResourceEvent $event * * @throws \Exception */ public function onCreate(CreateResourceEvent $event) { // Create form $form = $this->container->get('form.factory')->create(new MediaResourceType(), new MediaResource()); // Try to process form $request = $this->container->get('request'); $form->submit($request); if ($form->isValid()) { $mediaResource = $form->getData(); $file = $form['file']->getData(); $workspace = $event->getParent()->getWorkspace(); $this->container->get('innova_media_resource.manager.media_resource')->createMediaResourceDefaultOptions($mediaResource); $this->container->get('innova_media_resource.manager.media_resource')->handleMediaResourceMedia($file, $mediaResource, $workspace); // Send new MediaResource to dispatcher through event object $event->setResources([$mediaResource]); } else { $content = $this->container->get('templating')->render('ClarolineCoreBundle:Resource:createForm.html.twig', ['form' => $form->createView(), 'resourceType' => 'innova_media_resource']); $event->setErrorFormContent($content); } $event->stopPropagation(); return; }
private function handleFileCreation($form, CreateResourceEvent $event) { $workspace = $event->getParent()->getWorkspace(); $workspaceDir = $this->workspaceManager->getStorageDirectory($workspace); $isStorageLeft = $this->resourceManager->checkEnoughStorageSpaceLeft($workspace, $form->get('file')->getData()); if (!$isStorageLeft) { $this->resourceManager->addStorageExceededFormError($form, filesize($form->get('file')->getData()), $workspace); } else { //check if there is enough space liedt //$file is the entity //$tmpFile is the other file $file = $form->getData(); $tmpFile = $form->get('file')->getData(); //the tmpFile may require some encoding. if ($encoding = $event->getEncoding() !== 'none') { $tmpFile = $this->encodeFile($tmpFile, $event->getEncoding()); } $published = $form->get('published')->getData(); $event->setPublished($published); $fileName = $tmpFile->getClientOriginalName(); $ext = strtolower($tmpFile->getClientOriginalExtension()); $mimeType = $this->container->get('claroline.utilities.mime_type_guesser')->guess($ext); if (!is_dir($workspaceDir)) { mkdir($workspaceDir); } if (pathinfo($fileName, PATHINFO_EXTENSION) === 'zip' && $form->get('uncompress')->getData()) { $roots = $this->unzip($tmpFile, $event->getParent(), $published); $event->setResources($roots); //do not process the resources afterwards because nodes have been created with the unzip function. $event->setProcess(false); $event->stopPropagation(); } else { $file = $this->createFile($file, $tmpFile, $fileName, $mimeType, $workspace); $event->setResources(array($file)); $event->stopPropagation(); } } }
/** * @DI\Observe("create_claroline_web_resource") * * @param CreateResourceEvent $event */ public function onCreate(CreateResourceEvent $event) { $request = $this->container->get('request'); $workspace = $event->getParent()->getWorkspace(); $form = $this->container->get('form.factory')->create(new FileType(), new File()); $form->handleRequest($request); if ($form->isValid()) { if (!$this->isZip($form->get('file')->getData())) { $error = $this->container->get('translator')->trans('not_a_zip', [], 'resource'); $form->addError(new FormError($error)); } else { $event->setResources([$this->create($form->get('file')->getData(), $workspace)]); $event->stopPropagation(); return; } } $content = $this->container->get('templating')->render('ClarolineCoreBundle:Resource:createForm.html.twig', ['form' => $form->createView(), 'resourceType' => $event->getResourceType()]); $event->setErrorFormContent($content); $event->stopPropagation(); }
/** * @DI\Observe("create_claroline_scorm_12") * * @param CreateResourceEvent $event */ public function onCreate(CreateResourceEvent $event) { $form = $this->formFactory->create(new ScormType(), new Scorm12Resource()); $form->handleRequest($this->request); try { if ($form->isValid()) { $tmpFile = $form->get('file')->getData(); $workspace = $event->getParent()->getWorkspace(); if ($this->isScormArchive($tmpFile)) { $scormResource = $this->container->get('claroline.manager.scorm_manager')->createScorm($tmpFile, $form->get('name')->getData(), '1.2'); $event->setResources(array($scormResource)); $event->stopPropagation(); return; } } } catch (InvalidScormArchiveException $e) { $msg = $e->getMessage(); $errorMsg = $this->translator->trans($msg, array(), 'resource'); $form->addError(new FormError($errorMsg)); } $content = $this->templating->render('ClarolineCoreBundle:Resource:createForm.html.twig', array('form' => $form->createView(), 'resourceType' => $event->getResourceType())); $event->setErrorFormContent($content); $event->stopPropagation(); }
/** * @DI\Observe("create_file") * * @param CreateResourceEvent $event */ public function onCreate(CreateResourceEvent $event) { $request = $this->container->get('request'); $form = $this->container->get('form.factory')->create(new FileType(true), new File()); $form->handleRequest($request); if ($form->isValid()) { $workspace = $event->getParent()->getWorkspace(); $workspaceDir = $this->workspaceManager->getStorageDirectory($workspace); $isStorageLeft = $this->resourceManager->checkEnoughStorageSpaceLeft($workspace, $form->get('file')->getData()); if (!$isStorageLeft) { $this->resourceManager->addStorageExceededFormError($form, filesize($form->get('file')->getData()), $workspace); } else { //check if there is enough space liedt $file = $form->getData(); $tmpFile = $form->get('file')->getData(); $published = $form->get('published')->getData(); $event->setPublished($published); $fileName = $tmpFile->getClientOriginalName(); $ext = strtolower($tmpFile->getClientOriginalExtension()); $mimeType = $this->container->get('claroline.utilities.mime_type_guesser')->guess($ext); if (!is_dir($workspaceDir)) { mkdir($workspaceDir); } if (pathinfo($fileName, PATHINFO_EXTENSION) === 'zip' && $form->get('uncompress')->getData()) { $roots = $this->unzip($tmpFile, $event->getParent(), $published); $event->setResources($roots); //do not process the resources afterwards because nodes have been created with the unzip function. $event->setProcess(false); $event->stopPropagation(); } else { $file = $this->createFile($file, $tmpFile, $fileName, $mimeType, $workspace); $event->setResources(array($file)); $event->stopPropagation(); } return; } } $content = $this->container->get('templating')->render('ClarolineCoreBundle:Resource:createForm.html.twig', array('form' => $form->createView(), 'resourceType' => $event->getResourceType())); $event->setErrorFormContent($content); $event->stopPropagation(); }