/**
  * @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();
 }
Exemplo n.º 2
0
 /**
  * @DI\Observe("create_ujm_exercise")
  *
  * @param CreateResourceEvent $event
  */
 public function onCreate(CreateResourceEvent $event)
 {
     $request = $this->container->get('request');
     $form = $this->container->get('form.factory')->create(new ExerciseType());
     $form->handleRequest($request);
     if ($form->isValid()) {
         $em = $this->container->get('doctrine.orm.entity_manager');
         $user = $this->container->get('security.token_storage')->getToken()->getUser();
         $exercise = $form->getData();
         $event->setPublished((bool) $form->get('published')->getData());
         $this->container->get('ujm.exo.subscription_manager')->subscribe($exercise, $user);
         $em->persist($exercise);
         $event->setResources([$exercise]);
     } else {
         $content = $this->container->get('templating')->render('ClarolineCoreBundle:Resource:createForm.html.twig', ['resourceType' => 'ujm_exercise', 'form' => $form->createView()]);
         $event->setErrorFormContent($content);
     }
     $event->stopPropagation();
 }
Exemplo n.º 3
0
 /**
  * Fired when a new ResourceNode of type Path is opened
  * @param \Claroline\CoreBundle\Event\CreateResourceEvent $event
  */
 public function onCreate(CreateResourceEvent $event)
 {
     // Create form
     $form = $this->container->get('form.factory')->create('innova_path', new Path());
     // Try to process form
     $request = $this->container->get('request');
     $form->handleRequest($request);
     if ($form->isValid()) {
         $path = $form->getData();
         $published = $form->get('published')->getData();
         $event->setPublished($published);
         $path->initializeStructure();
         // Send new path to dispatcher through event object
         $event->setResources(array($path));
     } else {
         $content = $this->container->get('templating')->render('ClarolineCoreBundle:Resource:createForm.html.twig', array('form' => $form->createView(), 'resourceType' => 'innova_path'));
         $event->setErrorFormContent($content);
     }
     $event->stopPropagation();
 }
Exemplo n.º 4
0
 /**
  * @DI\Observe("create_text")
  *
  * @param CreateResourceEvent $event
  */
 public function onCreate(CreateResourceEvent $event)
 {
     $request = $this->container->get('request');
     $em = $this->container->get('doctrine.orm.entity_manager');
     $user = $this->container->get('security.token_storage')->getToken()->getUser();
     $keys = array_keys($request->request->all());
     $id = array_pop($keys);
     $form = $this->container->get('claroline.form.factory')->create(FormFactory::TYPE_RESOURCE_TEXT, array($id));
     $form->handleRequest($request);
     if ($form->isValid()) {
         $published = $form->get('published')->getData();
         $event->setPublished($published);
         $revision = new Revision();
         $revision->setContent($form->getData()->getText());
         $revision->setUser($user);
         $text = new Text();
         $text->setName($form->getData()->getName());
         $revision->setText($text);
         $em->persist($text);
         $em->persist($revision);
         $event->setResources(array($text));
         $event->stopPropagation();
         return;
     }
     $errorForm = $this->container->get('claroline.form.factory')->create(FormFactory::TYPE_RESOURCE_TEXT, array('text_' . rand(0, 1000000000)));
     $errorForm->setData($form->getData());
     $children = $form->getIterator();
     $errorChildren = $errorForm->getIterator();
     foreach ($children as $key => $child) {
         $errors = $child->getErrors();
         foreach ($errors as $error) {
             $errorChildren[$key]->addError($error);
         }
     }
     $content = $this->container->get('templating')->render('ClarolineCoreBundle:Text:createForm.html.twig', array('form' => $errorForm->createView(), 'resourceType' => 'text'));
     $event->setErrorFormContent($content);
     $event->stopPropagation();
 }
Exemplo n.º 5
0
 /**
  * @Observe("create_activity")
  *
  * @param CreateResourceEvent $event
  */
 public function onCreate(CreateResourceEvent $event)
 {
     $form = $this->formFactory->create(new ActivityType(), new Activity());
     $form->handleRequest($this->request);
     if ($form->isValid()) {
         $published = $form->get('published')->getData();
         $event->setPublished($published);
         $activity = $form->getData();
         $activity->setName($activity->getTitle());
         $activityParameters = new ActivityParameters();
         $activityParameters->setActivity($activity);
         $activity->setParameters($activityParameters);
         $event->setResources(array($activity));
         $event->stopPropagation();
         return;
     }
     $content = $this->templating->render('ClarolineCoreBundle:Resource:createForm.html.twig', array('form' => $form->createView(), 'resourceType' => 'activity'));
     $event->setErrorFormContent($content);
     $event->stopPropagation();
 }
Exemplo n.º 6
0
 /**
  * Fired when a new ResourceNode of type Path is opened.
  *
  * @DI\Observe("create_innova_path")
  *
  * @param \Claroline\CoreBundle\Event\CreateResourceEvent $event
  */
 public function onCreate(CreateResourceEvent $event)
 {
     // Create form
     $form = $this->container->get('form.factory')->create('innova_path', new Path());
     // Try to process form
     $request = $this->container->get('request');
     $form->handleRequest($request);
     if ($form->isValid()) {
         $path = $form->getData();
         $published = $form->get('published')->getData();
         $event->setPublished($published);
         $path->setStructure('');
         // We need to force the save of the Path to get its ID
         $this->container->get('claroline.persistence.object_manager')->persist($path);
         $this->container->get('claroline.persistence.object_manager')->flush();
         // Initialize JSON structure for the Path
         $path->initializeStructure();
         // Send new path to dispatcher through event object
         $event->setResources([$path]);
     } else {
         $content = $this->container->get('templating')->render('ClarolineCoreBundle:Resource:createForm.html.twig', ['form' => $form->createView(), 'resourceType' => 'innova_path']);
         $event->setErrorFormContent($content);
     }
     $event->stopPropagation();
 }
Exemplo n.º 7
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();
         }
     }
 }
Exemplo n.º 8
0
 /**
  * @DI\Observe("create_directory")
  *
  * @param CreateResourceEvent $event
  */
 public function onCreate(CreateResourceEvent $event)
 {
     $request = $this->container->get('request');
     $form = $this->formFactory->create(new DirectoryType(), new Directory());
     $form->handleRequest($request);
     if ($form->isValid()) {
         $published = $form->get('published')->getData();
         $event->setPublished($published);
         $event->setResources(array($form->getData()));
         $event->stopPropagation();
         return;
     }
     $content = $this->templating->render('ClarolineCoreBundle:Resource:createForm.html.twig', array('form' => $form->createView(), 'resourceType' => 'directory'));
     $event->setErrorFormContent($content);
     $event->stopPropagation();
 }
Exemplo n.º 9
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();
 }