Sorties avec inscription
📚Comprendre les termes et définitions utilisés dans le programme 💡
Les inscriptions ci-dessous se font exclusivement en ligne en cliquant sur "PRÉ-INSCRIPTION OBLIGATOIRE" (le lien sera activé à l'ouverture des inscriptions).
Les personnes en PO (non adhérentes) doivent obligatoirement régler en ligne la sortie afin que leur demande de réservation soit prise en compte.
$fileName, ), Log::ALL, array($loggerName) ); // Ajouter le message switch ( $level ) { case 'EMERGENCY': $level = Log::EMERGENCY; break; case 'ALERT': $level = Log::ALERT; break; case 'CRITICAL': $level = Log::CRITICAL; break; case 'ERROR': $level = Log::ERROR; break; case 'WARNING': $level = Log::WARNING; break; case 'NOTICE': $level = Log::NOTICE; break; case 'INFO': $level = Log::INFO; break; case 'DEBUG': $level = Log::DEBUG; break; default: $level = Log::INFO; } $appelant = CommunHelper::appelant(); Log::add( "[" . $appelant . "]-" . $message, $level, $loggerName); } #=================================================== # Contrôle la fréquence d'exécution d'un module Joomla via ses params. #=================================================== /** * @param string $nomModule Nom du module(sa position). * @param int $delai Durée entre deux exécutions. * @param string $unite uniteé de temps ('seconde', 'minute', 'heure', 'jour'). * * @return bool True si l'exécution est autorisée, False sinon. */ /**Exemple : use MonSite\Helpers\CommunHelper; $nbr=5;$delai=minute; if ( CommunHelper::peutExecuterModule('MOD-InscriptionAnimateur-moins-x-jours', $nbr, $delai) ) { echo " Execution autorisée, cela fait plus de $nbr $delai (maj time) "; } else { echo " Execution non autorisé , cela fait moins de $nbr $delai que le module s'est excuté "; } #Initialisation avec une heure pile exemple : 1747108800 ( Pour les nimateurs 1 fois par jour : 1747069200 12 mai à 19h GMT) GMT: Tuesday 13 May 2025 05:00:00 Your time zone: mardi 13 mai 2025 07:00:00 GMT+02:00 DST #site : https://www.epochconverter.com/ */ public static function peutExecuterModule($moduleNom, $delai = 1, $unite = 'heure') { // Conversion du délai en secondes $unites = [ 'minute' => 60, 'heure' => 3600, 'jour' => 86400, ]; if (!isset($unites[$unite])) { CommunHelper::ajoutLog("[CommunHelper::peutExecuterModule] Unité de temps invalide : $unite", "WARNING"); } $delaiEnSecondes = $delai * $unites[$unite]; $db = DatabaseHelper::getDb(); // Chercher le module dans la table modules $query = $db->getQuery(true) ->select('id, params') ->from('#__modules') ->where('position = ' . $db->quote($moduleNom)) ->where('published = 1') ->setLimit(1); $module = DatabaseHelper::selectOne($query); if (!$module) { CommunHelper::ajoutLog("[CommunHelper::peutExecuterModule] Erreur Position module $moduleNom introuvable", "WARNING"); } // Décoder les params $params = json_decode($module->params); $derniereExecution = isset($params->derniere_execution) ? (int) $params->derniere_execution : 0; #Heure actuelle en timestamp avec des secondes à 00 #$heureActuelle = time(); $date = new Date(); $date->setTime($date->format('H'), $date->format('i'), 0); $heureActuelle = $date->toUnix(); #Date stocker en timesatamp, conversion avec https://www.timestamp.fr/ ex: 1747048607 ==> 12/05/2025 13:16:47 if (($heureActuelle - $derniereExecution) < $delaiEnSecondes) { #Ce n'est pas le moment de l'executer return false; } else { // Mettre à jour la dernière exécution dans les params $params->derniere_execution = $heureActuelle; $paramsJson = json_encode($params); $query = $db->getQuery(true) ->update('#__modules') ->set('params = ' . $db->quote($paramsJson)) ->where('id = ' . (int) $module->id); $result = DatabaseHelper::execute($query, false); if ($result) { CommunHelper::ajoutLog("[CommunHelper::peutExecuterModule] Peut être executé $moduleNom : heureActuelle=$heureActuelle - derniereExecution=$derniereExecution) < delaiEnSecondes=$delaiEnSecondes", "INFO"); return true; } else { return false; } } } #=================================================== # Connaitre l'appelant #=================================================== /** * @return le chemin de l'appelant (peut-être ameliorer). */ /**Exemple : use MonSite\Helpers\CommunHelper; $appelant = CommunHelper::appelant() */ public static function appelant() { $db = DatabaseHelper::getDb(); $app = \Joomla\CMS\Factory::getApplication(); $option = $app->input->getCmd('option'); // com_content, com_users etc. $view = $app->input->getCmd('view'); // article, category etc. $id = $app->input->getInt('id'); // récupère l'id s'il existe $appelant = $app->getName() . "/" . $option . "/" . $view; // Si c'est un article, on récupère son titre if ($option === 'com_content' && $view === 'article' && $id) { $query = $db->getQuery(true) ->select($db->quoteName('title')) ->from($db->quoteName('#__content')) ->where($db->quoteName('id') . ' = ' . (int) $id); $title = DatabaseHelper::selectOne($query, false); if ($title) { $appelant .= " / Article: " . $title; } } return $appelant; } /** * Redirige vers l'URL Joomla demandée * * @param string $url L'URL interne Joomla (ex: 'index.php?option=com_acym&ctrl=campaigns&task=campaigns') * @param boolean $useSEF true pour convertir en SEF via JRoute */ public static function redirectVers($url, $useSEF = true) { $app = Factory::getApplication(); // Génération de l'URL via JRoute si demandé $redirectUrl = $useSEF ? Route::_($url) : $url; // Redirection $app->redirect($redirectUrl); // Important : stoppe l'exécution après redirection $app->close(); } public static function direBonjour($nom) { return "Bonjour, $nom !"; } #=================================================== # Suis-je sur le site de prod ? (false/true) #=================================================== public static function isProductionSite(): bool { $host = $_SERVER['HTTP_HOST']; return $host === 'rando-plaisirs.fr'; } #=================================================== # Retourne le mois en français et en majuscules à partir d'une date #=================================================== /** * @param string $date Date au format 'Y-m-d' ou 'Y-m-d H:i:s' (ex : '2018-07-01' ou '2018-08-31 15:31:35') * @return string Mois en lettres capitales (ex: 'JANVIER') */ public static function getMoisFrancais($moisNum) { $intVal = (int) $moisNum; $moisFrancais = [ 1 => 'janvier', 2 => 'février', 3 => 'mars', 4 => 'avril', 5 => 'mai', 6 => 'juin', 7 => 'juillet', 8 => 'août', 9 => 'septembre', 10 => 'octobre', 11 => 'novembre', 12 => 'décembre' ]; return mb_strtoupper($moisFrancais[$intVal], 'UTF-8'); } }
La Toscane Tarnaise

