150 lines
3.8 KiB
PHP
150 lines
3.8 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;
|
|
}
|
|
|
|
/**
|
|
* PNG binaire du QR résultats événement (avec logo MS1).
|
|
* MSIN-3487
|
|
*
|
|
* @param int $intEveId
|
|
* @param string|null $strBaseUrl
|
|
* @param int $intModuleSize
|
|
* @param bool $blnWithLogo
|
|
* @return string|false
|
|
*/
|
|
function fxKcEveResultatsQrPngBinary($intEveId, $strBaseUrl = null, $intModuleSize = 10, $blnWithLogo = true)
|
|
{
|
|
require_once __DIR__ . '/inc_fx_kc_qr.php';
|
|
|
|
$intEveId = intval($intEveId);
|
|
if ($intEveId <= 0) {
|
|
return false;
|
|
}
|
|
|
|
return fxKcQrGeneratePngBinary(
|
|
fxKcEveResultatsQrUrl($intEveId, $strBaseUrl),
|
|
$intModuleSize,
|
|
$blnWithLogo
|
|
);
|
|
}
|