/** * 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!')); }