<?php
/**
* BESTAND: inc-statistiek.php
* VERSIE: 122.0 (PERSONAL SPEELDAGEN SYNC)
* INFO: Synchroniseert de persoonlijke speeldagen van het ingelogde lid.
* BLIJFT VERDER VOLLEDIG AF VAN HET ONDERSTE GEDEELTE EN DE DATA.
* Regels zijn extra kort en smal tegen scrollen.
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
function vbv_render_oorspronkelijke_statistieken_v89() {
$uid = get_current_user_id();
if (!$uid) return "Log in.";
$user = wp_get_current_user();
$mp = (int)get_user_meta($uid, '_meesterpnt', true);
$rating = get_user_meta($uid, '_nbb_rating', true) ?: '-';
$lid_datum = get_user_meta($uid, '_toetreding', true) ?: '';
// 1. Haal de live Excel database op om uw eigen speeldagen te bepalen
$nbb_master = get_option('vbv_zittingen_master_db', array());
if (!is_array($nbb_master)) { $nbb_master = array(); }
$mijn_lidnummer = $user->user_login;
$speeldagen_lijst = [];
if (!empty($nbb_master) && isset($nbb_master[$mijn_lidnummer])) {
$ik = $nbb_master[$mijn_lidnummer];
$v_ma = strtolower(trim($ik['Ma Avo'] ?? $ik['Ma avo'] ?? ''));
$v_wo = strtolower(trim($ik['Wo Mid'] ?? $ik['Wo mid'] ?? ''));
$v_do = strtolower(trim($ik['Do Avo'] ?? $ik['Do avo'] ?? ''));
if (!empty($v_ma) && !in_array($v_ma, ['n', 'nee', '0'])) { $speeldagen_lijst[] = 'MA'; }
if (!empty($v_wo) && !in_array($v_wo, ['n', 'nee', '0'])) { $speeldagen_lijst[] = 'WO'; }
if (!empty($v_do) && !in_array($v_do, ['n', 'nee', '0'])) { $speeldagen_lijst[] = 'DO'; }
}
//

DE DYNAMISCHE FIX: Als de lijst leeg is valt hij terug op MA
$speeldagen = !empty($speeldagen_lijst) ? implode(', ', $speeldagen_lijst) : 'MA';
$mijlpalen = [
['n'=>'Clubmeester','g'=>500], ['n'=>'Districtsmeester','g'=>2000],
['n'=>'Regionaalmeester','g'=>5000], ['n'=>'Kand. Bondsmeester','g'=>10000],
['n'=>'Bondsmeester','g'=>15000], ['n'=>'Nationaal Meester','g'=>30000],
['n'=>'Nat. Meester *','g'=>60000], ['n'=>'Nat. Meester **','g'=>100000],
['n'=>'Nat. Meester ***','g'=>150000]
];
$voluest = "Titel"; $nodig = 0;
foreach($mijlpalen as $m) {
if($mp < $m['g']) { $voluest = $m['n']; $nodig = $m['g'] - $mp; break; }
}
$eigen_tempo = 45;
$prognose = date_i18n('F Y', strtotime("+".ceil($nodig / $eigen_tempo)." months"));
$stats = [
'MA' => ['tot'=>0,'m'=>0,'v'=>0,'veen'=>0,'mp'=>0,'r'=>0,'l_tot'=>0,'l_tel'=>0,'j_tot'=>0,'j_tel'=>0],
'WO' => ['tot'=>0,'m'=>0,'v'=>0,'veen'=>0,'mp'=>0,'r'=>0,'l_tot'=>0,'l_tel'=>0,'j_tot'=>0,'j_tel'=>0],
'DO' => ['tot'=>0,'m'=>0,'v'=>0,'veen'=>0,'mp'=>0,'r'=>0,'l_tot'=>0,'l_tel'=>0,'j_tot'=>0,'j_tel'=>0],
'TOT'=> ['tot'=>0,'m'=>0,'v'=>0,'veen'=>0,'mp'=>0,'r'=>0,'l_tot'=>0,'l_tel'=>0,'j_tot'=>0,'j_tel'=>0]
];
$titels_teller = [
'zonder'=>['MA'=>0,'WO'=>0,'DO'=>0,'TOT'=>0], 'club'=>['MA'=>0,'WO'=>0,'DO'=>0,'TOT'=>0],
'dist'=>['MA'=>0,'WO'=>0,'DO'=>0,'TOT'=>0], 'regio'=>['MA'=>0,'WO'=>0,'DO'=>0,'TOT'=>0],
'kand'=>['MA'=>0,'WO'=>0,'DO'=>0,'TOT'=>0], 'bonds'=>['MA'=>0,'WO'=>0,'DO'=>0,'TOT'=>0],
'nat'=>['MA'=>0,'WO'=>0,'DO'=>0,'TOT'=>0], 'nat1'=>['MA'=>0,'WO'=>0,'DO'=>0,'TOT'=>0],
'nat2'=>['MA'=>0,'WO'=>0,'DO'=>0,'TOT'=>0], 'nat3'=>['MA'=>0,'WO'=>0,'DO'=>0,'TOT'=>0]
];
$excel_vandaag = 46158;
if (!empty($nbb_master)) {
foreach ($nbb_master as $id => $lid) {
$gender = strtolower(trim($lid['Geslacht'] ?? ''));
$is_man = ($gender === 'm' || $gender === 'man');
$pc_raw = (string)($lid['Postcode'] ?? '');
$pc_num = (int)preg_replace('/[^0-9]/', '', $pc_raw);
$is_veen = ($pc_num >= 3901 && $pc_num <= 3911);
$l_mp = (int)($lid['Meesterpunten'] ?? 0);
$l_r = (int)($lid['NBB-rating'] ?? 0);
$l_leeftijd = 0; $has_geb = false;
$g_raw = $lid['Geboortedatum'] ?? '';
if (is_numeric($g_raw) && (int)$g_raw > 1000) {
$l_leeftijd = ($excel_vandaag - (int)$g_raw) / 365.25;
if ($l_leeftijd > 10) $has_geb = true;
}
$l_jaren = 0; $has_jaren = false;
$t_raw = $lid['Datum toetreding'] ?? '';
if (is_numeric($t_raw) && (int)$t_raw > 1000) {
$l_jaren = ($excel_vandaag - (int)$t_raw) / 365.25;
if ($l_jaren >= 0) $has_jaren = true;
}
$v_ma = strtolower(trim($lid['Ma Avo'] ?? $lid['Ma avo'] ?? ''));
$v_wo = strtolower(trim($lid['Wo Mid'] ?? $lid['Wo mid'] ?? ''));
$v_do = strtolower(trim($lid['Do Avo'] ?? $lid['Do avo'] ?? ''));
$speelt_ma = (!empty($v_ma) && !in_array($v_ma, ['n', 'nee', '0']));
$speelt_wo = (!empty($v_wo) && !in_array($v_wo, ['n', 'nee', '0']));
$speelt_do = (!empty($v_do) && !in_array($v_do, ['n', 'nee', '0']));
$t_key = 'zonder';
if ($l_mp >= 150000) { $t_key = 'nat3'; }
elseif ($l_mp >= 100000) { $t_key = 'nat2'; }
elseif ($l_mp >= 60000) { $t_key = 'nat1'; }
elseif ($l_mp >= 30000) { $t_key = 'nat'; }
elseif ($l_mp >= 15000) { $t_key = 'bonds'; }
elseif ($l_mp >= 10000) { $t_key = 'kand'; }
elseif ($l_mp >= 5000) { $t_key = 'regio'; }
elseif ($l_mp >= 2000) { $t_key = 'dist'; }
elseif ($l_mp >= 500) { $t_key = 'club'; }
$dagen_check = ['MA' => $speelt_ma, 'WO' => $speelt_wo, 'DO' => $speelt_do];
$speelt_ergens = false;
foreach ($dagen_check as $dag => $speelt) {
if ($speelt) {
$speelt_ergens = true;
$stats[$dag]['tot']++; $titels_teller[$t_key][$dag]++;
if ($is_man) { $stats[$dag]['m']++; } else { $stats[$dag]['v']++; }
if ($is_veen) { $stats[$dag]['veen']++; }
$stats[$dag]['mp'] += $l_mp; $stats[$dag]['r'] += $l_r;
if ($has_geb) { $stats[$dag]['l_tot'] += $l_leeftijd; $stats[$dag]['l_tel']++; }
if ($has_jaren) { $stats[$dag]['j_tot'] += $l_jaren; $stats[$dag]['j_tel']++; }
}
}
if ($speelt_ergens) {
$stats['TOT']['tot']++; $titels_teller[$t_key]['TOT']++;
if ($is_man) { $stats['TOT']['m']++; } else { $stats['TOT']['v']++; }
if ($is_veen) { $stats['TOT']['veen']++; }
$stats['TOT']['mp'] += $l_mp; $stats['TOT']['r'] += $l_r;
if ($has_geb) { $stats['TOT']['l_tot'] += $l_leeftijd; $stats['TOT']['l_tel']++; }
if ($has_jaren) { $stats['TOT']['j_tot'] += $l_jaren; $stats['TOT']['j_tel']++; }
}
}
}
$t_tot = max($stats['TOT']['tot'], 1); $m_tot = max($stats['MA']['tot'], 1); $w_tot = max($stats['WO']['tot'], 1); $d_tot = max($stats['DO']['tot'], 1);
$titels_data = [
['titel' => 'zonder titel', 'mp' => '0', 'MA' => $titels_teller['zonder']['MA'], 'WO' => $titels_teller['zonder']['WO'], 'DO' => $titels_teller['zonder']['DO'], 'TOT' => $titels_teller['zonder']['TOT']],
['titel' => 'Clubmeester', 'mp' => '500', 'MA' => $titels_teller['club']['MA'], 'WO' => $titels_teller['club']['WO'], 'DO' => $titels_teller['club']['DO'], 'TOT' => $titels_teller['club']['TOT']],
['titel' => 'Districtsmeester', 'mp' => '2.000', 'MA' => $titels_teller['dist']['MA'], 'WO' => $titels_teller['dist']['WO'], 'DO' => $titels_teller['dist']['DO'], 'TOT' => $titels_teller['dist']['TOT']],
['titel' => 'Regionaalmeester', 'mp' => '5.000', 'MA' => $titels_teller['regio']['MA'], 'WO' => $titels_teller['regio']['WO'], 'DO' => $titels_teller['regio']['DO'], 'TOT' => $titels_teller['regio']['TOT']],
['titel' => 'Kand. Bondsmeester', 'mp' => '10.000', 'MA' => $titels_teller['kand']['MA'], 'WO' => $titels_teller['kand']['WO'], 'DO' => $titels_teller['kand']['DO'], 'TOT' => $titels_teller['kand']['TOT']],
['titel' => 'Bondsmeester', 'mp' => '15.000', 'MA' => $titels_teller['bonds']['MA'], 'WO' => $titels_teller['bonds']['WO'], 'DO' => $titels_teller['bonds']['DO'], 'TOT' => $titels_teller['bonds']['TOT']],
['titel' => 'Nationaal Meester', 'mp' => '30.000', 'MA' => $titels_teller['nat']['MA'], 'WO' => $titels_teller['nat']['WO'], 'DO' => $titels_teller['nat']['DO'], 'TOT' => $titels_teller['nat']['TOT']],
['titel' => 'Nat. Meester

', 'mp' => '60.000', 'MA' => $titels_teller['nat1']['MA'], 'WO' => $titels_teller['nat1']['WO'], 'DO' => $titels_teller['nat1']['DO'], 'TOT' => $titels_teller['nat1']['TOT']],
['titel' => 'Nat. Meester


', 'mp' => '100.000', 'MA' => $titels_teller['nat2']['MA'], 'WO' => $titels_teller['nat2']['WO'], 'DO' => $titels_teller['nat2']['DO'], 'TOT' => $titels_teller['nat2']['TOT']],
['titel' => 'Nat. Meester



', 'mp' => '150.000', 'MA' => $titels_teller['nat3']['MA'], 'WO' => $titels_teller['nat3']['WO'], 'DO' => $titels_teller['nat3']['DO'], 'TOT' => $titels_teller['nat3']['TOT']]
];