diff --git a/go-form-plugin/go-form-plugin.php b/go-form-plugin/go-form-plugin.php index ff49c63..0a57f5b 100644 --- a/go-form-plugin/go-form-plugin.php +++ b/go-form-plugin/go-form-plugin.php @@ -464,6 +464,30 @@ function go_form_delete_custom_field() add_action('admin_post_go_form_delete_custom_field', 'go_form_delete_custom_field'); // ========== 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() { go_form_admin_action('update_egd_data'); @@ -473,7 +497,7 @@ function go_form_update_egd_data() exit; } - global $wpdb, $ranks; + global $wpdb; $form_id = intval($_POST['value_one']); $entries = go_form_get_entries($form_id); $updated_count = 0; @@ -483,35 +507,26 @@ function go_form_update_egd_data() 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)) { + $data = go_form_fetch_egd_data($entry->egd_number); + if (!$data) { continue; } - $body = wp_remote_retrieve_body($response); - $data = json_decode($body, true); + // 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; - 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++; - } + // 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++; } } @@ -627,3 +642,11 @@ function go_form_settings_page() { include_once 'templates/settings-page.php'; } + +function go_form_egd_hint($value) +{ + if ($value === null || $value === '') { + return ''; + } + return ' (EGD: ' . esc_html($value) . ')'; +} diff --git a/go-form-plugin/templates/settings-page.php b/go-form-plugin/templates/settings-page.php index 6e9be9f..5ff9373 100644 --- a/go-form-plugin/templates/settings-page.php +++ b/go-form-plugin/templates/settings-page.php @@ -162,31 +162,37 @@ if (isset($_GET['error']) && $_GET['error'] == 'egd_update_failed') $entry = go_form_get_entry_by_id($edit_entry_id); if ($entry && $entry->form_id == $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 '
'; echo '

Edit Entry

'; + if (!empty($entry->egd_number) && !$egd_data) { + echo '

Could not fetch EGD data for PIN ' . esc_html($entry->egd_number) . '.

'; + } echo '
'; echo wp_nonce_field('go_form_update_entry_action', 'go_form_update_entry_nonce', true, false); echo ''; echo ''; echo ''; echo ''; - echo ''; - echo ''; - echo ''; - echo ''; + echo ''; + echo ''; + echo ''; + echo ''; echo ''; echo ''; echo ''; - echo ''; + echo ''; echo ''; - + // Custom fields if (!empty($custom_fields)) { foreach ($custom_fields as $field) {
' . go_form_egd_hint($egd_data['Name'] ?? $egd_data['Real_Name'] ?? null) . '
' . go_form_egd_hint($egd_data['Last_Name'] ?? $egd_data['Real_Last_Name'] ?? null) . '
' . go_form_egd_hint($egd_data['Country_Code'] ?? null) . '
' . go_form_egd_hint($egd_data['Club'] ?? null) . '
'; echo ''; + echo go_form_egd_hint(isset($egd_data['Grade_n']) ? ($ranks[intval($egd_data['Grade_n'])] ?? null) : null); echo '
' . go_form_egd_hint($egd_data['Gor'] ?? null) . '