From d0db73624eb31305b2ffc66cc445e64cdafe34d9 Mon Sep 17 00:00:00 2001 From: stephan Date: Thu, 18 Jun 2026 09:24:25 -0400 Subject: [PATCH] Enhance fxBibEpreuveDisplayName function to include inactive status and improve display logic This commit updates the fxBibEpreuveDisplayName function to provide a more comprehensive display name for events by incorporating both type and category information. It also adds logic to append an "(inactive)" label when the event is not active. Additionally, new SQL entries are introduced to support localized messages for inactive events in both French and English, improving user feedback in the interface. No version code change is included in this update. --- php/inc_fx_promoteur.php | 52 ++++++++++++++++++------- sql/MSIN-4379-bib_v4-etape4-ajax.sql | 8 ++++ sql/MSIN-4379-bib_v4-overlap-detail.sql | 8 ++++ 3 files changed, 55 insertions(+), 13 deletions(-) diff --git a/php/inc_fx_promoteur.php b/php/inc_fx_promoteur.php index 7b2c698..d2cb64e 100644 --- a/php/inc_fx_promoteur.php +++ b/php/inc_fx_promoteur.php @@ -2771,26 +2771,51 @@ function fxBibMsg($clef, ...$args) { return $str; } -/** Nom affichable d'une épreuve (bib v4) — langue courante avec repli fr/en. */ +/** Description d'une épreuve en conflit : type + catégorie (langue courante), (inactive) si epr_actif = 0. */ function fxBibEpreuveDisplayName(array $row, $strLangue = 'fr') { $strLangue = in_array($strLangue, ['fr', 'en'], true) ? $strLangue : 'fr'; $strAlt = $strLangue === 'fr' ? 'en' : 'fr'; - foreach (['epr_nom_', 'epr_type_', 'epr_categorie_'] as $prefix) { - $str = trim($row[$prefix . $strLangue] ?? ''); - if ($str === '') { - $str = trim($row[$prefix . $strAlt] ?? ''); + $strType = trim($row['epr_type_' . $strLangue] ?? ''); + if ($strType === '') { + $strType = trim($row['epr_type_' . $strAlt] ?? ''); + } + + $strCat = trim($row['epr_categorie_' . $strLangue] ?? ''); + if ($strCat === '') { + $strCat = trim($row['epr_categorie_' . $strAlt] ?? ''); + } + + $parts = []; + if ($strType !== '') { + $parts[] = $strType; + } + if ($strCat !== '') { + $parts[] = $strCat; + } + + $str = implode(' ', $parts); + + if ($str === '') { + $strNom = trim($row['epr_nom_' . $strLangue] ?? ''); + if ($strNom === '') { + $strNom = trim($row['epr_nom_' . $strAlt] ?? ''); } - if ($str !== '') { - return $str; + $str = $strNom; + } + + if ($str === '' && !empty($row['epr_id'])) { + $str = '#' . (int)$row['epr_id']; + } + + if ((int)($row['epr_actif'] ?? 1) === 0) { + $strInactive = trim(fxBibTexte('bib_v4_ajax_overlap_inactive', 0)); + if ($strInactive !== '' && $strInactive !== 'bib_v4_ajax_overlap_inactive') { + $str .= ' (' . $strInactive . ')'; } } - if (!empty($row['epr_id'])) { - return '#' . (int)$row['epr_id']; - } - - return ''; + return $str; } /** @@ -2822,7 +2847,8 @@ function fxBibGetOverlappingRanges($eve_id, $start, $end, $exclude_bib_id = 0) { e.epr_type_fr, e.epr_type_en, e.epr_categorie_fr, - e.epr_categorie_en + e.epr_categorie_en, + e.epr_actif FROM inscriptions_epreuves_bib b INNER JOIN inscriptions_epreuves e ON e.epr_id = b.epr_id WHERE b.eve_id = $eve_id diff --git a/sql/MSIN-4379-bib_v4-etape4-ajax.sql b/sql/MSIN-4379-bib_v4-etape4-ajax.sql index f81d2a6..d2a119e 100644 --- a/sql/MSIN-4379-bib_v4-etape4-ajax.sql +++ b/sql/MSIN-4379-bib_v4-etape4-ajax.sql @@ -73,6 +73,14 @@ INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_ SELECT 'bib_v4_ajax_overlap_entry', 'en', '« %s » (%d to %d)', '', 'compte.php', '', 0, 1, '', '', '', NOW() FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM info WHERE info_clef = 'bib_v4_ajax_overlap_entry' AND info_langue = 'en' AND info_prg = 'compte.php'); +INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) +SELECT 'bib_v4_ajax_overlap_inactive', 'fr', 'épreuve inactive', '', 'compte.php', '', 0, 1, '', '', '', NOW() +FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM info WHERE info_clef = 'bib_v4_ajax_overlap_inactive' AND info_langue = 'fr' AND info_prg = 'compte.php'); + +INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) +SELECT 'bib_v4_ajax_overlap_inactive', 'en', 'inactive race', '', 'compte.php', '', 0, 1, '', '', '', NOW() +FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM info WHERE info_clef = 'bib_v4_ajax_overlap_inactive' AND info_langue = 'en' AND info_prg = 'compte.php'); + INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) SELECT 'bib_v4_ajax_params_invalid', 'fr', 'Paramètres invalides', '', 'compte.php', '', 0, 1, '', '', '', NOW() FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM info WHERE info_clef = 'bib_v4_ajax_params_invalid' AND info_langue = 'fr' AND info_prg = 'compte.php'); diff --git a/sql/MSIN-4379-bib_v4-overlap-detail.sql b/sql/MSIN-4379-bib_v4-overlap-detail.sql index 06ba579..954aa9e 100644 --- a/sql/MSIN-4379-bib_v4-overlap-detail.sql +++ b/sql/MSIN-4379-bib_v4-overlap-detail.sql @@ -22,3 +22,11 @@ FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM info WHERE info_clef = 'bib_v4_ajax_ov INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) SELECT 'bib_v4_ajax_overlap_entry', 'en', '« %s » (%d to %d)', '', 'compte.php', '', 0, 1, '', '', '', NOW() FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM info WHERE info_clef = 'bib_v4_ajax_overlap_entry' AND info_langue = 'en' AND info_prg = 'compte.php'); + +INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) +SELECT 'bib_v4_ajax_overlap_inactive', 'fr', 'épreuve inactive', '', 'compte.php', '', 0, 1, '', '', '', NOW() +FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM info WHERE info_clef = 'bib_v4_ajax_overlap_inactive' AND info_langue = 'fr' AND info_prg = 'compte.php'); + +INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) +SELECT 'bib_v4_ajax_overlap_inactive', 'en', 'inactive race', '', 'compte.php', '', 0, 1, '', '', '', NOW() +FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM info WHERE info_clef = 'bib_v4_ajax_overlap_inactive' AND info_langue = 'en' AND info_prg = 'compte.php');