/** * @Route("/csv", methods="GET") * @Request({"options": "array"}, csrf=true) */ public function indexCsvAction($options = []) { $count = 0; $forms = []; $fields = []; $form = ['id' => 0]; $options = new ArrObject($options); if ($form_id = $options->get('form_id', 0)) { //get forminfo $form = Form::find($form_id); $fields = Field::where(['form_id = ?'], [$form_id])->get(); $options->set('field_ids', array_keys($fields)); //count exported submissions $query = Submission::query(); $query->where(['form_id = ?'], [$form_id])->whereIn('status', $options->get('status', [])); //input cleaned? $count = $query->count(); } else { $forms = array_values(Form::findAll()); } //force int $options->set('status', array_map(function ($id) { return (int) $id; }, $options->get('status', []))); $options->set('form_id', (int) $form_id); return ['options' => $options->toArray(), 'forms' => $forms, 'formitem' => $form, 'fields' => array_values($fields), 'count' => $count]; }