headers->get('x-auth-token'); $indexElement = $request->query->get("indexArrayElement"); $security->isGranted('MAESTRO_PROJECT_PROJECTS_READ', $token); $csvString = ''; $dataFlux = $fluxQuery->fluxCSV($exportId, $indexElement); $typeExport = $dataFlux['typeExport']; $values = $dataFlux['values']; $csvArray = $fluxQuery->arrayToCsvArray($values); $assocProtocols = $dataFlux['assoc']; //Récupérer les entêtes du fichier CSV avec l'encodage des accents et surcharger les modifications dans les flux $csvHeaders = $dataFlux['headers']; //Récupérer le body du CSV avec l'encodage des accents $csvString .= implode('|', $csvHeaders) . PHP_EOL; $csvString = mb_convert_encoding($csvString, 'UTF-8'); $csvString = "\xEF\xBB\xBF" . $csvString; $result = []; $result[0] = $csvHeaders; if(!empty($csvArray)){ $products = reset($csvArray); asort($products); $elementIds = array_keys($products); $indexRowIDs = 0; foreach ($elementIds as $elementId) { foreach ($assocProtocols as $protocol) { $dataModel = $csvArray['Modèle de donnée'][$elementId]; $value = []; if(array_key_exists($dataModel, $protocol)){ $concat = $protocol[$dataModel]['concat']; $fieldIdPim = $protocol[$dataModel]['fieldId']; foreach ($fieldIdPim as $field) { if(array_key_exists($elementId, $csvArray) && array_key_exists($field, $csvArray[$elementId])){ if(!empty($csvArray[$elementId][$field]['collections'])){ $csvArray[$elementId][$field]['collections'] = array_values($csvArray[$elementId][$field]['collections']); if(isset($csvArray[$elementId][$field]['collections'][$protocol[$dataModel]['indexCol']])){ $collection = $csvArray[$elementId][$field]['collections'][$protocol[$dataModel]['indexCol']]; if(isset($protocol[$dataModel]['inputId'])){ foreach ($protocol[$dataModel]['inputId'] as $input) { if(array_key_exists('inputs', $collection) && array_key_exists($input, $collection['inputs'])){ $val = $collection['inputs'][$input]; if(is_array($val)){ $val = implode(',',$val); } $value[] = $val; } } } } } else { $val = $csvArray[$elementId][$field]['value']; if(is_array($val)){ $val = implode(',',$val); } $value[] = $val; } } } if(!empty($value)){ $result[$indexRowIDs +1][] = (implode($concat, $value) ?? ''); } else { $result[$indexRowIDs +1][] = ""; } } else { $result[$indexRowIDs +1][] = ""; } } $indexRowIDs ++; if($indexRowIDs < count($elementIds)){ $csvString .= PHP_EOL; } } } if($typeExport == 'CSV'){ $csvString = mb_convert_encoding($csvString, 'UTF-8', 'UTF-8'); $context = ['no_headers' => true, CsvEncoder::DELIMITER_KEY => $dataFlux['separator'], 'output_utf8_bom' => true]; //Renvoyer le résultat au téléchargement $response = new Response($container->get('serializer')->encode($result, 'csv', $context)); $response->headers->set('Content-Type', 'text/csv; charset=utf-8'); $response->headers->set('Content-Disposition', 'attachment; filename="file.csv"'); } else if($typeExport == 'EXCEL'){ ob_start(); $doc = new Spreadsheet(); $doc->setActiveSheetIndex(0); $doc->getActiveSheet()->fromArray($result, null, 'A1'); $writer = new Xlsx($doc); $writer->save('php://output'); $response = new Response( ob_get_clean(), // read from output buffer 200, array( 'Content-Type' => 'application/vnd.ms-excel', 'Content-Disposition' => 'attachment; filename="doc.xls"', ) ); $response->headers->set('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); $response->headers->set('Content-Disposition',' attachment;filename="your_name.xls"'); } $response->headers->set('Access-Control-Allow-Origin', $request->headers->get('Origin')); $response->send(); return $response->getStatusCode(); } }