160 lines
5.3 KiB
PHP
160 lines
5.3 KiB
PHP
<?php
|
|
/**
|
|
* Plugin Name: ESI_peppol
|
|
* Description: Woocommerce peppol gateway
|
|
* Version: 0.1.0
|
|
* Author: Votre Nom
|
|
* Text Domain: esi_peppol
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
define('ESI_PEPPOL_VERSION', '0.1.0');
|
|
define('ESI_PEPPOL_DIR', plugin_dir_path(__FILE__));
|
|
define('ESI_PEPPOL_URL', plugin_dir_url(__FILE__));
|
|
|
|
if (!defined('ABSPATH')) {
|
|
exit;
|
|
}
|
|
|
|
use ESI_PEPPOL\controllers\PEPPOL_Plugin;
|
|
|
|
// Autoloader simple pour les classes PEPPOL (contrôleurs, modèles...) et celles avec namespace
|
|
spl_autoload_register(function ($class) {
|
|
|
|
if (strpos($class, 'ESI_PEPPOL\\') === 0 || strpos($class, 'PEPPOL_') === 0) {
|
|
|
|
// Gestion des classes avec namespace ESI_PEPPOL
|
|
if (strpos($class, 'ESI_PEPPOL') === 0) {
|
|
$base_dir = __DIR__ . '/app/';
|
|
|
|
$relative_class = substr($class, strlen('ESI_PEPPOL\\'));
|
|
|
|
// Mapping simple pour les classes PEPPOL_
|
|
if (strpos($relative_class, 'controllers\\PEPPOL_') === 0) {
|
|
$class_name = substr($relative_class, strlen('controllers\\PEPPOL_'));
|
|
// Pour PEPPOL_Event_Controller -> 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']
|
|
);
|
|
|
|
// 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
|
|
); |