Make better settings screen

This commit is contained in:
2026-05-06 15:43:51 +02:00
parent 25deca4779
commit b57e26f0eb

View File

@@ -77,6 +77,12 @@ function go_form_get_forms()
return $wpdb->get_results("SELECT * FROM {$wpdb->prefix}go_form_forms ORDER BY created_at DESC"); return $wpdb->get_results("SELECT * FROM {$wpdb->prefix}go_form_forms ORDER BY created_at DESC");
} }
function go_form_get_form_name($id) {
global $wpdb;
$form = $wpdb->get_row($wpdb->prepare("SELECT name FROM {$wpdb->prefix}go_form_forms WHERE id = %d", $id));
return $form ? $form->name : 'Unknown Form';
}
function go_form_get_entries($form_id) function go_form_get_entries($form_id)
{ {
global $wpdb; global $wpdb;
@@ -154,9 +160,15 @@ function go_form_delete_entry()
go_form_admin_action('delete'); go_form_admin_action('delete');
if (isset($_POST['entry_id'])) { if (isset($_POST['entry_id'])) {
global $wpdb; global $wpdb;
$entry = $wpdb->get_row($wpdb->prepare("SELECT form_id FROM {$wpdb->prefix}go_form_entries WHERE id = %d", intval($_POST['entry_id'])));
$form_id = $entry ? $entry->form_id : 0;
$wpdb->delete("{$wpdb->prefix}go_form_entries", ['id' => intval($_POST['entry_id'])]); $wpdb->delete("{$wpdb->prefix}go_form_entries", ['id' => intval($_POST['entry_id'])]);
$redirect_url = add_query_arg(array('page' => 'go-form-settings', 'form_id' => $form_id, 'deleted' => 1), admin_url('admin.php'));
wp_redirect($redirect_url);
exit;
} }
wp_redirect(admin_url('admin.php?page=go-form-settings&deleted=1')); $redirect_url = add_query_arg(array('page' => 'go-form-settings', 'deleted' => 1), admin_url('admin.php'));
wp_redirect($redirect_url);
exit; exit;
} }
add_action('admin_post_go_form_delete_entry', 'go_form_delete_entry'); add_action('admin_post_go_form_delete_entry', 'go_form_delete_entry');
@@ -167,8 +179,13 @@ function go_form_create_form()
if (isset($_POST['form_name']) && !empty($_POST['form_name'])) { if (isset($_POST['form_name']) && !empty($_POST['form_name'])) {
global $wpdb; global $wpdb;
$wpdb->insert("{$wpdb->prefix}go_form_forms", ['name' => sanitize_text_field($_POST['form_name'])]); $wpdb->insert("{$wpdb->prefix}go_form_forms", ['name' => sanitize_text_field($_POST['form_name'])]);
$new_form_id = $wpdb->insert_id;
$redirect_url = add_query_arg(array('page' => 'go-form-settings', 'form_id' => $new_form_id, 'created' => 1), admin_url('admin.php'));
wp_redirect($redirect_url);
exit;
} }
wp_redirect(admin_url('admin.php?page=go-form-settings&created=1')); $redirect_url = add_query_arg(array('page' => 'go-form-settings'), admin_url('admin.php'));
wp_redirect($redirect_url);
exit; exit;
} }
add_action('admin_post_go_form_create_form', 'go_form_create_form'); add_action('admin_post_go_form_create_form', 'go_form_create_form');
@@ -182,7 +199,8 @@ function go_form_delete_form()
$wpdb->delete("{$wpdb->prefix}go_form_entries", ['form_id' => $id]); $wpdb->delete("{$wpdb->prefix}go_form_entries", ['form_id' => $id]);
$wpdb->delete("{$wpdb->prefix}go_form_forms", ['id' => $id]); $wpdb->delete("{$wpdb->prefix}go_form_forms", ['id' => $id]);
} }
wp_redirect(admin_url('admin.php?page=go-form-settings&deleted=1')); $redirect_url = add_query_arg(array('page' => 'go-form-settings', 'deleted' => 1), admin_url('admin.php'));
wp_redirect($redirect_url);
exit; exit;
} }
add_action('admin_post_go_form_delete_form', 'go_form_delete_form'); add_action('admin_post_go_form_delete_form', 'go_form_delete_form');
@@ -199,8 +217,6 @@ function go_form_settings_page()
if (!current_user_can('manage_options')) if (!current_user_can('manage_options'))
wp_die('No access.'); wp_die('No access.');
$forms = go_form_get_forms();
if (isset($_GET['deleted'])) if (isset($_GET['deleted']))
echo '<div class="notice notice-success"><p>Deleted!</p></div>'; echo '<div class="notice notice-success"><p>Deleted!</p></div>';
if (isset($_GET['created'])) if (isset($_GET['created']))
@@ -219,25 +235,32 @@ function go_form_settings_page()
</form> </form>
<h2>Manage Forms & Entries</h2>'; <h2>Manage Forms & Entries</h2>';
if (empty($forms)) {
echo '<p>No forms yet.</p>';
return;
}
foreach ($forms as $f) { $selected_form_id = isset($_GET['form_id']) ? intval($_GET['form_id']) : 0;
echo '<div style="margin-bottom:20px"> if ($selected_form_id) {
<h3>' . esc_html($f->name) . ' <span style="color:#888">(ID: ' . esc_html($f->id) . ')</span></h3>
<p><small>Shortcode: <code>[go_form id=' . esc_html($f->id) . ']</code></small></p>
<form method="post" action="' . admin_url('admin-post.php') . '" style="margin-bottom:15px"> $form_name = go_form_get_form_name($selected_form_id);
echo "<h3> $form_name Entries</h3>";
echo '<form method="post" action="' . admin_url('admin-post.php') . '" style="margin-bottom:15px">
' . wp_nonce_field('go_form_delete_form_action', 'go_form_delete_form_nonce', true, false) . ' ' . wp_nonce_field('go_form_delete_form_action', 'go_form_delete_form_nonce', true, false) . '
<input type="hidden" name="action" value="go_form_delete_form"> <input type="hidden" name="action" value="go_form_delete_form">
<input type="hidden" name="form_id" value="' . esc_attr($f->id) . '"> <input type="hidden" name="form_id" value="' . esc_attr($selected_form_id) . '">
<input type="submit" value="Delete Form" class="button delete" onclick="return confirm(\'Delete this form and ALL entries?\')"> <input type="submit" value="Delete Form" class="button delete" onclick="return confirm(\'Delete this form and ALL entries?\')">
</form>'; </form>';
$entries = go_form_get_entries($selected_form_id);
go_form_render_entries_table($entries, true);
} else {
$forms = go_form_get_forms();
echo '<h3>Forms</h3><ul>';
foreach ($forms as $f) {
$url = add_query_arg(array('page' => 'go-form-settings', 'form_id' => $f->id), admin_url('admin.php'));
echo '<li><a href="' . esc_url($url) . '">' . esc_html($f->name) . '</a> <span style="color:#888">(ID: ' . esc_html($f->id) . ')</span> - <small>Shortcode: <code>[go_form id=' . esc_html($f->id) . ']</code></small></li>';
}
echo '</ul>';
go_form_render_entries_table(go_form_get_entries($f->id), true);
echo '</div>';
} }
echo '</div>'; echo '</div>';
} }