v1.4.0
🔄 Changelog - Version 1.4.0
📋 Résumé des modifications
Cette mise à jour majeure corrige tous les bugs identifiés et implémente les fonctionnalités Discord manquantes.
✅ Corrections de bugs
1. Méthodes publiques manquantes
- ✔️
getServerDataCached()est maintenant publique - ✔️
getGameIcon()est maintenant publique - ✔️
getLatencyClass()est maintenant publique - ✔️
getProtocolFromGameType()est maintenant publique
2. Widget Elementor
- ✔️ Utilise maintenant les méthodes publiques du plugin
- ✔️ Plus de duplication de code
- ✔️ Fonctionne correctement pour tous les modes d'affichage
3. JavaScript admin.js
- ✔️ Fonction
test-serverimplémentée avec AJAX - ✔️ Preview des couleurs fonctionnelle
- ✔️ Ajout des éléments
#preview-onlineet#preview-offlinedans le HTML - ✔️ Validation des champs avant soumission
- ✔️ Confirmation avant de quitter avec modifications non sauvegardées
4. Sécurité
- ✔️ Ajout de
noncepour toutes les requêtes AJAX - ✔️ Vérification des permissions avec
check_ajax_referer() - ✔️ Sanitization de toutes les options avec
sanitizeOption() - ✔️ Échappement correct des URLs et couleurs
5. Gestion du cache
- ✔️ Meilleure gestion du fallback si le serveur est indisponible
- ✔️ Nettoyage des caches Discord lors de la désactivation
🆕 Nouvelles fonctionnalités
🔗 Intégration Discord complète
Configuration de base
- ✅ Activation/désactivation des notifications
- ✅ Configuration du webhook URL
- ✅ Personnalisation du nom et avatar du bot
- ✅ Test du webhook en temps réel
Types de notifications
- Serveur hors ligne - Alerte quand un serveur devient inaccessible
- Serveur en ligne - Notification quand un serveur revient
- Seuil de joueurs - Alerte quand X joueurs sont connectés
- Latence élevée - Avertissement si la latence dépasse un seuil
- Résumé quotidien - Rapport automatique à minuit
Fonctionnalités avancées
- Mention de rôle : Mentionne un rôle Discord pour les alertes critiques
- Cooldown : Évite le spam de notifications (configurable)
- Embeds colorés : Couleurs personnalisables (online/offline/warning)
- Rich embeds : Affichage détaillé avec joueurs, latence, version
Backend Discord
- ✅
sendDiscordMessage()- Envoi de messages via webhook - ✅
checkServersStatus()- Vérification automatique (cron toutes les minutes) - ✅
sendDailySummary()- Résumé quotidien (cron à minuit) - ✅
buildDiscordEmbed()- Construction d'embeds riches - ✅ Système de tracking d'état des serveurs
- ✅ Gestion du cooldown entre notifications
🔧 Handlers AJAX
1. Test de webhook Discord
Action: test_discord_webhook
Méthode: ajaxTestDiscordWebhook()
Fonction: Envoie un message de test au webhook2. Test de connexion serveur
Action: test_server_connection
Méthode: ajaxTestServerConnection()
Fonction: Teste la connexion à un serveur et retourne les infos⏰ Système de Cron
Vérification des serveurs
- Fréquence : Toutes les minutes
- Hook :
steam_status_check_servers - Fonction : Détecte les changements d'état et envoie des notifications
Résumé quotidien
- Fréquence : Tous les jours à minuit
- Hook :
steam_status_daily_summary - Fonction : Envoie un rapport complet de tous les serveurs
📝 Enregistrement des options
Nouvelles options Discord enregistrées :
'discord_enable_notifications' // Activation globale
'discord_webhook_url' // URL du webhook
'discord_bot_username' // Nom du bot
'discord_bot_avatar' // Avatar du bot (URL)
'discord_notify_offline' // Notifier offline
'discord_notify_online' // Notifier online
'discord_notify_player_threshold' // Notifier seuil joueurs
'discord_player_threshold_value' // Valeur du seuil
'discord_notify_high_latency' // Notifier latence élevée
'discord_latency_threshold' // Valeur latence max
'discord_daily_summary' // Activer résumé quotidien
'discord_mention_role' // ID du rôle à mentionner
'discord_notification_cooldown' // Cooldown en secondes
'discord_embed_color_online' // Couleur embed online
'discord_embed_color_offline' // Couleur embed offline
'discord_embed_color_warning' // Couleur embed warning🎨 Améliorations UI/UX
Page d'administration
- ✅ Prévisualisation en temps réel des couleurs
- ✅ Boutons de test pour serveurs et webhook
- ✅ Messages d'erreur explicites
- ✅ Toggle automatique des options dépendantes
- ✅ Validation des champs en temps réel
Interface utilisateur
- ✅ Affichage cohérent dans Elementor et shortcodes
- ✅ Responsive design pour mobile
- ✅ Animations de hover sur les cartes
- ✅ Classes CSS optimisées
🗂️ Structure des fichiers modifiés
/Steam-Server-Status-SourceQuery-PHP.php (v1.4.0)
├── Méthodes publiques ajoutées
├── Handlers AJAX implémentés
├── Système Discord complet
├── Enregistrement des options Discord
└── Système de cron
/assets/admin.js
├── Test AJAX des serveurs
├── Test AJAX du webhook Discord
├── Preview en temps réel
├── Validation des formulaires
└── Toggle des options dépendantes
/includes/elementor-widget.php
├── Utilisation des méthodes publiques
├── Suppression de la duplication de code
└── Rendu optimisé
/assets/elementor-styles.css (inchangé)
└── Styles déjà fonctionnels
🚀 Migration depuis v1.3.1
Étapes automatiques
- Les nouvelles options seront créées avec valeurs par défaut
- Les crons seront programmés automatiquement
- L'ancien cache sera compatible
Configuration manuelle requise
- Discord : Configurer le webhook URL si vous voulez les notifications
- Cron : Vérifier que WP-Cron fonctionne sur votre hébergement
Vérification post-migration
// Vérifier que les crons sont actifs
wp_next_scheduled('steam_status_check_servers'); // Doit retourner un timestamp
wp_next_scheduled('steam_status_daily_summary'); // Doit retourner un timestamp⚙️ Configuration recommandée
Pour notifications Discord actives
Cache serveur : 15 secondes (équilibre perf/réactivité)
Cache latence : 5 secondes (mises à jour fréquentes)
Cooldown Discord : 300 secondes (5 min, évite le spam)
Vérification serveurs : 60 secondes (via cron)
Pour performance maximale
Cache serveur : 60 secondes
Cache latence : 30 secondes
Désactiver Discord : Si non utilisé
🐛 Bugs connus corrigés
- Widget Elementor ne pouvait pas accéder aux données serveur
- Test serveur simulé au lieu d'être réel
- Preview des couleurs non fonctionnelle
- Interface Discord sans backend
- Pas de nonce de sécurité
- Options Discord non enregistrées
- Méthodes privées inaccessibles depuis Elementor
- Duplication de code entre widget et plugin
- Cache latence pouvait rester à false indéfiniment
📚 Documentation des nouvelles méthodes
Méthodes AJAX
ajaxTestDiscordWebhook()
// Teste la connexion au webhook Discord
// Retourne: JSON success/error
// Sécurité: Vérifie nonce et permissionsajaxTestServerConnection()
// Teste la connexion à un serveur
// Paramètres: ip, port, game_type
// Retourne: JSON avec données serveur ou erreurMéthodes Discord
sendDiscordMessage($webhook_url, $data)
// Envoie un message via webhook
// Retourne: bool (true si succès)checkServersStatus()
// Vérifie l'état de tous les serveurs
// Appelé automatiquement par cron toutes les minutesbuildDiscordEmbed($server, $state, $type)
// Construit un embed Discord formaté
// Types: offline, online, player_threshold, high_latencysendDailySummary()
// Envoie le résumé quotidien à minuit
// Appelé automatiquement par cronMéthodes publiques (pour Elementor)
public function getServerDataCached($server, $id)
public function getGameIcon($game_type)
public function getLatencyClass($latency)
public function getProtocolFromGameType($game_type)
public function getSupportedGames()
public function getServers()
public function renderServerForElementor($server_id, $options)🧪 Tests recommandés
1. Test des serveurs
- Ajouter un serveur valide et le tester
- Ajouter un serveur invalide et vérifier le message d'erreur
- Tester différents types de jeux (Source, GoldSource, Minecraft)
2. Test Discord
- Configurer un webhook de test
- Cliquer sur "Tester" et vérifier la réception
- Activer les notifications et simuler un serveur offline
- Vérifier le cooldown entre notifications
3. Test Elementor
- Créer une page avec le widget
- Tester l'affichage en mode cartes
- Tester l'affichage en mode tableau
- Vérifier la personnalisation des styles
4. Test shortcodes
[steam_status id="0"] // Serveur unique
[steam_status_all] // Tous les serveurs⚠️ Limitations connues
- WP-Cron : Nécessite du trafic sur le site ou un vrai cron système
- Discord Rate Limits : Max 30 webhooks/minute par webhook
- Latence : 3 requêtes par mesure = charge réseau
- Cache : Les états peuvent être en retard selon la configuration
🔮 Améliorations futures possibles
- Interface de logs pour historique des notifications
- Graphiques de statistiques serveurs
- Intégration Telegram/Slack en plus de Discord
- API REST pour accès externe
- Dashboard avec état en temps réel
- Support de plus de protocoles (FiveM, Teamspeak, etc.)
- Webhooks sortants pour intégrations tierces
- Mode maintenance programmé (pas de notifications)
💡 Conseils d'utilisation
Pour administrateurs de serveurs gaming
- Configurez Discord pour être alerté des pannes
- Réglez le cooldown à 5-10 minutes pour éviter le spam
- Utilisez la mention de rôle pour les alertes critiques
- Activez le résumé quotidien pour suivre les tendances
Pour développeurs WordPress
- Les méthodes publiques permettent l'extension du plugin
- Utilisez les hooks
steam_status_check_serversetsteam_status_daily_summary - Le cache peut être vidé avec
delete_transient('steam_status_X')
Pour designers
- Le widget Elementor offre un contrôle complet du style
- Les classes CSS sont cohérentes :
.steam-status.online/.offline - Les couleurs peuvent être personnalisées par serveur via CSS avancé
🆘 Support et dépannage
Discord ne fonctionne pas
- Vérifier que le webhook URL est correct
- Tester avec le bouton "Tester"
- Vérifier les logs PHP pour erreurs
- S'assurer que
wp_remote_post()n'est pas bloqué
Les notifications ne s'envoient pas
- Vérifier que WP-Cron est actif :
wp cron event list - Tester manuellement :
wp cron event run steam_status_check_servers - Augmenter le cache si trop de notifications
Widget Elementor ne s'affiche pas
- Vérifier qu'Elementor est à jour
- Régénérer les CSS Elementor
- Vider le cache WordPress et du navigateur
Serveurs non détectés
- Vérifier IP et port
- Tester avec le bouton "Tester" dans l'admin
- Vérifier que le protocole (Source/GoldSource/Minecraft) est correct
- Certains hébergeurs bloquent les connexions sortantes
📄 Licence et crédits
- Plugin : GPL-2.0+
- SourceQuery : xPaw/PHP-Source-Query-Class
- MinecraftQuery : xPaw/PHP-Minecraft-Query
- Auteur : Skylide
- Version : 1.4.0
🔄 Workflow de mise à jour GitHub
Le plugin supporte les mises à jour automatiques via GitHub :
- Push une nouvelle version sur GitHub
- Créer une release avec tag (ex: v1.4.0)
- WordPress détectera automatiquement la mise à jour
- Les utilisateurs verront la notification dans leur admin
✨ Conclusion
Cette version 1.4.0 transforme le plugin d'un simple afficheur de statut en une solution complète de monitoring avec notifications intelligentes. Toutes les fonctionnalités promises sont maintenant implémentées et fonctionnelles.
Merci d'utiliser Steam Server Status SourceQuery PHP !