/** * @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_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(); }
/** * 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(); }
/** * @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(); }
/** * @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(); }
/** * 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(); }
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_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(); }
/** * @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(); }