=== Encodage Agenda (info-lux) === Contributors: info-lux Tags: agenda, events, frontend submission, info-lux Requires at least: 6.0 Tested up to: 6.5 Requires PHP: 7.4 Stable tag: 1.1.0 License: GPLv2 or later Formulaire frontend d'encodage d'événements pour info-lux.com. Inscription libre + vérification email + validation manuelle. Suit le gabarit Agenda Builder (titre Lieu>Thème>Sujet, métas _ilx_agenda_*, cat 4154 + cat commune). == Description == Plugin custom pour info-lux.com qui permet à des organisateurs externes de soumettre leurs événements à l'Agenda via un formulaire public, sans accès au back-office WP. = Workflow = 1. L'organisateur arrive sur la page /encoder-evenement-agenda/ et crée un compte. 2. Il reçoit un email avec un lien de confirmation (token 7 jours). 3. Une fois loggé, il accède au formulaire complet (gabarit Agenda Builder). 4. Sa soumission crée un post en status `pending` dans la cat Agenda (4154) + cat commune. 5. Vincent reçoit un email de notification. 6. Il valide via le menu admin "Encodage Agenda" → Approuver / Rejeter (avec motif). 7. L'organisateur reçoit l'email de confirmation avec le lien de l'événement publié. = Sécurité = - Honeypot anti-bot - Throttle IP sur inscription (60s entre 2 inscriptions depuis la même IP) - Quota 10 événements / 30 jours par utilisateur - Email vérifié obligatoire avant 1ère soumission - Réponse identique pour login échec et lost-password (anti-énumération) - Rôle `encodage_agenda` sans aucune capability d'édition WP = Champs du formulaire = Identité : sujet, thème (auto-complete sur thèmes Agenda) Lieu : nom, adresse, CP, commune, pays (BE/LU/FR/DE) Dates : début + fin + heures Description : description complète + programme détaillé Tarifs : gratuit OU min/max (mention "prix indicatifs" auto-ajoutée) Accès : notes transports + PMR Infos : URL billetterie, URL site officiel, email contact, tél contact Images : 2 uploads séparés — image principale/bannière (featured, format paysage) + affiche officielle (poster, format portrait, injectée dans le contenu). JPEG/PNG/WebP, max 5 Mo chacun, conversion WebP auto via ilx-auto-webp. Source : URL externe pour vérification (interne, non publiée) = Installation = 1. Activer le plugin via Extensions. 2. Réglages → "Encodage Agenda" → Réglages : configurer le slug de la page (par défaut `encoder-evenement-agenda`). 3. Créer la page WP correspondante et y placer en mode HTML le shortcode `[encodage_agenda]`. 4. Tester en mode anonyme (déconnecté). == Changelog == = 1.1.0 — 2026-05-22 = * Ajout : second upload "Affiche officielle" (poster portrait) en plus de l'image bannière, comme dans Agenda Builder. * Stockée en attachment lié au post, ID dans meta `_ilx_agenda_affiche`. * Injectée automatiquement dans le contenu (figure flottée à droite, max-width 320px, styles inline kses-safe). * Refacto : validation des uploads mutualisée (validate_upload_field) — supporte image + affiche. = 1.0.1 — 2026-05-22 = * Fix : wp_mail_content_type ne fuit plus vers les autres emails WP du site (passe par add/remove_filter par envoi). * Fix : CP préfixé manuellement par l'organisateur (LU-/FR-/DE-) n'est plus doublonné. * Fix : codes d'erreur PHP upload (UPLOAD_ERR_*) mappés en messages français + guard avant media_handle_upload. * Fix : colonne "Origine" limitée au post-type `post` (n'apparaît plus sur sponsors et autres CPT). * Nettoyage : variable morte `$redirect_back` retirée. = 1.0.0 — 2026-05-22 = * Version initiale : inscription + vérif email + formulaire + validation admin.