/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed * @throws RedirectException */ public function handle($request, Closure $next) { $response = $next($request); $source = $request->get('source', 'api_data'); $filename = $request->get('filename', 'export_' . date('Y-m-d_Hi')); if ($request->get('download') && array_key_exists($source, $response->original->getData())) { switch ($request->get('download')) { case 'json': return response()->json($response->original->getData()[$source], 200, ['Content-Disposition' => 'attachment; filename="' . $filename . '.json"']); case 'csv': $writer = Writer::createFromFileObject(new \SplTempFileObject()); $writer->setDelimiter(','); $writer->setNewline("\r\n"); $writer->setEncodingFrom("utf-8"); $headers = ['Content-Type' => 'text/csv', 'Content-Disposition' => 'attachment; filename="' . $filename . '.csv"']; $csv_headers_set = false; foreach ($response->original->getData()[$source] as $data) { if (!$csv_headers_set) { $writer->insertOne(array_keys($this->getArrayRepresentation($data))); $csv_headers_set = true; } $writer->insertOne($this->processData($this->getArrayRepresentation($data))); } return response()->make($writer, 200, $headers); default: throw RedirectException::make('/')->setError('Unrecognised type to download'); } } return $response; }
protected function execute(InputInterface $input, OutputInterface $output) { $this->writeSection($output, 'Po to Csv converter'); $this->cwd = getcwd() . DIRECTORY_SEPARATOR; $output->writeln('<info>Using CWD</info> ' . $this->cwd); $poFiles = $this->getInputPoFiles($input, $output); $outputFolder = $this->getOutputFolder($input, $output); $useDefaults = $input->getOption('use-defaults'); if ($useDefaults) { $output->writeln('<info>Po files</info>:'); $this->writeList($output, $poFiles); $output->writeln(['', '<info>Output folder</info>: ' . $outputFolder]); } $poHandles = []; foreach ($poFiles as $poFile) { $key = basename($poFile, '.po'); $output->writeln('<info>loading ' . $key . '</info>...'); $poHandles[$key] = Translations::fromPoFile($poFile); } $output->writeln('<info>merging po files</info>...'); $csvArray = []; foreach ($poHandles as $language => $poHandle) { foreach ($poHandle as $translation) { $original = trim($translation->original); $translation = trim($translation->translation); if (!isset($csvArray[$original])) { $csvArray[$original] = [$language => $translation]; } elseif (!isset($csvArray[$original][$language])) { $csvArray[$original][$language] = $translation; } elseif ($csvArray[$original][$language] != $translation) { $csvArray[$original][$language] = $this->handleConflict($input, $output, $original, $csvArray[$original][$language], $translation); } } } $output->writeln('<info>writing csv</info>...'); $writer = Writer::createFromFileObject(new SplTempFileObject()); $writer->setDelimiter(';'); $header = ['original']; $header = array_merge($header, array_keys($poHandles)); $writer->insertOne($header); foreach ($csvArray as $original => $item) { $row = []; foreach ($header as $column) { if ($column === 'original') { $row[] = $original; } else { $row[] = isset($item[$column]) ? $item[$column] : null; } } $writer->insertOne($row); } $outputFile = $outputFolder . DIRECTORY_SEPARATOR . 'translations.csv'; file_put_contents($outputFile, $writer->__toString()); $output->writeln('<info>done. output file is</info> ' . $outputFile); }
/** * Execute the job. * * @return void */ public function handle(MergeManager $mergeManager, FileManager $fileManager) { $columns = ['PID', 'entity type', 'title', 'document type', 'URL', 'enabled', 'notes', 'format', 'reference', 'order']; $items = $mergeManager->fetchAll(); $writer = Writer::createFromFileObject(new SplTempFileObject()); $writer->insertOne($columns); $count = 0; foreach ($items as $item) { $row = [$item->object_number, $item->entity_type, $item->object->title, $item->url, $item->enabled, $item->format, $item->representation_order, $item->reference]; $writer->insertOne($row); $count++; } $output = (string) $writer; $timestamp = Carbon::now(); $fileName = sprintf("import_%s.csv", $timestamp->format('dmY_His')); $fileManager->saveFile($fileName, $output); $merger = new Merger(); $merger->filename = $fileName; $merger->documents = $count; $merger->save(); $context = new \ZMQContext(); $socket = $context->getSocket(\ZMQ::SOCKET_PUSH, 'my pusher'); $socket->connect("tcp://localhost:5555"); $socket->send('test'); }
/** * Overload render for array data output * * @param \FrenchFrogs\Table\Table\Table $table * @return array */ public function table(Table\Table $table) { // INitilisation du CSV $csv = Writer::createFromFileObject(new \SplTempFileObject()); // gestion des colonne $header = $columns = []; foreach ($table->getColumns() as $index => $column) { // Seule les colonnes Exportable peuvent être exporté if ($column instanceof Exportable) { $columns[$index] = $column; $header[$index] = $column->getLabel(); } } // insertion du header $csv->insertOne(array_values($header)); //@todo mettre en place un streaming pour économiser la memoire // insertion des lignes foreach ($table->getRows() as $row) { $line = []; foreach (array_keys($header) as $index) { $line[] = $columns[$index]->getValue($row); } $csv->insertOne($line); } $csv->output($table->getFilename()); exit; }
/** * Execute the console command. * * @return mixed */ public function fire() { $experiments = Experiment::active()->get(); $goals = array_unique(Goal::active()->orderBy('name')->lists('name')); $columns = array_merge(['Experiment', 'Visitors', 'Engagement'], array_map('ucfirst', $goals)); $writer = Writer::createFromFileObject(new SplTempFileObject()); $writer->insertOne($columns); foreach ($experiments as $experiment) { $engagement = $experiment->visitors ? $experiment->engagement / $experiment->visitors * 100 : 0; $row = [$experiment->name, $experiment->visitors, number_format($engagement, 2) . " % (" . $experiment->engagement . ")"]; $results = $experiment->goals()->lists('count', 'name'); foreach ($goals as $column) { $count = array_get($results, $column, 0); $percentage = $experiment->visitors ? $count / $experiment->visitors * 100 : 0; $row[] = number_format($percentage, 2) . " % ({$count})"; } $writer->insertOne($row); } $output = (string) $writer; if ($file = $this->argument('file')) { $this->info("Creating {$file}"); File::put($file, $output); } else { $this->line($output); } }
public function exportSelected() { $selected_students = Input::get('studentId'); if (is_array($selected_students)) { //Setup CSV $csv = \League\Csv\Writer::createFromFileObject(new \SplTempFileObject()); $column_flag = false; $student = []; foreach ($selected_students as $student_id) { $student_data = Students::with('course')->find($student_id); //Personal data $student['firstname'] = $student_data['firstname']; $student['surname'] = $student_data['surname']; $student['email'] = $student_data['email']; //Course data $student['university'] = $student_data->course['university']; $student['course_name'] = $student_data->course['course_name']; //Check whether column headers have been set (not ideal for large datasets) if ($column_flag === false) { $csv->insertOne(\Schema::getColumnListing('student')); $column_flag = true; } //Add student record to file $csv->insertOne($student); } } else { return "NO STUDENTS SELECTED"; } //is_array($selected_students) $csv->output("selected_student_records.csv"); }
public function run() { $commandResult = $this->runCommandPrompt(); $salaryCalendar = SalaryCalendar::get($commandResult['startDate'], $commandResult['endDate'], $commandResult['year']); $csvWriter = Writer::createFromFileObject(new \SplTempFileObject()); $writer = new CsvFileWriter($csvWriter, $salaryCalendar->calculatePayDays()); $writer->write($commandResult['path'] . DIRECTORY_SEPARATOR . $commandResult['name']); }
public function export() { $data = $this->formatData(); $keys = array_keys($data[0]); $csv = Writer::createFromFileObject(new SplTempFileObject()); $csv->insertOne($keys); $csv->insertAll($data); $csv->output($this->getFileName()); }
public function export() { $data = $this->formatData(); $keys = array_keys($data[0]); $csv = Writer::createFromFileObject(new SplTempFileObject()); $csv->insertOne($keys); $csv->insertAll($data); return (string) $csv; }
/** * Exports $result to $file. */ public function exportToFile(array $result, $file) { $writer = Writer::createFromFileObject(new SplTempFileObject()); foreach ($result['result'] as $row) { unset($row['_id']); $writer->insertOne($row); } file_put_contents($file, $writer->__toString()); }
public static function export($table, $dbConnection = 'default') { $data = DB::connection($dbConnection)->table($table)->get(); $csv = \League\Csv\Writer::createFromFileObject(new \SplTempFileObject()); $csv->insertOne(\Schema::getColumnListing($table)); foreach ($data as $row) { $csv->insertOne((array) $row); } $csv->output($table . '-' . date('YmdHi') . '.csv'); }
/** * Execute the console command. * * @return mixed */ public function handle() { $size = (int) $this->argument('size'); $documents = factory('App\\Models\\Document', $size)->make()->toArray(); $headers = array_keys($documents[0]); $csv = Writer::createFromFileObject(new SplTempFileObject()); $csv->insertOne($headers); $csv->insertAll($documents); Storage::put('testdata/test-' . $size . '.csv', $csv); }
public function encode(array $content) { $writer = Writer::createFromFileObject(new \SplTempFileObject()); $writer->setDelimiter($this->delimiter); $writer->setNewline($this->newline); $writer->setEnclosure($this->enclosure); $writer->setEscape($this->escapeChar); $writer->insertAll($content); return (string) $writer; }
/** * Show the form for creating a new resource. * * @return Response */ public function create() { $people = bbStock::all(); $csv = \League\Csv\Writer::createFromFileObject(new \SplTempFileObject()); $csv->insertOne(\Schema::getColumnListing('bbstock')); foreach ($people as $person) { $csv->insertOne($person->toArray()); } $csv->output('bbstock.csv'); }
/** * @param \Madewithlove\Export\Csv\Transformer $transformer * * @return \League\Csv\Writer */ private function writer(Transformer $transformer = null) { $writer = Writer::createFromFileObject(new SplTempFileObject()); if ($transformer instanceof WithHeaders) { $writer->insertOne($transformer->getHeaders()); } if ($transformer instanceof Transformer) { $writer->addFormatter([$transformer, 'transform']); } return $writer; }
/** * Converts a data collection to a CSV file. */ protected function processExportData($columns, $results, $options) { /* * Validate */ if (!$results) { throw new ApplicationException('There was no data supplied to export'); } /* * Parse options */ $defaultOptions = ['useOutput' => false, 'fileName' => 'export.csv', 'delimiter' => null, 'enclosure' => null, 'escape' => null]; $options = array_merge($defaultOptions, $options); $columns = $this->exportExtendColumns($columns); /* * Prepare CSV */ $csv = CsvWriter::createFromFileObject(new SplTempFileObject()); if ($options['delimiter'] !== null) { $csv->setDelimiter($options['delimiter']); } if ($options['enclosure'] !== null) { $csv->setEnclosure($options['enclosure']); } if ($options['escape'] !== null) { $csv->setEscape($options['escape']); } /* * Add headers */ $headers = $this->getColumnHeaders($columns); $csv->insertOne($headers); /* * Add records */ foreach ($results as $result) { $data = $this->matchDataToColumns($result, $columns); $csv->insertOne($data); } /* * Output */ if ($options['useOutput']) { $csv->output($options['fileName']); } /* * Save for download */ $csvName = uniqid('oc'); $csvPath = temp_path() . '/' . $csvName; $output = $csv->__toString(); File::put($csvPath, $output); return $csvName; }
function exportCSV($query, $headerArray, $filename) { $conn = Connection::getInstance(); $statement = $conn->db->prepare($query); $statement->setFetchMode(PDO::FETCH_ASSOC); $statement->execute(); $csv = Writer::createFromFileObject(new SplTempFileObject()); $csv->insertOne($headerArray); $csv->insertAll($statement); $csv->output($filename . '.csv'); die; }
public function post_export_subscriber_list_members() { $csv = \League\Csv\Writer::createFromFileObject(new \SplTempFileObject()); $columns = array("List Name", "Count Openers", "Count Clickers", "Count Active", "Count Unsubscribers", "Count Bounce", "Count Total", "Last Activity"); $csv->insertOne($columns); $baseQuery = DB::table('subscribers_lists')->leftjoin('subscribers_lists_subscribers', 'subscribers_lists.id', '=', 'subscribers_lists_subscribers.subscribers_list_id')->leftjoin('subscribers', 'subscribers_lists_subscribers.subscriber_id', '=', 'subscribers.id')->select('subscribers_lists.name', 'subscribers_lists.id as count_openers', 'subscribers_lists.id as count_clickers', DB::raw('count(case when subscribers.status = "Active" then 1 else null end) as count_active'), DB::raw('count(case when subscribers.status = "Unsubscribed" then 1 else null end) as count_unsubsribers'), DB::raw('count(case when subscribers.status = "Bounced" then 1 else null end) as count_bounced'), DB::raw('count(subscribers_lists_subscribers.subscribers_list_id) as count_total'), 'subscribers_lists.updated_at as last_activity')->whereNull('subscribers_lists.webinar_id')->groupBy('subscribers_lists.id')->get(); foreach ($baseQuery as $value) { $temp_data = array($value->name, $value->count_openers, $value->count_clickers, $value->count_active, $value->count_unsubsribers, $value->count_bounced, $value->count_total, $value->last_activity); $csv->insertOne($temp_data); } $current_time = Carbon::now(); $csv->output('subscriber_list_members_' . $current_time->toDateTimeString() . '.csv'); }
public function download() { $col = new Collection(Request::input('data')); //dd(); //we create the CSV into memory $csv = Writer::createFromFileObject(new SplTempFileObject()); $csv->insertAll($col); // Because you are providing the filename you don't have to // set the HTTP headers Writer::output can // directly set them for you // The file is downloadable $csv->output(Request::input('id') . '.csv'); die; }
/** * Export the data * * @param mixed $input - required unless already set using setInput * @param array $options - an array of OptionInterface of key value pair resolvable as an option */ public function export(DataInterface $input = null, array $options = array()) { $input = $input ?: $this->getInput(); $options = $options ?: $this->getOptions(); if (!$this->supports($input)) { throw new UnsupportedDataException(sprintf('%s does not support exporting the set %s data of depth %d', get_class($this), get_class($input), $input->getDepth())); } $headers = $this->getHeaders($input, $options); $writer = Writer::createFromFileObject(new SplTempFileObject()); $writer->insertOne($headers); foreach ($input as $row) { $writer->insertOne($this->getRow($headers, $row)); } $this->outputResult($writer->__toString(), $options); }
protected function execute(InputInterface $input, OutputInterface $output) { //$products = Product::select(['id', 'description', 'price'])->get(); $query = "\n select\n products.id as CODICE,\n products.description as NOME,\n products.price as PREZZO,\n products.category as CATEGORIA,\n count(menu_products.id) as NUMERO_PUBBLICAZIONI,\n count(menu_orders_products.id) as NUMERO_VENDITE,\n DATE_FORMAT(\n (select menu.start_date\n from menu_products left join menu on (menu.id = menu_products.menu_id)\n where menu_products.product_id = products.id\n order by menu.start_date desc\n limit 1),\n \"%d %b %Y\") as ULTIMA_PUBBLICAZIONE\n\n from products\n left join menu_products on (products.id = menu_products.product_id)\n left join menu_orders_products on (menu_products.id = menu_orders_products.menu_product_id)\n\n GROUP BY products.id\n order by\n FIELD(CATEGORIA, 'Primi Piatti', 'Secondi di Carne', 'Secondi di Pesce', 'Verdure, ortaggi e contorni', 'Piatti Vegetariani', 'Contorni', 'Panini Imbottiti', 'Frutta e Dessert', 'Pane', 'Salumi', 'Formaggi', 'Bibite', 'Snack', 'Aggiunte', 'Condimenti'),\n NOME ASC\n "; //we create the CSV into memory $csv = Writer::createFromFileObject(new \SplTempFileObject()); //object to array $data = array_map(function ($row) { return (array) $row; }, Capsule::select($query)); //we insert the CSV header $csv->insertOne(array_keys($data[0])); $csv->setOutputBOM(Writer::BOM_UTF8); // The PDOStatement Object implements the Traversable Interface // that's why Writer::insertAll can directly insert // the data into the CSV $csv->insertAll($data); $csv->output(); }
/** * Parses a DataTable into a CSV file. * * Pass in a DataTable and a csv file will be generated. * * @access public * @since 1.0.0 * @param string $filepath Path where to output the file * @throws \Khill\Lavacharts\Exceptions\InvalidFunctionParam * @return string */ public function toCsv($filepath) { if (Utils::nonEmptyString($filepath) === false) { throw new InvalidFunctionParam($filepath, __FUNCTION__, 'string'); } $csv = Writer::createFromFileObject(new \SplTempFileObject()); $csv->insertOne($this->getColumnLabels()); foreach ($this->rows as $row) { $rowData = []; foreach ($row['c'] as $data) { $rowData[] = $data['v']; } $csv->insertOne($rowData); } $csv->output($filepath); }
public function downloadCsv($data) { $fileName = 'data-' . date('Y-m-d H:i:s') . '.csv'; $headers = ['Cache-Control' => 'must-revalidate, post-check=0, pre-check=0', 'Content-type' => 'text/csv', 'Content-Disposition' => 'attachment; filename=' . $fileName, 'Expires' => '0', 'Pragma' => 'public']; $csv = \League\Csv\Writer::createFromFileObject(new \SplTempFileObject()); foreach ($data as $datum) { $csv->insertOne($datum); } $csv->output($fileName); //have to die out, for laravel not to append non-sense die; }
/** * Returns the list results as a CSV export. */ public function listExportCsv($options = [], $definition = null) { /* * Locate widget */ if (!count($this->listWidgets)) { $this->makeLists(); } if (!$definition || !isset($this->listDefinitions[$definition])) { $definition = $this->primaryDefinition; } $widget = $this->listWidgets[$definition]; /* * Parse options */ $defaultOptions = ['filename' => 'export.csv']; $options = array_merge($defaultOptions, $options); extract($options); /* * Prepare CSV */ $csv = Writer::createFromFileObject(new SplTempFileObject()); /* * Add headers */ $headers = []; $columns = $widget->getVisibleColumns(); foreach ($columns as $column) { $headers[] = Lang::get($column->label); } $csv->insertOne($headers); /* * Add records */ $model = $widget->prepareModel(); $results = $model->get(); foreach ($results as $result) { $record = []; foreach ($columns as $column) { $record[] = $widget->getColumnValue($result, $column); } $csv->insertOne($record); } /* * Output */ $csv->output($filename); exit; }
public function getActions($docId) { $doc = Doc::where('id', $docId)->first(); if ($doc) { $skip_ids = $doc->sponsorIds; $actions = DocAction::where('doc_id', $docId)->whereNotIn('user_id', $skip_ids)->with('user')->orderBy('created_at')->get(); if ($actions) { if (Input::get('download') === 'csv') { $csv = Writer::createFromFileObject(new \SplTempFileObject()); $fields = array('first_name', 'last_name', 'email', 'quote', 'text', 'type', 'created_at'); // Headings. $csv->insertOne($fields); foreach ($actions as $action) { $actionRow = $action->toArray(); $actionRow['first_name'] = $actionRow['user']['fname']; $actionRow['last_name'] = $actionRow['user']['lname']; $actionRow['email'] = $actionRow['user']['email']; // Rearrange our columns $saveRow = array(); foreach ($fields as $field) { $saveRow[$field] = $actionRow[$field]; } $csv->insertOne($saveRow); } $csv->output('actions.csv'); return; } else { return Response::json($actions->toArray()); } } } return Response::notFound(); }
public function exportCSV($lines) { $csv = Writer::createFromFileObject(new SplTempFileObject(1000000000)); foreach ($lines as $line) { $csv->insertOne($line); } $csv->output('report.csv'); die; }
public function export(Request $request, $race_id) { $race = Race::find($race_id); if ($request->has('format')) { $runners = Runner::where([['race_id', $race_id], ['status', 1]])->get(); $csv = Writer::createFromFileObject(new \SplTempFileObject()); if ($request->get('format') == 'excel_win') { $csv->setDelimiter(';'); $csv->setOutputBOM(Writer::BOM_UTF8); } $csv->insertOne(\Schema::getColumnListing('runners')); foreach ($runners as $runner) { $csv->insertOne($runner->toArray()); } $csv->output($race->prefix . '_runners.csv'); die; } return view('admin.export'); }
/** * Output table data as csv. */ public function export($format = 'csv') { // grab data $data = Advisor::select('advisors.id as AdvisorID', 'advisors.created_at as RegistrationTime', 'advisors.name as AdvisorName', 'schools.name as SchoolName', 'advisors.email as AdvisorEmail', 'advisors.attending_advisor as AttAdvisorResponsible', 'advisors.comments as Comments')->leftJoin('schools', 'schools.id', '=', 'advisors.school_id')->get(); // create empty file $csv = Writer::createFromFileObject(new \SplTempFileObject()); // create header $csv->insertOne(['AdvisorID', 'RegistrationTime', 'AdvisorName', 'SchoolName', 'AdvisorEmail', 'AttAdvisorResponsible', 'Comments']); // insert rows as associative array $csv->insertAll($data->toArray()); $csv->output('advisors_' . \Carbon\Carbon::now()->timestamp . '.csv'); }
/** * Export Depreciation Report as CSV * * @return file download */ public function exportDeprecationReport() { // Grab all the assets $assets = Asset::with('model', 'assigneduser', 'assetstatus', 'defaultLoc', 'assetlog')->orderBy('created_at', 'DESC')->get(); $csv = \League\Csv\Writer::createFromFileObject(new \SplTempFileObject()); $csv->setOutputBOM(Reader::BOM_UTF16_BE); $rows = []; // Create the header row $header = [Lang::get('admin/hardware/table.asset_tag'), Lang::get('admin/hardware/table.title'), Lang::get('admin/hardware/table.serial'), Lang::get('admin/hardware/table.checkoutto'), Lang::get('admin/hardware/table.location'), Lang::get('admin/hardware/table.purchase_date'), Lang::get('admin/hardware/table.purchase_cost'), Lang::get('admin/hardware/table.book_value'), Lang::get('admin/hardware/table.diff')]; //we insert the CSV header $csv->insertOne($header); // Create a row per asset foreach ($assets as $asset) { $row = []; $row[] = $asset->asset_tag; $row[] = $asset->name; $row[] = $asset->serial; if ($asset->assigned_to > 0) { $user = User::find($asset->assigned_to); $row[] = $user->fullName(); } else { $row[] = ''; // Empty string if unassigned } if ($asset->assigned_to > 0 && $asset->assigneduser->location_id > 0) { $location = Location::find($asset->assigneduser->location_id); if ($location->city) { $row[] = $location->city . ', ' . $location->state; } elseif ($location->name) { $row[] = $location->name; } else { $row[] = ''; } } else { $row[] = ''; // Empty string if location is not set } if ($asset->assetloc) { $currency = $asset->assetloc->currency; } else { $currency = Setting::first()->default_currency; } $row[] = $asset->purchase_date; $row[] = $currency . number_format($asset->purchase_cost); $row[] = $currency . number_format($asset->getDepreciatedValue()); $row[] = $currency . number_format($asset->purchase_cost - $asset->getDepreciatedValue()); $csv->insertOne($row); } $csv->output('depreciation-report-' . date('Y-m-d') . '.csv'); die; }
return ['schools' => ['data_callback' => 'csv_export_schools', 'headers' => ['Κωδικός μονάδας', 'Ονομασία', 'Τύπος μονάδας', 'Περιφερειακή ενότητα', 'Διεύθυνση εκπαίδευσης', 'Περιφερειακή διεύθυνση εκπαίδευσης', 'Βαθμίδα εκπαίδευσης']], 'labs' => ['data_callback' => 'csv_export_labs', 'headers' => ['ID', 'Κωδικός σχολείου', 'Ονομασία σχολείου', 'Ονομασία χώρου', 'Τύπος χώρου', 'Ειδικότητα υπευθύνου', 'Νέος χώρος', 'Επιφάνεια (m^2)', 'Σύνδεση στο δίκτυο', 'Διαθέτει server', 'Μαθήματα', 'Χρήση στα πλαίσια μαθημάτων', 'Χρήση για δραστηριότητες εκτός εκπαιδευτικού προγράμματος']], 'assets' => ['data_callback' => 'csv_export_assets', 'headers' => ['Είδος', 'Πλήθος ', 'Έτος κτήσης', 'ID χώρου', 'Τύπος χώρου', 'Κωδικός σχολείου', 'Ονομασία σχολείου', 'Σχόλια - Παρατηρήσεις']], 'software' => ['data_callback' => 'csv_export_software', 'headers' => ['Τύπος', 'Κωδικός σχολείου', 'Ονομασία σχολείου', 'ID χώρου', 'Τύπος χώρου', 'Ονομασία', 'Κατασκευαστής', 'URL']], 'appforms' => ['data_callback' => 'csv_export_appforms', 'headers' => ['ID', 'Κωδικός σχολείου', 'Ονομασία σχολείου', 'Ημερομηνία υποβολής', 'Σχόλια - Παρατηρήσεις']], 'appnewforms' => ['data_callback' => 'csv_export_appnewforms', 'headers' => ['ID', 'Κωδικός σχολείου', 'Ονομασία σχολείου', 'Ημερομηνία υποβολής', 'Σχόλια - Παρατηρήσεις']], 'appforms_items' => ['data_callback' => 'csv_export_appforms_items', 'headers' => ['ID', 'Κωδικός σχολείου', 'Ονομασία σχολείου', 'Ημερομηνία υποβολής', 'ID χώρου', 'Τύπος χώρου', 'Νέος χώρος', 'Είδος', 'Πλήθος ', 'Αιτιολογία χρήσης']], 'newapplication' => ['data_callback' => 'csv_export_newapplication', 'headers' => ['ID', 'Κωδικός σχολείου', 'Ονομασία σχολείου', 'Είδος', 'Πλήθος Υπαρχόντων που λειτουργούν', 'Πλήθος Αιτουμένων', 'Αιτιολογία χρήσης']]]; }; $c['csv_export_csv_response'] = function ($c) { return function ($res, callable $dataCallback, array $headers, $filename) use($c) { $csvFactory = $c['csv_export_csv_factory']; $csv = $csvFactory($dataCallback(), $headers); $res = $res->withHeader('Content-Type', 'application/octet-stream'); $res = $res->withHeader('Content-Transfer-Encoding', 'binary'); $res = $res->withHeader('Content-Disposition', 'attachment; filename=' . $filename); $res->write($csv); return $res; }; }; $c['csv_export_csv_factory'] = function ($c) { return function (array $data, array $headers = null) { $csv = Writer::createFromFileObject(new SplTempFileObject()); $csv->setOutputBOM(Reader::BOM_UTF8); $csv->addFormatter(function ($row) { return array_map(function ($value) { return str_replace(["\n", "\r"], ' ', $value); }, $row); }); if (null !== $headers) { $csv->insertOne($headers); } $csv->insertAll($data); return $csv; }; }; $c['csv_export_schools'] = function ($c) { return function () {