/**
  * @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;
 }
Ejemplo n.º 3
0
 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();
         }
     }
 }
Ejemplo n.º 4
0
 /**
  * @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();
 }
Ejemplo n.º 5
0
 /**
  * @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();
 }
Ejemplo n.º 6
0
 /**
  * @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();
 }