ESI Peppol : Ce plugin nécessite PHP 7.0.0 ou supérieur. Vous utilisez actuellement PHP ' . htmlspecialchars(PHP_VERSION, ENT_QUOTES, 'UTF-8') . '. Veuillez mettre à jour votre version de PHP.
';
return;
}
?>
ESI Peppol : Ce plugin nécessite WooCommerce. Veuillez installer et activer WooCommerce avant d\'utiliser ce plugin.
';
return;
}
?>
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 'controllers\\PEPPOL_Webhook_controller':
$file = $base_dir . 'controllers/Webhook_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 avec vérification WooCommerce
register_activation_hook(
__FILE__,
function () {
// Vérifier si WooCommerce est actif avant l'activation
if (!esi_peppol_is_woocommerce_active()) {
deactivate_plugins(plugin_basename(__FILE__));
wp_die(
esc_html__('ESI Peppol nécessite WooCommerce pour fonctionner. Veuillez installer et activer WooCommerce avant d\'activer ce plugin.', 'esi_peppol'),
esc_html__('Dépendance manquante', 'esi_peppol'),
['back_link' => true]
);
}
// Déléguer à PEPPOL_Plugin::activate() si WooCommerce est disponible
PEPPOL_Plugin::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']
);
// AJAX admin pour détecter les champs TVA
add_action(
'wp_ajax_esi_peppol_detect_vat_fields',
[PEPPOL_Plugin::class, 'ajax_detect_vat_fields']
);
// AJAX admin pour sauvegarder le champ TVA sélectionné
add_action(
'wp_ajax_esi_peppol_save_vat_field',
[PEPPOL_Plugin::class, 'ajax_save_vat_field']
);
// 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
);
// Enregistrement des routes REST API pour les webhooks
add_action(
'rest_api_init',
[\ESI_PEPPOL\controllers\PEPPOL_Webhook_controller::class, 'register_routes']
);