Aller au contenu

Classes et modules

Cette page fournit un inventaire détaillé de chaque classe PHP et module JavaScript du plugin, ainsi que leurs responsabilités. Pour une vue de plus haut niveau sur l’articulation de ces composants, consultez la Vue d’ensemble de l’architecture.

Irisolaris\Map\
├── Core\
│ └── Plugin.php
├── Admin\
│ └── Admin.php
├── API\
│ ├── API.php
│ └── DensityController.php
└── Frontend\
└── Frontend.php

Fichier : src/Core/Plugin.php

La classe orchestratrice principale. Gère l’initialisation du plugin, l’enregistrement des hooks WordPress et les gestionnaires AJAX principaux.

Responsabilités :

  • Enregistrement des types de contenu personnalisés (irisolaris_plant, irisolaris_lead)
  • Enregistrement des taxonomies (irisolaris_status, irisolaris_region)
  • Chargement des scripts frontend et admin
  • Gestionnaire AJAX de vérification d’éligibilité (avec règles par niveaux basées sur la densité)
  • Gestionnaire AJAX de géocodage
  • Création de leads (CPT WordPress)
  • Notification par e-mail lors de nouveaux leads

Fichier : src/Admin/Admin.php

La classe la plus volumineuse du plugin. Gère toutes les fonctionnalités côté administration.

Responsabilités :

  • Pages de menu d’administration (5 pages : importateur, paramètres, grille de densité, importateur de densité, liste de densité)
  • Meta boxes pour l’édition des centrales et des leads (3 meta boxes)
  • Import de centrales depuis CSV/XLSX (AJAX en 3 phases : initialisation, traitement, finalisation)
  • Import de grille de densité (AJAX en 3 phases)
  • Suppression en masse de centrales (AJAX en 3 phases)
  • Planification du cron RGPD et nettoyage des leads
  • Colonnes d’administration, filtres et colonnes triables pour les listes de centrales/leads
  • Page de paramètres avec l’API WordPress Options
  • Gestion du cache (purge manuelle)

Gestionnaires AJAX d’administration (16) :

GestionnaireRôle
irisolaris_import_initImport de centrales : validation du fichier, comptage des lignes
irisolaris_import_processImport de centrales : traitement par lots (200 lignes)
irisolaris_import_finalizeImport de centrales : journalisation, nettoyage des fichiers temporaires
irisolaris_clear_import_historyPurge de la table du journal d’import
irisolaris_clear_cachePurge du cache transient GeoJSON
irisolaris_remove_plants_initSuppression en masse de centrales : initialisation
irisolaris_remove_plants_processSuppression en masse de centrales : suppression par lots
irisolaris_remove_plants_finalizeSuppression en masse de centrales : finalisation
irisolaris_import_density_initImport de densité : initialisation
irisolaris_import_density_processImport de densité : traitement par lots
irisolaris_import_density_finalizeImport de densité : finalisation
irisolaris_clear_density_import_historyPurge des journaux d’import de densité
irisolaris_get_density_detailsObtenir un enregistrement de densité par codgeo
irisolaris_delete_all_densityPurge de la table de densité

Fichier : src/API/API.php

Gère tous les endpoints de l’API REST et la logique d’invalidation du cache.

Responsabilités :

  • 7 endpoints REST (voir API REST)
  • Génération GeoJSON avec cache par transients et invalidation par incrémentation de version
  • Proxy de géocodage vers BAN API
  • Endpoint de vérification d’éligibilité
  • Soumission de formulaire HubSpot avec enrichissement côté serveur
  • En-têtes HTTP de cache (Cache-Control, ETag)
  • Hooks d’invalidation du cache sur save_post, delete_post, set_object_terms

Fichier : src/API/DensityController.php

Contrôleur léger pour la recherche de données de densité.

Endpoints :

  • GET /density/{codgeo} — Recherche par code commune INSEE
  • GET /density/postcode/{postcode} — Recherche par code postal (rétrocompatibilité)

Fichier : src/Frontend/Frontend.php

Gère le rendu frontend et le chargement des scripts.

Responsabilités :

  • Chargement de frontend.js et du CSS sur les pages contenant le shortcode de la carte
  • Gestionnaire du shortcode [irisolaris_map] (rendu du conteneur de carte + passage de la configuration via wp_localize_script)
  • Filtre irisolaris_map_plants_data pour la personnalisation des données GeoJSON

Côté frontend, le plugin suit une architecture modulaire compilée en un unique bundle via Webpack.

Le frontend est construit à partir de fichiers source ES6+ modulaires, compilés via Webpack en un unique bundle (assets/build/frontend.js) :

ModuleResponsabilité
frontend.jsOrchestrateur principal — importe et connecte tous les modules
constants.jsNiveaux de périmètre, niveaux de densité, configuration des clusters, correspondance des statuts, timings d’animation
utils.jsDistance Haversine, correspondance des statuts, formatage des nombres, debounce, détection du viewport
LoadingManager.jsOverlays de chargement et animations
PopupManager.jsCréation et animation des popups pour centrales/clusters/adresses
FilterManager.jsGestion de l’état des filtres et interface utilisateur
EligibilityChecker.jsVérification d’éligibilité côté client avec niveaux de densité
PlantListRenderer.jsRendu de la liste des centrales en barre latérale avec chargement paresseux
geocoder.jsAutocomplétion d’adresse via BAN API
FichierRôle
assets/build/frontend.jsBundle compilé : classes IrisolarisMap + IrisolarisGeocoder
assets/build/frontend-style.cssStyles du composant carte
assets/build/public-style.cssStyles supplémentaires publics
FichierRôle
admin/js/import.jsInterface d’import de centrales (basée sur jQuery, AJAX en 3 phases)
src/blocks/map/edit.jsComposant éditeur de bloc Gutenberg
src/blocks/map/view.jsVue frontend du bloc Gutenberg

Le plugin enregistre des hooks pour l’activation et la désinstallation afin de gérer les tables de base de données, les options par défaut et les capacités de rôle.

S’exécute lors de l’activation du plugin :

  1. Création des tables de base de données personnalisées (irisolaris_import_logs, irisolaris_density)
  2. Définition des options WordPress par défaut (10 options)
  3. Création des termes de taxonomie par défaut (statut, puissance, région)
  4. Ajout de capacités personnalisées aux rôles Administrateur et Éditeur

S’exécute lors de la suppression du plugin :

  1. Suppression des tables de base de données personnalisées
  2. Retrait des capacités personnalisées de tous les rôles
  3. Suppression optionnelle des données de densité (contrôlée par l’option irisolaris_map_remove_data_on_uninstall)
  4. Nettoyage des transients et des options