3 Commits
Author SHA1 Message Date
nikola 4925b345bc bump version 2026-08-01 21:25:41 +02:00
nikola c36f409484 Display egd in edit files 2026-08-01 21:24:41 +02:00
nikola 2139a31e7c Added display contry and club 2026-08-01 21:10:36 +02:00
6 changed files with 103 additions and 46 deletions
+2
View File
@@ -15,6 +15,8 @@ CREATE TABLE wp_go_form_entries (
last_name varchar(100) NOT NULL, last_name varchar(100) NOT NULL,
country varchar(100) DEFAULT NULL, country varchar(100) DEFAULT NULL,
club varchar(100) DEFAULT NULL, club varchar(100) DEFAULT NULL,
display_country varchar(150) DEFAULT NULL,
display_club varchar(100) DEFAULT NULL,
rank tinyint(2) DEFAULT 0, rank tinyint(2) DEFAULT 0,
rating smallint(5) DEFAULT 0, rating smallint(5) DEFAULT 0,
egd_number varchar(20) DEFAULT NULL, egd_number varchar(20) DEFAULT NULL,
+43 -13
View File
@@ -5,6 +5,7 @@ if (!defined('ABSPATH'))
// Load helpers // Load helpers
require_once plugin_dir_path(__FILE__) . 'helpers.php'; require_once plugin_dir_path(__FILE__) . 'helpers.php';
require_once plugin_dir_path(__FILE__) . 'countries.php';
// ========== Database =========== // ========== Database ===========
function go_form_activate() function go_form_activate()
@@ -32,6 +33,8 @@ function go_form_activate()
last_name varchar(100) NOT NULL, last_name varchar(100) NOT NULL,
country varchar(100) DEFAULT NULL, country varchar(100) DEFAULT NULL,
club varchar(100) DEFAULT NULL, club varchar(100) DEFAULT NULL,
display_country varchar(150) DEFAULT NULL,
display_club varchar(100) DEFAULT NULL,
rank tinyint(2) DEFAULT 0, rank tinyint(2) DEFAULT 0,
rating smallint(5) DEFAULT 0, rating smallint(5) DEFAULT 0,
egd_number varchar(20) DEFAULT NULL, egd_number varchar(20) DEFAULT NULL,
@@ -183,6 +186,8 @@ function go_form_handle_submission()
'last_name' => sanitize_text_field($_POST['last_name']), 'last_name' => sanitize_text_field($_POST['last_name']),
'country' => sanitize_text_field($_POST['country'] ?? ''), 'country' => sanitize_text_field($_POST['country'] ?? ''),
'club' => sanitize_text_field($_POST['club'] ?? ''), 'club' => sanitize_text_field($_POST['club'] ?? ''),
'display_country' => sanitize_text_field($_POST['display_country'] ?? ''),
'display_club' => sanitize_text_field($_POST['display_club'] ?? ''),
'rank' => $rank, 'rank' => $rank,
'rating' => $rating, 'rating' => $rating,
'egd_number' => sanitize_text_field($_POST['egd_number'] ?? ''), 'egd_number' => sanitize_text_field($_POST['egd_number'] ?? ''),
@@ -251,7 +256,7 @@ add_action('admin_post_nopriv_go_form_handle_submission', 'go_form_handle_submis
// ========== Shortcode ========== // ========== Shortcode ==========
function go_form_shortcode($atts) function go_form_shortcode($atts)
{ {
global $ranks; global $ranks, $countries;
$form_id = intval($atts['id']); $form_id = intval($atts['id']);
$form = go_form_get_form_by_id($form_id); $form = go_form_get_form_by_id($form_id);
@@ -459,6 +464,30 @@ function go_form_delete_custom_field()
add_action('admin_post_go_form_delete_custom_field', 'go_form_delete_custom_field'); add_action('admin_post_go_form_delete_custom_field', 'go_form_delete_custom_field');
// ========== Entry Edit Admin Action ========== // ========== Entry Edit Admin Action ==========
function go_form_fetch_egd_data($pin)
{
$pin = trim($pin);
if (empty($pin)) {
return null;
}
$url = 'https://europeangodatabase.eu/EGD/GetPlayerDataByPIN.php?pin=' . urlencode($pin);
$response = wp_remote_get($url, ['timeout' => 10]);
if (is_wp_error($response)) {
return null;
}
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
if ($data && isset($data['retcode']) && $data['retcode'] === 'Ok') {
return $data;
}
return null;
}
function go_form_update_egd_data() function go_form_update_egd_data()
{ {
go_form_admin_action('update_egd_data'); go_form_admin_action('update_egd_data');
@@ -468,7 +497,7 @@ function go_form_update_egd_data()
exit; exit;
} }
global $wpdb, $ranks; global $wpdb;
$form_id = intval($_POST['value_one']); $form_id = intval($_POST['value_one']);
$entries = go_form_get_entries($form_id); $entries = go_form_get_entries($form_id);
$updated_count = 0; $updated_count = 0;
@@ -478,19 +507,11 @@ function go_form_update_egd_data()
continue; continue;
} }
$pin = trim($entry->egd_number); $data = go_form_fetch_egd_data($entry->egd_number);
$url = 'https://europeangodatabase.eu/EGD/GetPlayerDataByPIN.php?pin=' . urlencode($pin); if (!$data) {
$response = wp_remote_get($url, ['timeout' => 10]);
if (is_wp_error($response)) {
continue; 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 // 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 // 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 // Our ranks array: 0=30k, 1=29k, ... 25=5k, 30=1d, ... 39=9d, 40=1p, ... 47=9p
@@ -508,7 +529,6 @@ function go_form_update_egd_data()
$updated_count++; $updated_count++;
} }
} }
}
$redirect_url = add_query_arg( $redirect_url = add_query_arg(
array('page' => 'go-form-settings', 'form_id' => $form_id, 'egd_updated' => $updated_count), array('page' => 'go-form-settings', 'form_id' => $form_id, 'egd_updated' => $updated_count),
@@ -542,6 +562,8 @@ function go_form_update_entry()
'last_name' => sanitize_text_field($_POST['last_name']), 'last_name' => sanitize_text_field($_POST['last_name']),
'country' => sanitize_text_field($_POST['country'] ?? ''), 'country' => sanitize_text_field($_POST['country'] ?? ''),
'club' => sanitize_text_field($_POST['club'] ?? ''), 'club' => sanitize_text_field($_POST['club'] ?? ''),
'display_country' => sanitize_text_field($_POST['display_country'] ?? ''),
'display_club' => sanitize_text_field($_POST['display_club'] ?? ''),
'rank' => $rank, 'rank' => $rank,
'rating' => $rating, 'rating' => $rating,
'egd_number' => sanitize_text_field($_POST['egd_number'] ?? ''), 'egd_number' => sanitize_text_field($_POST['egd_number'] ?? ''),
@@ -620,3 +642,11 @@ function go_form_settings_page()
{ {
include_once 'templates/settings-page.php'; include_once 'templates/settings-page.php';
} }
function go_form_egd_hint($value)
{
if ($value === null || $value === '') {
return '';
}
return ' <span style="color:#2271b1; font-style:italic;">(EGD: ' . esc_html($value) . ')</span>';
}
+7 -2
View File
@@ -71,6 +71,8 @@
<input type="hidden" name="action" value="go_form_handle_submission"> <input type="hidden" name="action" value="go_form_handle_submission">
<input type="hidden" name="form_id" value="<?php echo esc_attr($form_id); ?>"> <input type="hidden" name="form_id" value="<?php echo esc_attr($form_id); ?>">
<input type="hidden" name="rating" id="rating" value="-1000"> <input type="hidden" name="rating" id="rating" value="-1000">
<input type="hidden" name="country" id="country">
<input type="hidden" name="club" id="club">
<div class="go-form-user-grid"> <div class="go-form-user-grid">
@@ -105,11 +107,11 @@
</div> </div>
<div> <div>
<label for="country">Country*:</label><input type="text" name="country" id="country" required> <label for="display_country">Country*:</label><input type="text" name="display_country" id="display_country" required>
</div> </div>
<div> <div>
<label for="club">Club:</label><input type="text" name="club" id="club"> <label for="display_club">Club:</label><input type="text" name="display_club" id="display_club">
</div> </div>
<?php <?php
@@ -218,6 +220,7 @@
document.addEventListener('DOMContentLoaded', function () { document.addEventListener('DOMContentLoaded', function () {
const contentDiv = document.getElementById('egd-results-content'); const contentDiv = document.getElementById('egd-results-content');
const egdOverlay = document.getElementById('egd-popup-overlay'); const egdOverlay = document.getElementById('egd-popup-overlay');
const countryMap = <?php echo wp_json_encode($countries); ?>;
function fetchPlayers() { function fetchPlayers() {
const firstName = document.getElementById('first_name').value.trim(); const firstName = document.getElementById('first_name').value.trim();
@@ -269,6 +272,8 @@
document.getElementById('last_name').value = player.Last_Name || player.Real_Last_Name || ''; document.getElementById('last_name').value = player.Last_Name || player.Real_Last_Name || '';
document.getElementById('country').value = player.Country_Code || ''; document.getElementById('country').value = player.Country_Code || '';
document.getElementById('club').value = player.Club || ''; document.getElementById('club').value = player.Club || '';
document.getElementById('display_country').value = countryMap[player.Country_Code] || player.Country_Code || '';
document.getElementById('display_club').value = player.Club || '';
document.getElementById('rank').value = player.Grade_n || 0; document.getElementById('rank').value = player.Grade_n || 0;
document.getElementById('egd_number').value = player.Pin_Player || ''; document.getElementById('egd_number').value = player.Pin_Player || '';
document.getElementById('rating').value = player.Gor || 0; document.getElementById('rating').value = player.Gor || 0;
+14 -6
View File
@@ -162,27 +162,35 @@ if (isset($_GET['error']) && $_GET['error'] == 'egd_update_failed')
$entry = go_form_get_entry_by_id($edit_entry_id); $entry = go_form_get_entry_by_id($edit_entry_id);
if ($entry && $entry->form_id == $selected_form_id) { if ($entry && $entry->form_id == $selected_form_id) {
$custom_fields = go_form_get_custom_fields($selected_form_id); $custom_fields = go_form_get_custom_fields($selected_form_id);
global $ranks;
$egd_data = !empty($entry->egd_number) ? go_form_fetch_egd_data($entry->egd_number) : null;
echo '<div style="margin-bottom:20px; padding:15px; background:#fff; border:1px solid #ddd; border-radius:4px;">'; echo '<div style="margin-bottom:20px; padding:15px; background:#fff; border:1px solid #ddd; border-radius:4px;">';
echo '<h3>Edit Entry</h3>'; echo '<h3>Edit Entry</h3>';
if (!empty($entry->egd_number) && !$egd_data) {
echo '<div class="notice notice-warning inline"><p>Could not fetch EGD data for PIN ' . esc_html($entry->egd_number) . '.</p></div>';
}
echo '<form method="post" action="' . admin_url('admin-post.php') . '">'; echo '<form method="post" action="' . admin_url('admin-post.php') . '">';
echo wp_nonce_field('go_form_update_entry_action', 'go_form_update_entry_nonce', true, false); echo wp_nonce_field('go_form_update_entry_action', 'go_form_update_entry_nonce', true, false);
echo '<input type="hidden" name="action" value="go_form_update_entry">'; echo '<input type="hidden" name="action" value="go_form_update_entry">';
echo '<input type="hidden" name="entry_id" value="' . esc_attr($entry->id) . '">'; echo '<input type="hidden" name="entry_id" value="' . esc_attr($entry->id) . '">';
echo '<input type="hidden" name="form_id" value="' . esc_attr($selected_form_id) . '">'; echo '<input type="hidden" name="form_id" value="' . esc_attr($selected_form_id) . '">';
echo '<table class="form-table">'; echo '<table class="form-table">';
echo '<tr><th><label for="first_name">First Name*:</label></th><td><input type="text" name="first_name" id="first_name" value="' . esc_attr($entry->first_name) . '" required></td></tr>'; echo '<tr><th><label for="first_name">First Name*:</label></th><td><input type="text" name="first_name" id="first_name" value="' . esc_attr($entry->first_name) . '" required>' . go_form_egd_hint($egd_data['Name'] ?? $egd_data['Real_Name'] ?? null) . '</td></tr>';
echo '<tr><th><label for="last_name">Last Name*:</label></th><td><input type="text" name="last_name" id="last_name" value="' . esc_attr($entry->last_name) . '" required></td></tr>'; echo '<tr><th><label for="last_name">Last Name*:</label></th><td><input type="text" name="last_name" id="last_name" value="' . esc_attr($entry->last_name) . '" required>' . go_form_egd_hint($egd_data['Last_Name'] ?? $egd_data['Real_Last_Name'] ?? null) . '</td></tr>';
echo '<tr><th><label for="country">Country:</label></th><td><input type="text" name="country" id="country" value="' . esc_attr($entry->country) . '"></td></tr>'; echo '<tr><th><label for="country">Country:</label></th><td><input type="text" name="country" id="country" value="' . esc_attr($entry->country) . '">' . go_form_egd_hint($egd_data['Country_Code'] ?? null) . '</td></tr>';
echo '<tr><th><label for="club">Club:</label></th><td><input type="text" name="club" id="club" value="' . esc_attr($entry->club) . '"></td></tr>'; echo '<tr><th><label for="club">Club:</label></th><td><input type="text" name="club" id="club" value="' . esc_attr($entry->club) . '">' . go_form_egd_hint($egd_data['Club'] ?? null) . '</td></tr>';
echo '<tr><th><label for="display_country">Display Country:</label></th><td><input type="text" name="display_country" id="display_country" value="' . esc_attr($entry->display_country) . '"></td></tr>';
echo '<tr><th><label for="display_club">Display Club:</label></th><td><input type="text" name="display_club" id="display_club" value="' . esc_attr($entry->display_club) . '"></td></tr>';
echo '<tr><th><label for="rank">Rank:</label></th><td>'; echo '<tr><th><label for="rank">Rank:</label></th><td>';
echo '<select name="rank" id="rank">'; echo '<select name="rank" id="rank">';
global $ranks;
foreach ($ranks as $value => $label) { foreach ($ranks as $value => $label) {
echo '<option value="' . esc_attr($value) . '" ' . selected($entry->rank, $value, false) . '>' . esc_html($label) . '</option>'; echo '<option value="' . esc_attr($value) . '" ' . selected($entry->rank, $value, false) . '>' . esc_html($label) . '</option>';
} }
echo '</select>'; echo '</select>';
echo go_form_egd_hint(isset($egd_data['Grade_n']) ? ($ranks[intval($egd_data['Grade_n'])] ?? null) : null);
echo '</td></tr>'; echo '</td></tr>';
echo '<tr><th><label for="rating">Rating:</label></th><td><input type="number" name="rating" id="rating" value="' . esc_attr($entry->rating) . '"></td></tr>'; echo '<tr><th><label for="rating">Rating:</label></th><td><input type="number" name="rating" id="rating" value="' . esc_attr($entry->rating) . '">' . go_form_egd_hint($egd_data['Gor'] ?? null) . '</td></tr>';
echo '<tr><th><label for="egd_number">EGD Number:</label></th><td><input type="text" name="egd_number" id="egd_number" value="' . esc_attr($entry->egd_number) . '"></td></tr>'; echo '<tr><th><label for="egd_number">EGD Number:</label></th><td><input type="text" name="egd_number" id="egd_number" value="' . esc_attr($entry->egd_number) . '"></td></tr>';
// Custom fields // Custom fields
+18 -6
View File
@@ -6,8 +6,15 @@
<th>First Name</th> <th>First Name</th>
<th>Last Name</th> <th>Last Name</th>
<th>Rank</th> <th>Rank</th>
<?php if ($show_admin): ?>
<th>Rating</th>
<?php endif; ?>
<th>Country</th> <th>Country</th>
<th>Club</th> <th>Club</th>
<?php if ($show_admin): ?>
<th>Country (raw)</th>
<th>Club (raw)</th>
<?php endif; ?>
<th>EGD Number</th> <th>EGD Number</th>
<th>Date Added</th> <th>Date Added</th>
<?php <?php
@@ -17,11 +24,10 @@
echo '<th>' . esc_html($field->field_name) . '</th>'; echo '<th>' . esc_html($field->field_name) . '</th>';
endif; endif;
endforeach; endforeach;
?>
<?php if ($show_admin): ?> if ($show_admin):
<th>Rating</th> echo '<th>Action</th>';
<th>Action</th> endif; ?>
<?php endif; ?>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -33,8 +39,15 @@
<td> <?= esc_html($e->first_name) ?> </td> <td> <?= esc_html($e->first_name) ?> </td>
<td> <?= esc_html($e->last_name) ?> </td> <td> <?= esc_html($e->last_name) ?> </td>
<td> <?= esc_html($ranks[$e->rank]) ?> </td> <td> <?= esc_html($ranks[$e->rank]) ?> </td>
<?php if ($show_admin): ?>
<td> <?= esc_html($e->rating) ?> </td>
<?php endif; ?>
<td> <?= esc_html($e->display_country) ?> </td>
<td> <?= esc_html($e->display_club) ?> </td>
<?php if ($show_admin): ?>
<td> <?= esc_html($e->country) ?> </td> <td> <?= esc_html($e->country) ?> </td>
<td> <?= esc_html($e->club) ?> </td> <td> <?= esc_html($e->club) ?> </td>
<?php endif; ?>
<td><a <td><a
href="<?= esc_url('https://europeangodatabase.eu/EGD/Player_Card.php?&key=' . $e->egd_number) ?>"><?= esc_html($e->egd_number) ?> href="<?= esc_url('https://europeangodatabase.eu/EGD/Player_Card.php?&key=' . $e->egd_number) ?>"><?= esc_html($e->egd_number) ?>
</a> </td> </a> </td>
@@ -57,7 +70,6 @@
<?php if ($show_admin): ?> <?php if ($show_admin): ?>
<td> <?= esc_html($e->rating) ?> </td>
<td style="white-space: nowrap;"> <td style="white-space: nowrap;">
<a href="<?= add_query_arg(array('page' => 'go-form-settings', 'form_id' => $form_id ?? 0, 'edit_entry' => $e->id), admin_url('admin.php')) ?>" <a href="<?= add_query_arg(array('page' => 'go-form-settings', 'form_id' => $form_id ?? 0, 'edit_entry' => $e->id), admin_url('admin.php')) ?>"
class="button" style="margin-right: 4px;">Edit</a> class="button" style="margin-right: 4px;">Edit</a>
+1 -1
View File
@@ -2,7 +2,7 @@
/** /**
* Plugin Name: Go Form Plugin * Plugin Name: Go Form Plugin
* Description: Form plugin for Go players * Description: Form plugin for Go players
* Version: 0.06 * Version: 0.07
* Author: Nikola Petrov * Author: Nikola Petrov
*/ */