Files
ms1inscription-v5/php/inc_fx_eve_extra.php

124 lines
3.2 KiB
PHP

<?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;
}