/** * @return string */ protected function getHeaders() { $headers = []; foreach ($this->options->get('datafields', []) as $datafield) { $headers[] = __($datafield); } //todo error checking foreach ($this->options->get('field_ids', []) as $field_id) { $headers[] = isset($this->form->fields[$field_id]) ? __($this->form->fields[$field_id]->label) : "Field {$field_id}"; } return $this->csvString($headers); }
/** * @Route("/csv", methods="POST") * @Request({"options": "array"}, csrf=true) */ public function exportCsvAction($options = []) { $csvString = ''; $options = new ArrObject($options); if ($form_id = $options->get('form_id', 0)) { //get forminfo $form = Form::find($form_id); //get submissions $query = Submission::query(); $query->where(['form_id = ?'], [$form_id])->whereIn('status', $options->get('status', [])); //input cleaned? $submissions = $query->orderBy('created', 'desc')->get(); $csvString = (new CsvHelper($submissions, $form, $options))->toCsv(); if ($options->get('mark_archived', false)) { Submission::query()->whereIn('id', array_keys($submissions))->update(['status' => Submission::STATUS_ARCHIVED]); } } else { App::abort(404, 'Not a single form was given.'); } return ['csv' => $csvString]; }