WP Manifestindependent plugin directory
manifest / users / dame

DAME - Dossier Administratif des Membres Échiquéens

Dossier Administratif des Membres Échiquéens

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/trollinou/dame/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Version: 5.6.2 Auteur: Etienne Gagnon Licence: GPL v2 or later

Description

DAME est une solution complète de gestion de club conçue pour centraliser et automatiser le suivi administratif des membres. Contrairement à une simple liste, DAME gère le cycle de vie complet de l'adhérent : de la préinscription en ligne jusqu'à l'historique pluriannuel des adhésions, en passant par le suivi des obligations légales (honorabilité, santé).

Le plugin est structuré autour d'une architecture moderne (POO) garantissant performance et sécurité pour les données sensibles de votre association.

Prérequis

  • WordPress : 7.1 ou supérieur
  • PHP : 8.4 ou supérieur

Développement & Architecture

DAME utilise un workflow de développement professionnel pour garantir la performance et la maintenabilité :

  • Architecture PHP 8.4 : Typage strict (strict_types=1), DTOs readonly, Énumérations typées (Enums), couche d'accès aux données (Repositories) et découpage modulaire par responsabilités (Façade & Composants).
  • TypeScript & Front-end : Code source en TypeScript strict (strict: true, ES2021 Vanilla sans dépendance jQuery) dans src/js/ et modélisation des contrats d'API partagés avec la PWA dans src/types/. Styles SCSS dans src/scss/.
  • Build Pipeline : Compilation rapide via esbuild générant les bundles minifiés dans assets/js/ et Sass dans assets/css/ via npm run build. Vérification des types via npm run typecheck.
  • Dépendances : Gestion rigoureuse via Composer (librairies tierces) et npm (TypeScript, esbuild, linters).
  • Qualité : Analyse statique PHP via PHPStan (Level 7) et vérification des types TypeScript (tsc --noEmit).

Fonctionnalités Cœurs : Gestion des Adhésions

C'est le moteur principal du plugin, conçu pour offrir une vision claire de vos effectifs à tout instant.

1. Système de "Saisons Dynamiques"

Oubliez les statuts figés (ancien/nouveau). DAME utilise une taxonomie de saisons :

  • Historique Total : Chaque membre conserve la trace de toutes ses saisons d'adhésion (ex: "Saison 2023/2024", "Saison 2024/2025").
  • Statut Automatique : Le plugin calcule en temps réel si un membre est "Actif" en vérifiant s'il possède le tag de la saison définie comme "Active" dans vos réglages.
  • Basculement Simplifié : Un outil de réinitialisation annuelle permet de préparer la nouvelle saison en un clic, sans perdre les données passées.

2. Dossier Administratif Complet

Chaque fiche membre centralise :

  • Identité & Coordonnées : État civil complet, adresses, emails et téléphones.
  • Représentants Légaux : Gestion double pour les mineurs avec fonctions de recopie rapide des coordonnées.
  • Santé, Documents & Signatures Électroniques : Suivi des attestations de santé officielles FFE (ffe_attestation_sante.pdf), des certificats médicaux et des autorisations parentales pour mineurs (el_autorisation_parentale.pdf).
    • Signature Électronique Dématérialisée : Incrustation automatique de la signature manuscrite tactile (horodatage UTC et IP de traçabilité) sur les PDFs officiels dès la préinscription.
    • Stockage Dédié & Sécurisé : Les documents sont isolés dans wp-content/uploads/dame-documents/ avec protection automatique .htaccess contre tout accès public non autorisé.
    • Nettoyage Automatique : Suppression intégrale des fichiers sur disque lors de la suppression d'une préinscription pour éviter tout fichier orphelin (conformité RGPD).
    • Gestion Documentaire par Saison (Métabox Adhérent) : Consultation immédiate des PDFs signés et possibilité d'importer manuellement (PDF/JPG/PNG) les documents manquants pour la saison courante.
  • Honorabilité : Champs spécifiques pour le contrôle d'honorabilité (obligatoire pour les encadrants et bénévoles en contact avec des mineurs).

