MSIN-3487 — Enhance kc.php to support QR short link entry for event results and key chains. Implement redirection based on event ID and improve database query handling. Update inc_fonctions.php to include extra event functions. Increment version code.
This commit is contained in:
123
php/inc_fx_eve_extra.php
Normal file
123
php/inc_fx_eve_extra.php
Normal file
@ -0,0 +1,123 @@
|
||||
<?php
|
||||
/**
|
||||
* MSIN-3487 — Métadonnées supplémentaires d'événement
|
||||
* (table inscriptions_evenements_extra).
|
||||
*
|
||||
* Fonctions indépendantes : utilisables depuis kc.php, impression dossards,
|
||||
* hub promoteur, etc. Ne pas mélanger avec key_chain (QR physiques).
|
||||
*/
|
||||
|
||||
/**
|
||||
* URL de repli si aucun lien résultats n'est configuré pour l'événement.
|
||||
* Aligné sur le défaut historique de kc.php / key_chain.
|
||||
*/
|
||||
function fxEveExtraResultatsFallbackUrl()
|
||||
{
|
||||
return 'https://ms1.ca';
|
||||
}
|
||||
|
||||
/**
|
||||
* Lit la ligne extra d'un événement (ou null).
|
||||
*
|
||||
* @param int $intEveId
|
||||
* @return array|null
|
||||
*/
|
||||
function fxEveExtraGetRow($intEveId)
|
||||
{
|
||||
global $objDatabase;
|
||||
|
||||
$intEveId = intval($intEveId);
|
||||
if ($intEveId <= 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$sql = 'SELECT * FROM inscriptions_evenements_extra WHERE eve_id = ' . $intEveId . ' LIMIT 1';
|
||||
$tabRow = $objDatabase->fxGetRow($sql);
|
||||
|
||||
return ($tabRow === null || $tabRow === false) ? null : $tabRow;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le lien résultats brut, ou null s'il est absent / vide.
|
||||
*
|
||||
* @param int $intEveId
|
||||
* @return string|null
|
||||
*/
|
||||
function fxEveExtraGetResultatsUrl($intEveId)
|
||||
{
|
||||
$tabRow = fxEveExtraGetRow($intEveId);
|
||||
if ($tabRow === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$strUrl = trim((string) ($tabRow['eve_resultats_url'] ?? ''));
|
||||
|
||||
return ($strUrl !== '') ? $strUrl : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Lien résultats à utiliser pour une redirection :
|
||||
* URL configurée, sinon fallback (ms1.ca).
|
||||
*
|
||||
* @param int $intEveId
|
||||
* @return string
|
||||
*/
|
||||
function fxEveExtraResolveResultatsUrl($intEveId)
|
||||
{
|
||||
$strUrl = fxEveExtraGetResultatsUrl($intEveId);
|
||||
|
||||
return ($strUrl !== null) ? $strUrl : fxEveExtraResultatsFallbackUrl();
|
||||
}
|
||||
|
||||
/**
|
||||
* Crée ou met à jour le lien résultats pour un événement.
|
||||
*
|
||||
* @param int $intEveId
|
||||
* @param string $strUrl Chaîne vide = effacer le lien (NULL en BD)
|
||||
* @return bool
|
||||
*/
|
||||
function fxEveExtraSetResultatsUrl($intEveId, $strUrl)
|
||||
{
|
||||
global $objDatabase;
|
||||
|
||||
$intEveId = intval($intEveId);
|
||||
if ($intEveId <= 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$strUrl = trim((string) $strUrl);
|
||||
if ($strUrl === '') {
|
||||
$strSqlUrl = 'NULL';
|
||||
} else {
|
||||
$strSqlUrl = "'" . $objDatabase->fxEscape($strUrl) . "'";
|
||||
}
|
||||
|
||||
// MSIN-3487 — upsert : une ligne max par eve_id
|
||||
$sql = 'INSERT INTO inscriptions_evenements_extra (eve_id, eve_resultats_url, eve_extra_maj)'
|
||||
. ' VALUES (' . $intEveId . ', ' . $strSqlUrl . ', NOW())'
|
||||
. ' ON DUPLICATE KEY UPDATE'
|
||||
. ' eve_resultats_url = VALUES(eve_resultats_url),'
|
||||
. ' eve_extra_maj = NOW()';
|
||||
|
||||
return (bool) $objDatabase->fxQuery($sql);
|
||||
}
|
||||
|
||||
/**
|
||||
* URL courte à encoder dans un QR (kc.php redirige vers les résultats).
|
||||
* Exemple : https://ms1inscription.com/kc.php?t=eve&id=760
|
||||
*
|
||||
* @param int $intEveId
|
||||
* @param string|null $strBaseUrl Défaut = $vDomaine
|
||||
* @return string
|
||||
*/
|
||||
function fxKcEveResultatsQrUrl($intEveId, $strBaseUrl = null)
|
||||
{
|
||||
global $vDomaine;
|
||||
|
||||
$intEveId = intval($intEveId);
|
||||
if ($strBaseUrl === null || trim((string) $strBaseUrl) === '') {
|
||||
$strBaseUrl = !empty($vDomaine) ? $vDomaine : 'https://ms1inscription.com';
|
||||
}
|
||||
|
||||
return rtrim($strBaseUrl, '/') . '/kc.php?t=eve&id=' . $intEveId;
|
||||
}
|
||||
Reference in New Issue
Block a user