576 lines
19 KiB
PHP
576 lines
19 KiB
PHP
<?php
|
|
|
|
if (!defined('ABSPATH'))
|
|
exit;
|
|
|
|
// ========== Database ==========
|
|
function go_form_activate()
|
|
{
|
|
global $wpdb;
|
|
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
|
$charset = $wpdb->get_charset_collate();
|
|
$forms = $wpdb->prefix . 'go_form_forms';
|
|
$entries = $wpdb->prefix . 'go_form_entries';
|
|
$custom_fields = $wpdb->prefix . 'go_form_custom_fields';
|
|
$custom_values = $wpdb->prefix . 'go_form_entry_custom_values';
|
|
|
|
dbDelta("CREATE TABLE $forms (
|
|
id int NOT NULL AUTO_INCREMENT,
|
|
name varchar(255) NOT NULL,
|
|
created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
|
PRIMARY KEY (id)
|
|
) $charset;");
|
|
|
|
dbDelta("CREATE TABLE $entries (
|
|
id int NOT NULL AUTO_INCREMENT,
|
|
form_id int DEFAULT 1,
|
|
first_name varchar(100) NOT NULL,
|
|
last_name varchar(100) NOT NULL,
|
|
country varchar(100) DEFAULT NULL,
|
|
club varchar(100) DEFAULT NULL,
|
|
rank tinyint(2) DEFAULT 0,
|
|
rating smallint(5) DEFAULT 0,
|
|
egd_number varchar(20) DEFAULT NULL,
|
|
created_at date DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
|
PRIMARY KEY (id),
|
|
FOREIGN KEY (form_id) REFERENCES $forms(id) ON DELETE CASCADE,
|
|
INDEX (form_id)
|
|
) $charset;");
|
|
|
|
dbDelta("CREATE TABLE $custom_fields (
|
|
id int NOT NULL AUTO_INCREMENT,
|
|
form_id int NOT NULL,
|
|
field_name varchar(100) NOT NULL,
|
|
field_type enum('select','text','checkbox', 'email') NOT NULL DEFAULT 'text',
|
|
field_options text,
|
|
is_public tinyint(1) NOT NULL DEFAULT 0,
|
|
is_required tinyint(1) NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (id),
|
|
FOREIGN KEY (form_id) REFERENCES $forms(id) ON DELETE CASCADE,
|
|
INDEX (form_id)
|
|
) $charset;");
|
|
|
|
dbDelta("CREATE TABLE $custom_values (
|
|
id int NOT NULL AUTO_INCREMENT,
|
|
entry_id int NOT NULL,
|
|
field_id int NOT NULL,
|
|
value text,
|
|
PRIMARY KEY (id),
|
|
FOREIGN KEY (entry_id) REFERENCES $entries(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (field_id) REFERENCES $custom_fields(id) ON DELETE CASCADE,
|
|
INDEX (entry_id),
|
|
INDEX (field_id)
|
|
) $charset;");
|
|
}
|
|
|
|
function go_form_uninstall()
|
|
{
|
|
global $wpdb;
|
|
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}go_form_entry_custom_values");
|
|
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}go_form_custom_fields");
|
|
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}go_form_entries");
|
|
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}go_form_forms");
|
|
}
|
|
// ========== Helpers ==========
|
|
$ranks = [
|
|
0 => '30k', 1 => '29k', 2 => '28k', 3 => '27k', 4 => '26k',
|
|
5 => '25k', 6 => '24k', 7 => '23k', 8 => '22k', 9 => '21k',
|
|
10 => '20k', 11 => '19k', 12 => '18k', 13 => '17k', 14 => '16k',
|
|
15 => '15k', 16 => '14k', 17 => '13k', 18 => '12k', 19 => '11k',
|
|
20 => '10k', 21 => '9k', 22 => '8k', 23 => '7k', 24 => '6k',
|
|
25 => '5k', 26 => '4k', 27 => '3k', 28 => '2k', 29 => '1k',
|
|
30 => '1d', 31 => '2d', 32 => '3d', 33 => '4d', 34 => '5d',
|
|
35 => '6d', 36 => '7d', 37 => '8d', 38 => '9d', 39 => '1p',
|
|
40 => '2p', 41 => '3p', 42 => '4p', 43 => '5p', 44 => '6p',
|
|
45 => '7p', 46 => '8p', 47 => '9p'
|
|
];
|
|
|
|
function go_form_get_forms()
|
|
{
|
|
global $wpdb;
|
|
return $wpdb->get_results("SELECT * FROM {$wpdb->prefix}go_form_forms ORDER BY created_at DESC");
|
|
}
|
|
|
|
function go_form_get_form_by_id($id)
|
|
{
|
|
global $wpdb;
|
|
return $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}go_form_forms WHERE id = %d", intval($id)));
|
|
}
|
|
|
|
function go_form_get_entries($form_id)
|
|
{
|
|
global $wpdb;
|
|
return $wpdb->get_results($wpdb->prepare(
|
|
"SELECT * FROM {$wpdb->prefix}go_form_entries WHERE form_id = %d ORDER BY rank DESC",
|
|
$form_id
|
|
));
|
|
}
|
|
|
|
function go_form_render_entries_table($entries, $show_admin = false, $custom_fields = [], $form_id = 0)
|
|
{
|
|
global $ranks;
|
|
|
|
include "templates/table.php";
|
|
}
|
|
|
|
// ========== Custom Fields Helpers ==========
|
|
function go_form_get_custom_fields($form_id)
|
|
{
|
|
global $wpdb;
|
|
return $wpdb->get_results($wpdb->prepare(
|
|
"SELECT * FROM {$wpdb->prefix}go_form_custom_fields WHERE form_id = %d ORDER BY id ASC",
|
|
$form_id
|
|
));
|
|
}
|
|
|
|
function go_form_get_custom_field_by_id($field_id)
|
|
{
|
|
global $wpdb;
|
|
return $wpdb->get_row($wpdb->prepare(
|
|
"SELECT * FROM {$wpdb->prefix}go_form_custom_fields WHERE id = %d",
|
|
$field_id
|
|
));
|
|
}
|
|
|
|
function go_form_get_custom_values($entry_id)
|
|
{
|
|
global $wpdb;
|
|
return $wpdb->get_results($wpdb->prepare(
|
|
"SELECT cf.*, cv.value FROM {$wpdb->prefix}go_form_custom_fields cf
|
|
JOIN {$wpdb->prefix}go_form_entry_custom_values cv ON cf.id = cv.field_id
|
|
WHERE cv.entry_id = %d",
|
|
$entry_id
|
|
));
|
|
}
|
|
|
|
function go_form_get_custom_value($entry_id, $field_id)
|
|
{
|
|
global $wpdb;
|
|
return $wpdb->get_var($wpdb->prepare(
|
|
"SELECT value FROM {$wpdb->prefix}go_form_entry_custom_values
|
|
WHERE entry_id = %d AND field_id = %d",
|
|
$entry_id, $field_id
|
|
));
|
|
}
|
|
|
|
function go_form_get_entry_by_id($entry_id)
|
|
{
|
|
global $wpdb;
|
|
return $wpdb->get_row($wpdb->prepare(
|
|
"SELECT * FROM {$wpdb->prefix}go_form_entries WHERE id = %d",
|
|
$entry_id
|
|
));
|
|
}
|
|
|
|
// ========== Form Handling ==========
|
|
function go_form_handle_submission()
|
|
{
|
|
if (!isset($_POST['go_form_nonce']) || !wp_verify_nonce($_POST['go_form_nonce'], 'go_form_action'))
|
|
wp_die('Security check failed');
|
|
|
|
global $wpdb;
|
|
if (isset($_POST['form_id'])) {
|
|
$form_id = intval($_POST['form_id']);
|
|
} else {
|
|
wp_redirect($_SERVER['HTTP_REFERER']);
|
|
exit;
|
|
}
|
|
|
|
$rating = intval($_POST['rating']);
|
|
$rank = intval($_POST['rank']);
|
|
if ($rating < -900) {
|
|
$rating = ($rank * 100) - 900;
|
|
}
|
|
|
|
$data = [
|
|
'form_id' => $form_id,
|
|
'first_name' => sanitize_text_field($_POST['first_name']),
|
|
'last_name' => sanitize_text_field($_POST['last_name']),
|
|
'country' => sanitize_text_field($_POST['country'] ?? ''),
|
|
'club' => sanitize_text_field($_POST['club'] ?? ''),
|
|
'rank' => $rank,
|
|
'rating' => $rating,
|
|
'egd_number' => sanitize_text_field($_POST['egd_number'] ?? ''),
|
|
];
|
|
|
|
if (empty($data['first_name']) || empty($data['last_name'])) {
|
|
wp_redirect($_SERVER['HTTP_REFERER']);
|
|
exit;
|
|
}
|
|
|
|
$wpdb->insert("{$wpdb->prefix}go_form_entries", $data);
|
|
$entry_id = $wpdb->insert_id;
|
|
|
|
// Save custom field values
|
|
$custom_fields = go_form_get_custom_fields($form_id);
|
|
foreach ($custom_fields as $field) {
|
|
$field_name = 'custom_field_' . $field->id;
|
|
if (isset($_POST[$field_name])) {
|
|
$value = $_POST[$field_name];
|
|
if ($field->field_type === 'checkbox') {
|
|
$value = isset($_POST[$field_name]) ? '1' : '0';
|
|
} elseif (is_array($value)) {
|
|
$value = implode(',', array_map('sanitize_text_field', $value));
|
|
} else {
|
|
$value = sanitize_text_field($value);
|
|
}
|
|
$wpdb->insert("{$wpdb->prefix}go_form_entry_custom_values", [
|
|
'entry_id' => $entry_id,
|
|
'field_id' => $field->id,
|
|
'value' => $value
|
|
]);
|
|
} elseif ($field->is_required) {
|
|
// If required field is missing, delete the entry and redirect back
|
|
$wpdb->delete("{$wpdb->prefix}go_form_entries", ['id' => $entry_id]);
|
|
wp_redirect($_SERVER['HTTP_REFERER']);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
wp_redirect($_SERVER['HTTP_REFERER']);
|
|
exit;
|
|
}
|
|
add_action('admin_post_go_form_handle_submission', 'go_form_handle_submission');
|
|
|
|
// ========== Shortcode ==========
|
|
function go_form_shortcode($atts)
|
|
{
|
|
global $ranks;
|
|
$form_id = intval($atts['id']);
|
|
|
|
$form = go_form_get_form_by_id($form_id);
|
|
ob_start();
|
|
if ($form) {
|
|
include 'templates/form-shortcode.php';
|
|
} else {
|
|
echo '<p>WRONG FORM ID</p>';
|
|
}
|
|
|
|
return ob_get_clean();
|
|
}
|
|
add_shortcode('go_form', 'go_form_shortcode');
|
|
|
|
// ========== Admin Actions ==========
|
|
|
|
function go_form_admin_action($type)
|
|
{
|
|
if (!isset($_POST["go_form_{$type}_nonce"]) || !wp_verify_nonce($_POST["go_form_{$type}_nonce"], "go_form_{$type}_action"))
|
|
wp_die('Security check failed');
|
|
if (!current_user_can('manage_options'))
|
|
wp_die('Insufficient permissions.');
|
|
}
|
|
|
|
function go_form_delete_entry()
|
|
{
|
|
go_form_admin_action('delete_entry');
|
|
if (isset($_POST['value_one'])) {
|
|
global $wpdb;
|
|
$entry_id = intval($_POST['value_one']);
|
|
$entry = $wpdb->get_row($wpdb->prepare("SELECT form_id FROM {$wpdb->prefix}go_form_entries WHERE id = %d", $entry_id));
|
|
$form_id = $entry ? $entry->form_id : 0;
|
|
$wpdb->delete("{$wpdb->prefix}go_form_entries", ['id' => $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;
|
|
}
|
|
$redirect_url = add_query_arg(array('page' => 'go-form-settings', 'deleted' => 1), admin_url('admin.php'));
|
|
wp_redirect($redirect_url);
|
|
exit;
|
|
}
|
|
add_action('admin_post_go_form_delete_entry', 'go_form_delete_entry');
|
|
|
|
function go_form_create_form()
|
|
{
|
|
go_form_admin_action('create_form');
|
|
if (isset($_POST['form_name']) && !empty($_POST['form_name'])) {
|
|
global $wpdb;
|
|
$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;
|
|
}
|
|
$redirect_url = add_query_arg(array('page' => 'go-form-settings'), admin_url('admin.php'));
|
|
wp_redirect($redirect_url);
|
|
exit;
|
|
}
|
|
add_action('admin_post_go_form_create_form', 'go_form_create_form');
|
|
|
|
function go_form_delete_form()
|
|
{
|
|
go_form_admin_action('delete_form');
|
|
if (isset($_POST['value_one'])) {
|
|
global $wpdb;
|
|
$id = intval($_POST['value_one']);
|
|
$wpdb->delete("{$wpdb->prefix}go_form_forms", ['id' => $id]);
|
|
}
|
|
$redirect_url = add_query_arg(array('page' => 'go-form-settings', 'deleted' => 1), admin_url('admin.php'));
|
|
wp_redirect($redirect_url);
|
|
exit;
|
|
}
|
|
add_action('admin_post_go_form_delete_form', 'go_form_delete_form');
|
|
|
|
function go_form_export_csv()
|
|
{
|
|
include_once 'export/csv.php';
|
|
exit;
|
|
}
|
|
add_action('admin_post_go_form_export_csv', 'go_form_export_csv');
|
|
|
|
function go_form_export_pairgoth()
|
|
{
|
|
include_once 'export/pairgoth.php';
|
|
exit;
|
|
}
|
|
add_action('admin_post_go_form_export_pairgoth', 'go_form_export_pairgoth');
|
|
|
|
function go_form_export_opengotha()
|
|
{
|
|
global $ranks;
|
|
include_once 'export/opengotha.php';
|
|
exit;
|
|
}
|
|
add_action('admin_post_go_form_export_opengotha', 'go_form_export_opengotha');
|
|
|
|
function go_form_export_mcmahon()
|
|
{
|
|
global $ranks;
|
|
include_once 'export/mcmahon.php';
|
|
exit;
|
|
}
|
|
add_action('admin_post_go_form_export_mcmahon', 'go_form_export_mcmahon');
|
|
|
|
// ========== Custom Field Admin Actions ==========
|
|
function go_form_create_custom_field()
|
|
{
|
|
go_form_admin_action('create_custom_field');
|
|
if (isset($_POST['form_id']) && isset($_POST['field_name']) && isset($_POST['field_type'])) {
|
|
global $wpdb;
|
|
$form_id = intval($_POST['form_id']);
|
|
$field_name = sanitize_text_field($_POST['field_name']);
|
|
$field_type = sanitize_text_field($_POST['field_type']);
|
|
$field_options = isset($_POST['field_options']) ? sanitize_textarea_field($_POST['field_options']) : '';
|
|
$is_public = isset($_POST['is_public']) ? 1 : 0;
|
|
$is_required = isset($_POST['is_required']) ? 1 : 0;
|
|
|
|
$wpdb->insert("{$wpdb->prefix}go_form_custom_fields", [
|
|
'form_id' => $form_id,
|
|
'field_name' => $field_name,
|
|
'field_type' => $field_type,
|
|
'field_options' => $field_options,
|
|
'is_public' => $is_public,
|
|
'is_required' => $is_required
|
|
]);
|
|
}
|
|
$redirect_url = add_query_arg(array('page' => 'go-form-settings', 'form_id' => $_POST['form_id'], 'created_field' => 1), admin_url('admin.php'));
|
|
wp_redirect($redirect_url);
|
|
exit;
|
|
}
|
|
add_action('admin_post_go_form_create_custom_field', 'go_form_create_custom_field');
|
|
|
|
function go_form_update_custom_field()
|
|
{
|
|
go_form_admin_action('update_custom_field');
|
|
if (isset($_POST['field_id']) && isset($_POST['field_name']) && isset($_POST['field_type'])) {
|
|
global $wpdb;
|
|
$field_id = intval($_POST['field_id']);
|
|
$field_name = sanitize_text_field($_POST['field_name']);
|
|
$field_type = sanitize_text_field($_POST['field_type']);
|
|
$field_options = isset($_POST['field_options']) ? sanitize_textarea_field($_POST['field_options']) : '';
|
|
$is_public = isset($_POST['is_public']) ? 1 : 0;
|
|
$is_required = isset($_POST['is_required']) ? 1 : 0;
|
|
|
|
$wpdb->update("{$wpdb->prefix}go_form_custom_fields", [
|
|
'field_name' => $field_name,
|
|
'field_type' => $field_type,
|
|
'field_options' => $field_options,
|
|
'is_public' => $is_public,
|
|
'is_required' => $is_required
|
|
], ['id' => $field_id]);
|
|
}
|
|
$redirect_url = add_query_arg(array('page' => 'go-form-settings', 'form_id' => $_POST['form_id'], 'updated_field' => 1), admin_url('admin.php'));
|
|
wp_redirect($redirect_url);
|
|
exit;
|
|
}
|
|
add_action('admin_post_go_form_update_custom_field', 'go_form_update_custom_field');
|
|
|
|
function go_form_delete_custom_field()
|
|
{
|
|
go_form_admin_action('delete_custom_field');
|
|
if (isset($_POST['field_id'])) {
|
|
global $wpdb;
|
|
$field_id = intval($_POST['field_id']);
|
|
$field = go_form_get_custom_field_by_id($field_id);
|
|
$form_id = $field ? $field->form_id : 0;
|
|
$wpdb->delete("{$wpdb->prefix}go_form_custom_fields", ['id' => $field_id]);
|
|
$redirect_url = add_query_arg(array('page' => 'go-form-settings', 'form_id' => $form_id, 'deleted_field' => 1), admin_url('admin.php'));
|
|
wp_redirect($redirect_url);
|
|
exit;
|
|
}
|
|
$redirect_url = add_query_arg(array('page' => 'go-form-settings'), admin_url('admin.php'));
|
|
wp_redirect($redirect_url);
|
|
exit;
|
|
}
|
|
add_action('admin_post_go_form_delete_custom_field', 'go_form_delete_custom_field');
|
|
|
|
// ========== Entry Edit Admin Action ==========
|
|
function go_form_update_egd_data()
|
|
{
|
|
go_form_admin_action('update_egd_data');
|
|
|
|
if (!isset($_POST['value_one'])) {
|
|
wp_redirect(admin_url('admin.php?page=go-form-settings'));
|
|
exit;
|
|
}
|
|
|
|
global $wpdb, $ranks;
|
|
$form_id = intval($_POST['value_one']);
|
|
$entries = go_form_get_entries($form_id);
|
|
$updated_count = 0;
|
|
|
|
foreach ($entries as $entry) {
|
|
if (empty($entry->egd_number)) {
|
|
continue;
|
|
}
|
|
|
|
$pin = trim($entry->egd_number);
|
|
$url = 'https://europeangodatabase.eu/EGD/GetPlayerDataByPIN.php?pin=' . urlencode($pin);
|
|
|
|
$response = wp_remote_get($url, ['timeout' => 10]);
|
|
|
|
if (is_wp_error($response)) {
|
|
continue;
|
|
}
|
|
|
|
$body = wp_remote_retrieve_body($response);
|
|
$data = json_decode($body, true);
|
|
|
|
if ($data && isset($data['retcode']) && $data['retcode'] === 'Ok') {
|
|
// Map EGD Grade_n to our rank system
|
|
// EGD Grade_n: 0=30k, 1=29k, ... 25=5k, 30=1d, ... 39=9d, 40=1p, ... 47=9p
|
|
// Our ranks array: 0=30k, 1=29k, ... 25=5k, 30=1d, ... 39=9d, 40=1p, ... 47=9p
|
|
// So we can use Grade_n directly as our rank value
|
|
$new_rank = isset($data['Grade_n']) ? intval($data['Grade_n']) : $entry->rank;
|
|
$new_rating = isset($data['Gor']) ? intval($data['Gor']) : $entry->rating;
|
|
|
|
// Only update if values changed
|
|
if ($new_rank !== $entry->rank || $new_rating !== $entry->rating) {
|
|
$wpdb->update(
|
|
"{$wpdb->prefix}go_form_entries",
|
|
['rank' => $new_rank, 'rating' => $new_rating],
|
|
['id' => $entry->id]
|
|
);
|
|
$updated_count++;
|
|
}
|
|
}
|
|
}
|
|
|
|
$redirect_url = add_query_arg(
|
|
array('page' => 'go-form-settings', 'form_id' => $form_id, 'egd_updated' => $updated_count),
|
|
admin_url('admin.php')
|
|
);
|
|
wp_redirect($redirect_url);
|
|
exit;
|
|
}
|
|
add_action('admin_post_go_form_update_egd_data', 'go_form_update_egd_data');
|
|
|
|
function go_form_update_entry()
|
|
{
|
|
go_form_admin_action('update_entry');
|
|
if (!isset($_POST['entry_id']) || !isset($_POST['form_id'])) {
|
|
wp_redirect(admin_url('admin.php?page=go-form-settings'));
|
|
exit;
|
|
}
|
|
|
|
global $wpdb;
|
|
$entry_id = intval($_POST['entry_id']);
|
|
$form_id = intval($_POST['form_id']);
|
|
|
|
$rating = intval($_POST['rating']);
|
|
$rank = intval($_POST['rank']);
|
|
if ($rating < -900) {
|
|
$rating = ($rank * 100) - 900;
|
|
}
|
|
|
|
$data = [
|
|
'first_name' => sanitize_text_field($_POST['first_name']),
|
|
'last_name' => sanitize_text_field($_POST['last_name']),
|
|
'country' => sanitize_text_field($_POST['country'] ?? ''),
|
|
'club' => sanitize_text_field($_POST['club'] ?? ''),
|
|
'rank' => $rank,
|
|
'rating' => $rating,
|
|
'egd_number' => sanitize_text_field($_POST['egd_number'] ?? ''),
|
|
];
|
|
|
|
if (empty($data['first_name']) || empty($data['last_name'])) {
|
|
$redirect_url = add_query_arg(array('page' => 'go-form-settings', 'form_id' => $form_id, 'edit_entry' => $entry_id, 'error' => 'missing_required'), admin_url('admin.php'));
|
|
wp_redirect($redirect_url);
|
|
exit;
|
|
}
|
|
|
|
$wpdb->update("{$wpdb->prefix}go_form_entries", $data, ['id' => $entry_id]);
|
|
|
|
// Update custom field values
|
|
$custom_fields = go_form_get_custom_fields($form_id);
|
|
foreach ($custom_fields as $field) {
|
|
$field_name = 'custom_field_' . $field->id;
|
|
if (isset($_POST[$field_name])) {
|
|
$value = $_POST[$field_name];
|
|
if ($field->field_type === 'checkbox') {
|
|
$value = isset($_POST[$field_name]) ? '1' : '0';
|
|
} elseif (is_array($value)) {
|
|
$value = implode(',', array_map('sanitize_text_field', $value));
|
|
} else {
|
|
$value = sanitize_text_field($value);
|
|
}
|
|
|
|
// Check if custom value exists
|
|
$existing = go_form_get_custom_value($entry_id, $field->id);
|
|
if ($existing !== null) {
|
|
$wpdb->update("{$wpdb->prefix}go_form_entry_custom_values",
|
|
['value' => $value],
|
|
['entry_id' => $entry_id, 'field_id' => $field->id]);
|
|
} else {
|
|
$wpdb->insert("{$wpdb->prefix}go_form_entry_custom_values", [
|
|
'entry_id' => $entry_id,
|
|
'field_id' => $field->id,
|
|
'value' => $value
|
|
]);
|
|
}
|
|
} elseif ($field->is_required) {
|
|
// If required field is missing, redirect back with error
|
|
$redirect_url = add_query_arg(array('page' => 'go-form-settings', 'form_id' => $form_id, 'edit_entry' => $entry_id, 'error' => 'missing_required_field'), admin_url('admin.php'));
|
|
wp_redirect($redirect_url);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
$redirect_url = add_query_arg(array('page' => 'go-form-settings', 'form_id' => $form_id, 'updated_entry' => 1), admin_url('admin.php'));
|
|
wp_redirect($redirect_url);
|
|
exit;
|
|
}
|
|
add_action('admin_post_go_form_update_entry', 'go_form_update_entry');
|
|
|
|
// ========== Admin Page ====================
|
|
function go_form_admin_menu()
|
|
{
|
|
add_menu_page('Go Form Settings', 'Go Form', 'manage_options', 'go-form-settings', 'go_form_settings_page', 'dashicons-admin-generic');
|
|
}
|
|
add_action('admin_menu', 'go_form_admin_menu');
|
|
|
|
function action_button($action, $name, $confirm_massage, $value_one)
|
|
{
|
|
echo '
|
|
<form method="post" action="' . admin_url('admin-post.php') . '">
|
|
' . wp_nonce_field("{$action}_action", "{$action}_nonce", true, false) . '
|
|
<input type="hidden" name="action" value="' . $action . '">
|
|
<input type="hidden" name="value_one" value="' . $value_one . '">
|
|
<input type="submit" value="' . $name . '" class="button" onclick="return confirm(\'' . $confirm_massage . '\')">
|
|
</form>';
|
|
}
|
|
|
|
function go_form_settings_page()
|
|
{
|
|
include_once 'templates/settings-page.php';
|
|
}
|