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]]];
 }