3. Classification et Segmentation

  • Groupes de Membres : Classez vos adhérents par niveaux ou fonctions (École d'échecs, Compétition, Bénévoles, Élus) pour des filtres précis.
  • Filtres Avancés : Retrouvez instantanément vos membres par saison, par groupe, par genre, par catégorie d'âge (calculée automatiquement en UTC) ou par type de licence.
  • Interopérabilité & Helper LMS : Méthode statique optimisée Group::get_groups_for_adherent(int $adherent_id): array permettant aux extensions pédagogiques (comme ROI) d'interroger immédiatement les groupes d'entraînement rattachés à un adhérent.

4. Attestations d'Adhésion & Paiement (PDF & Envoi par E-mail)

  • Génération Dématérialisée PDF : Génération de reçus et attestations officielles (pour CE, CSE, mutuelles santé, employeurs, Pass'Sport) conformes aux exigences administratives françaises.
    • Montant en chiffres et conversion automatique en toutes lettres en français (DAME\Core\Utils::number_to_french_words).
    • Incrustation du logo, du cachet officiel, de la signature du représentant légal et des mentions légales (RNA, SIREN, siège social).
  • Téléchargement Unitaire ou Groupé :
    • Bouton d'action directe et action de ligne « Attestation » dans la liste des adhérents avec modale interactive pré-remplie (ajustement du montant, date, mode de règlement).
    • Action groupée « Télécharger les attestations (PDF groupé) » pour imprimer ou archiver l'ensemble des attestations d'une sélection d'adhérents en un seul fichier PDF multipages.
  • Envoi Asynchrone par E-mail avec File d'Attente (BatchSender) :
    • Envoi par e-mail en un clic avec pièce jointe PDF vers l'adhérent et/ou ses représentants légaux.
    • Intégration directe dans la file d'attente globale FIFO de BatchSender garantissant le respect strict des quotas d'envoi par minute de l'hébergeur (smtp_batch_size).
    • Modèle de courriel personnalisable avec balises dynamiques ({prenom}, {nom}, {saison}, {montant}, {date_paiement}, {mode_paiement}, {association}, {site_web}).
  • Tarification Simplifiée par Saison :
    • Gestion fine des tarifs Licence A, Licence B, réduction féminine et majoration première adhésion directement dans l'édition de chaque saison (taxonomie dame_saison_adhesion) ou dans les réglages généraux.
    • Métabox de paiement par saison sur la fiche adhérent (statut réglé/en attente, date, montant, mode de règlement).

Fonctionnalités Additionnelles

Messagerie & Communication

  • Mailing Ciblé : Envoyez des messages à des segments précis (ex: "Toutes les femmes de l'école d'échecs").
  • Inscription Newsletter (Visiteurs) : Formulaire public avec modale accessible (shortcode [dame_newsletter]), validation d'email par Double Opt-In (conforme RGPD), détection anti-doublon chez les adhérents/contacts et héritage du style du thème actif.
  • Traçabilité Totale : Suivi individuel des envois (date/heure précise pour chaque destinataire) et statistiques d'ouverture (Pixel Tracking).
  • Gestion des Refus : Case "Refus mailing" pour respecter les préférences de vos membres et partenaires.
  • Duplication flexible : Transformez n'importe quel Message envoyé en Article WordPress (brouillon) pour alimenter votre blog sans double saisie.

Gestion des Partenaires & Contacts

  • Module Dédié : Un annuaire distinct pour les partenaires externes (Presse, Mairies, Sponsors, Abonnés Newsletter), intégré au système de messagerie.

Appels à Bénévoles (Participation)

  • Planification : Créez des événements (tournois, fêtes) et définissez des créneaux horaires.
  • Recrutement Simple : Les membres s'inscrivent sur les créneaux via le site ou l'application mobile.
  • Suivi en Temps Réel : Tableau récapitulatif des inscrits par créneau dans l'administration.
  • Protection des Données : Les votes sur des dates passées sont verrouillés pour préserver l'historique.

Agenda & Flux iCalendar

  • Calendrier Interactif : Gestion des événements, compétitions et entraînements.
  • Assignation des Participants : Sélection rapide des adhérents participants avec tri automatique des membres sélectionnés en haut de liste et champ de recherche instantané insensible à la casse et aux accents (Unicode NFD).
  • Flux ICS Magiques : Abonnement direct sur iPhone, Android ou Mac avec gestion intelligente des fuseaux horaires (plus de décalage été/hiver).
  • Export Excel / CSV : Export complet des événements au format Excel Français (séparateur ;, UTF-8 BOM, formats de dates/nombres adaptés) avec prise en compte des filtres actifs (catégorie, période).

Préinscriptions en Ligne

  • Zéro Saisie Manuelle : Formulaire public générant des fiches de préinscription.
  • Rapprochement : Système intelligent pour fusionner une préinscription avec un membre déjà existant en base.

Synchronisation FFE (Fédération Française des Échecs)

  • Daily Sync : Synchronisation automatisée chaque jour à midi pour récupérer les classements ELO (Standard, Rapide, Blitz) et les numéros de licence officiels.
  • Import CSV : Outil d'importation manuelle optimisé avec algorithme de correspondance à double niveau (Licence, puis Nom) pour maintenir la base de données à jour sans doublons.
  • FIDE ID : Récupération automatique des identifiants FIDE manquants via scraping sécurisé.

Portabilité & Sauvegarde

  • Exports CSV : Formats optimisés pour les imports fédéraux (FFE), le secrétariat, les adhérents, les contacts et l'agenda des événements.
  • Sauvegardes JSON compressées : Sauvegardes journalières automatiques par email couvrant les Adhérents, l'Agenda et le Contenu du site (Articles, Pages, Menus). Le système force la restauration des IDs originaux pour préserver parfaitement les relations, les liens de menus et la hiérarchie des pages.

Dépendances

Pour la fonctionnalité pédagogique (LMS), ce plugin nécessite le plugin ROI.


API REST pour PWA Mobile

Le plugin expose plusieurs points de terminaison (endpoints) personnalisés pour permettre l'administration via une application mobile (PWA).

Authentification

Toutes les requêtes personnalisées nécessitent que l'utilisateur soit authentifié (is_user_logged_in()), sauf l'endpoint d'inscription.

Accès à l'Application (PWA)

L'application mobile est accessible via une URL simplifiée : https://votre-site.com/pwa. Une redirection automatique est en place pour pointer vers le dossier de distribution du plugin.

Support des Métadonnées (Post Meta)

Le support des 'custom-fields' a été activé pour les types Adhérents, Agenda, Contacts, Benevolat et Benevolat_Reponse. Cela permet de lire et modifier toutes les métadonnées directement via les endpoints REST standard.

Note spécifique au Bénévolat : Les données de configuration (dates et horaires) sont exposées sous la clé dame_benevolat_data. Chaque créneau horaire inclut désormais le nombre de bénévoles souhaités via la propriété needed (entier, 0 si non spécifié). Le dictionnaire du nombre d'inscrits par créneau est accessible sous dame_benevolat_counts ({"0_0": 2, ...}). Pour les Réponses, l'ID du bénévolat parent est disponible sous la clé benevolat_id et les choix sous choices.

1. Données de Référence (Lookups)

Utilisées pour alimenter les formulaires de l'application.

  • URL : /wp-json/dame/v1/data/{type}
  • Méthode : GET

2. Anniversaires du Jour

  • URL : /wp-json/dame/v1/birthdays/today
  • Méthode : GET

3. Prochains Anniversaires

  • URL : /wp-json/dame/v1/birthdays/upcoming
  • Méthode : GET

4. Menu PWA

  • URL : /wp-json/dame/v1/pwa-menu
  • Méthode : GET

5. Configuration PWA

Retourne la configuration globale de l'application (comme l'activation et les chemins d'assets du module ROI).

  • URL : /wp-json/dame/v1/pwa-config
  • Méthode : GET

6. Inscription (Membres uniquement)

Permet à un membre du club de créer son compte utilisateur WordPress.

  • URL : /wp-json/dame/v1/register
  • Méthode : POST

6. Mes Identités (Profiles)

Récupère les identités liées à l'email de l'utilisateur connecté.

  • URL : /wp-json/dame/v1/my-identities
  • Méthode : GET
  • Logique : Si l'utilisateur est un adulte majeur unique lié à cet email, seul son profil de membre est renvoyé. Pour les familles, tous les profils (adhérents + représentants) sont listés.

7. Préinscriptions & Détails Adhérent

  • Soumission / Mise à jour : POST /wp-json/dame/v1/pre-inscription
    • Prend en charge adherent_id et pre_inscription_id.
    • Met à jour le post dame_pre_inscription en attente au lieu de créer un doublon si le membre ou l'enfant a déjà soumis sa préinscription.
  • Détails Adhérent pour préremplissage : GET /wp-json/dame/v1/adherent-details?adherent_id={id}
    • Renvoie en priorité les données de la préinscription pending si elle existe déjà (is_pre_inscription: true), sinon les données de la fiche adherent N-1.
  • Téléchargement Sécurisé PDF : GET /wp-json/dame/v1/pre-inscriptions/{id}/pdf/{health|parental}?token={token}

8. Gestion du Bénévolat

  • Récupérer les statistiques d'un appel : GET /wp-json/dame/v1/benevolats/{id}/stats
    • Renvoie la synthèse de chaque créneau avec choice_key, date, start, end, needed, registered_count, is_fulfilled.
  • Récupérer mon vote : GET /wp-json/dame/v1/benevolats/{id}/my-vote
  • Voter / Modifier : POST /wp-json/dame/v1/benevolats/{id}/vote
    • Corps : { "choices": ["0_1", "1_0"] }

9. Ressources Natives WordPress

Le plugin expose les Custom Post Types via /wp-json/wp/v2/ :

  • Adhérents : adherents
  • Agenda : agenda (supporte after_date et before_date)
  • Contacts : contacts
  • Bénévolat : benevolats
  • Réponses : benevolat-reponses