Event_Controller.php $file = $base_dir . 'controllers/' . $class_name . '.php'; if (file_exists($file)) { require_once $file; return; } } if (strpos($relative_class, 'views\\PEPPOL_') === 0) { $class_name = substr($relative_class, strlen('views\\PEPPOL_')); $file = $base_dir . 'views/' . $class_name . '.php'; if (file_exists($file)) { require_once $file; return; } } if (strpos($relative_class, 'models\\PEPPOL_') === 0) { $class_name = substr($relative_class, strlen('models\\PEPPOL_')); $file = $base_dir . 'models/' . $class_name . '.php'; if (file_exists($file)) { require_once $file; return; } } if (strpos($relative_class, 'helpers\\PEPPOL_') === 0) { $class_name = substr($relative_class, strlen('helpers\\PEPPOL_')); $file = $base_dir . 'helpers/' . $class_name . '.php'; if (file_exists($file)) { require_once $file; return; } } // Mapping explicite pour les classes PEPPOL_ dont le nom de fichier // ne suit pas strictement le schéma "NomDeClasse.php". switch ($relative_class) { case 'controllers\\PEPPOL_Plugin': $file = $base_dir . 'controllers/Plugin.php'; break; case 'controllers\\PEPPOL_Woocommerce_controller': $file = $base_dir . 'controllers/Woocommerce_controller.php'; break; case 'controllers\\PEPPOL_peppol_controller': $file = $base_dir . 'controllers/Peppol_controller.php'; break; case 'models\\PEPPOL_Main_model': $file = $base_dir . 'models/Main_model.php'; break; case 'helpers\\PEPPOL_Woo_Helper': // Helper WooCommerce : fichier réel situé dans "app/helper/woo_helper.php" // Attention : sur les systèmes Linux, la casse et le nom du dossier/import doivent correspondre. $file = $base_dir . 'helper/woo_helper.php'; break; default: // Fallback : essayer le mapping standard $file = $base_dir . str_replace('\\', '/', $relative_class) . '.php'; break; } if (file_exists($file)) { require_once $file; return; } } } }); // Hook d'activation du plugin : délègue à PEPPOL_Plugin::activate() register_activation_hook( __FILE__, [PEPPOL_Plugin::class, 'activate'] ); // Menu et pages d'administration du plugin add_action( 'admin_menu', [PEPPOL_Plugin::class, 'add_admin_menu'] ); // Assets d'administration add_action( 'admin_enqueue_scripts', [PEPPOL_Plugin::class, 'enqueue_admin_assets'] ); // AJAX admin pour test de connexion API add_action( 'wp_ajax_esi_peppol_test_connection', [PEPPOL_Plugin::class, 'ajax_test_connection'] ); // AJAX admin pour renvoyer une facture Peppol depuis la page de logs add_action( 'wp_ajax_esi_peppol_resend_invoice', [PEPPOL_Plugin::class, 'ajax_resend_invoice'] ); // AJAX admin pour consulter le statut d'une facture Peppol depuis la page de logs add_action( 'wp_ajax_esi_peppol_check_invoice_status', [PEPPOL_Plugin::class, 'ajax_check_invoice_status'] ); // AJAX admin pour récupérer les détails d'un log Peppol add_action( 'wp_ajax_esi_peppol_get_log_details', [PEPPOL_Plugin::class, 'ajax_get_log_details'] ); // Champ TVA de la boutique dans les réglages WooCommerce > Général. add_filter( 'woocommerce_general_settings', [PEPPOL_Plugin::class, 'filter_woocommerce_general_settings'] ); // Initialisation générale du plugin (hooks WooCommerce, etc.) add_action( 'plugins_loaded', static function () { $plugin = new PEPPOL_Plugin(); $plugin->init(); }, 20 );