$per_page, 'offset' => $offset, 'status' => $status_filter, 'search' => $search, )); $total = wmf_count_submissions($form_id, $status_filter, $search); $total_pages = ceil($total / $per_page); $base_url = add_query_arg(array( 'page' => 'wp-multi-formular', 'view_submissions' => $form_id, ), admin_url('admin.php')); ?>

Einreichungen

'Alle', 'neu' => 'Neu', 'gelesen' => 'Gelesen', 'archiviert' => 'Archiviert'); foreach($statuses as $s_key => $s_label): $cnt = ($s_key === '') ? wmf_count_submissions($form_id) : wmf_count_submissions($form_id, $s_key); $active = ($status_filter === $s_key) ? 'current' : ''; ?> ()

Keine Einreichungen gefunden.

Filter zurücksetzen

Noch keine Einreichungen vorhanden.

data, true) ?? array(); $view_url = add_query_arg(array( 'page' => 'wp-multi-formular', 'view_submission' => $row->id, 'form_id' => $form_id, ), admin_url('admin.php')); ?> 60 ? mb_substr($v, 0, 60).'…' : $v; ?>
# Datum Status Aktionen
#id); ?> created_at))); ?> created_at))); ?>
👁 Ansehen 🗑 Löschen
1): ?>
1): ?> « Zurück Seite von Weiter »
get_row($wpdb->prepare( "SELECT * FROM {$wpdb->prefix}wmf_submissions WHERE id = %d AND form_id = %d", $submission_id, $form_id )); if(!$row) { echo '

Einreichung nicht gefunden.

'; return; } // Als gelesen markieren if($row->status === 'neu') { WMF_Submission::update_status($submission_id, 'gelesen'); $row->status = 'gelesen'; } $data = json_decode($row->data, true) ?? array(); $meta = wmf_get_form_meta($form_id); $fields = self::get_display_fields($meta); $form = get_post($form_id); $back_url = add_query_arg(array( 'page' => 'wp-multi-formular', 'view_submissions' => $form_id, ), admin_url('admin.php')); $prev_url = self::get_adjacent_url($submission_id, $form_id, 'prev'); $next_url = self::get_adjacent_url($submission_id, $form_id, 'next'); ?>
← Alle Einreichungen
« Vorherige Nächste »
Einreichung #id); ?>
Formular post_title : 'Unbekannt'); ?>
Datum created_at))); ?>
IP-Adresse ip ?: '—'); ?>
Status
🗑 Löschen

Eingereichte Daten

Technische Informationen
User-Agentuser_agent ?: '—'); ?>
Erstellt amcreated_at); ?>
Datenbank-IDid); ?>
—'; return; } switch($type) { case 'checkbox': $vals = is_array($val) ? $val : explode(', ', $val); echo ''; break; case 'gdpr': $icon = $val === '1' ? '✅' : '❌'; echo $icon . ' ' . ($val === '1' ? 'Zugestimmt' : 'Nicht zugestimmt'); break; case 'signature': if(strpos($val, 'data:image') === 0) { echo ''; } else { echo 'Keine Unterschrift'; } break; case 'file': $urls = is_array($val) ? $val : explode(', ', $val); echo '
'; foreach($urls as $url) { $url = trim($url); if(!$url) continue; $filename = basename(parse_url($url, PHP_URL_PATH)); $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); $is_image = in_array($ext, array('jpg','jpeg','png','gif','webp')); if($is_image) { echo '
'; echo '
'; } else { echo '📎 ' . esc_html($filename) . ''; } } echo '
'; break; case 'rating': $stars = intval($val); $max = intval($field['max_stars'] ?? 5); echo '
'; for($i = 1; $i <= $max; $i++) { echo ''; } echo ' ' . $stars . '/' . $max . '
'; break; case 'url': echo '' . esc_html($val) . ''; break; case 'email': echo '' . esc_html($val) . ''; break; case 'textarea': echo '
' . nl2br(esc_html($val)) . '
'; break; default: if(is_array($val)) { echo ''; } else { echo '' . esc_html($val) . ''; } } } /* ================================================================ HILFSFUNKTIONEN ================================================================ */ private static function get_display_fields($meta) { return array_values(array_filter($meta['fields'] ?? array(), function($f) { return !in_array($f['type'] ?? '', array('html','divider','hidden')); })); } private static function get_adjacent_url($submission_id, $form_id, $direction) { global $wpdb; $op = $direction === 'prev' ? '>' : '<'; $order = $direction === 'prev' ? 'ASC' : 'DESC'; $adj = $wpdb->get_var($wpdb->prepare( "SELECT id FROM {$wpdb->prefix}wmf_submissions WHERE form_id = %d AND id {$op} %d ORDER BY id {$order} LIMIT 1", $form_id, $submission_id )); if(!$adj) return null; return add_query_arg(array('page'=>'wp-multi-formular','view_submission'=>$adj,'form_id'=>$form_id), admin_url('admin.php')); } public static function status_label($s) { return array('neu'=>'Neu','gelesen'=>'Gelesen','archiviert'=>'Archiviert')[$s] ?? $s; } public static function export_url($form_id) { return wp_nonce_url(add_query_arg(array('wmf_action'=>'export_csv','form_id'=>$form_id,'page'=>'wp-multi-formular'), admin_url('admin.php')), 'wmf_export_csv'); } public static function maybe_export($form_id) { if(empty($_GET['wmf_action']) || $_GET['wmf_action'] !== 'export_csv') return; if(!wp_verify_nonce($_GET['_wpnonce'] ?? '', 'wmf_export_csv')) return; $meta = wmf_get_form_meta($form_id); $fields = self::get_display_fields($meta); $rows = wmf_get_submissions($form_id, array('limit'=>9999)); header('Content-Type: text/csv; charset=utf-8'); header('Content-Disposition: attachment; filename="formular-' . $form_id . '-einreichungen.csv"'); $out = fopen('php://output', 'w'); fprintf($out, chr(0xEF).chr(0xBB).chr(0xBF)); $header = array('ID','Datum','Status','IP'); foreach($fields as $f) $header[] = $f['label']; fputcsv($out, $header, ';'); foreach($rows as $row) { $data = json_decode($row->data, true) ?? array(); $line = array($row->id, date_i18n('d.m.Y H:i', strtotime($row->created_at)), self::status_label($row->status), $row->ip); foreach($fields as $f) { $v = $data[$f['id']] ?? ''; if(is_array($v)) $v = implode(', ', $v); if(($f['type']??'') === 'signature') $v = '(Unterschrift)'; $line[] = $v; } fputcsv($out, $line, ';'); } fclose($out); exit; } }