public function replaceString($string, $arraySeparator = ', ') { if (!$this->submission->fieldsubmissions) { $this->submission->getFieldsubmissions(); } $string = preg_replace_callback('/\\$\\$(.+?)\\$\\$/is', function ($matches) use($arraySeparator) { $placeholder = explode(':', trim($matches[1]), 2); if (empty($placeholder[1]) || !isset($this->submission->fieldsubmissions[$placeholder[0]]) || !isset($this->submission->fieldsubmissions[$placeholder[0]][$placeholder[1]])) { return ''; } return is_array($this->submission->fieldsubmissions[$placeholder[0]][$placeholder[1]]) ? implode($arraySeparator, $this->submission->fieldsubmissions[$placeholder[0]][$placeholder[1]]) : $this->submission->fieldsubmissions[$placeholder[0]][$placeholder[1]]; }, $string); return $string; }
/** * @Route("/{id}", methods="DELETE", requirements={"id"="\d+"}) * @Request({"id": "int"}, csrf=true) */ public function deleteAction($id) { if ($field = Submission::find($id)) { $field->delete(); } return ['message' => 'success']; }
/** * @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]; }
/** * @Route("/submissions", methods="GET") * @Request({"filter": "array", "page":"int"}) */ public function submissionsAction($filter = null, $page = 0) { return ['$view' => ['title' => __('Submissions'), 'name' => 'formmaker:views/admin/submissions.php'], '$data' => ['forms' => array_values(Form::query()->get()), 'statuses' => Submission::getStatuses(), 'config' => ['filter' => $filter, 'page' => $page]]]; }