Пример #1
0
 /**
  * Constructor
  */
 public function __construct()
 {
     $this->id = DefaultMethods::gen_uuid();
 }
 /**
  * SpatialFile controller upload shapefile action.
  * This will function will create folder under Data/uploads/spatialfiles/{id}
  * and create json file export from database for just uploaded files with json extension
  * and also create topojson file fron json file
  * @Route("/upload" , name="spatialfile_upload", options={"expose"=true})
  * @Method({"POST"})
  */
 public function uploadAction(Request $request)
 {
     $form = $this->createFormBuilder()->add('categories', 'entity', array('label' => 'Categories:', 'class' => 'Map2uCoreBundle:Category', 'multiple' => false, 'empty_data' => DefaultMethods::gen_uuid(), 'property' => 'name'))->add('tags', 'entity', array('label' => 'Tags:', 'class' => 'Map2uCoreBundle:Tag', 'multiple' => false, 'empty_data' => DefaultMethods::gen_uuid(), 'property' => 'name'))->add('spatial_file', 'file', array('attr' => array('multiple' => true)))->getForm();
     if (!$this->getUser()) {
         return new Response(\json_encode(array('success' => false, 'message' => 'Only logged in user can upload file to server')));
     }
     if ($request->getMethod() !== "POST") {
         return new Response(\json_encode(array('success' => false, 'message' => 'Only post method will be used here for uploading shape file to server')));
     }
     $this->params = $this->getPostedSpatialfileParams($request);
     $form->handleRequest($request);
     if ($form->isSubmitted()) {
         $path = getenv('PATH');
         putenv("PATH={$path}:/opt/local/bin");
         $data = $form->getData();
         // $files = $data['shape_file'];
         $files = $data['spatial_file'];
         $this->params['categories'] = null;
         if (isset($data['categories'])) {
             $this->params['categories'] = $data['categories'];
         }
         $this->params['tags'] = null;
         if (isset($data['tags'])) {
             $this->params['tags'] = $data['tags'];
         }
         if ($files === null || is_array($files) && $files[0] === null) {
             return new JsonResponse(array('success' => false, 'message' => "No upload file selected!"));
         }
         list($filetype, $spatialfilename, $sheetnames) = SpatialFileMethods::getSpatialFileType($files);
         list($runResults, $spatialfiles) = $this->processUploadedSpatialFiles($files, $filetype, $spatialfilename, $sheetnames);
         return new JsonResponse(array('success' => true, 'message' => 'Files successfully uploaded!', 'spatialfiles' => $this->getSpatialFile($spatialfiles), "result_messages" => $runResults));
     }
     return new JsonResponse(array('success' => false, 'message' => 'Files not successfully uploaded!'));
 }