load_dependencies(); } /** * Charge les dépendances nécessaires. */ private function load_dependencies() { $managers = array( 'PDFBuilderSettingsManager.php', 'PdfBuilderTemplateManager.php', ); $woocommerce_managers = array( 'PDFBuilderVariableMapper.php', 'PDF_Builder_WooCommerce_Integration.php', ); foreach ( $managers as $manager ) { $manager_path = PDFIB_PLUGIN_DIR . 'src/Managers/' . $manager; if ( file_exists( $manager_path ) ) { require_once $manager_path; } } $this->load_secondary_dependencies( $woocommerce_managers ); } /** * Charge les dépendances secondaires. * * @param array $woocommerce_managers Dépendances WooCommerce. */ private function load_secondary_dependencies( array $woocommerce_managers ) { if ( defined( 'WC_VERSION' ) || class_exists( 'WooCommerce' ) ) { foreach ( $woocommerce_managers as $manager ) { $manager_path = PDFIB_PLUGIN_DIR . 'src/Managers/' . $manager; if ( file_exists( $manager_path ) ) { require_once $manager_path; } } } $core_classes = array( 'PdfBuilderSecurityValidator.php', ); foreach ( $core_classes as $core_class ) { $core_path = PDFIB_PLUGIN_DIR . 'src/Core/' . $core_class; if ( file_exists( $core_path ) ) { require_once $core_path; } } if ( file_exists( PDFIB_PLUGIN_DIR . self::PDFIB_ADMIN_FILE ) && ! class_exists( self::PDFIB_ADMIN_CLASS ) ) { require_once PDFIB_PLUGIN_DIR . self::PDFIB_ADMIN_FILE; } } /** * Récupère l'instance unique. * * @return self */ public static function get_instance() { if ( null === self::$instance ) { self::$instance = new self(); } return self::$instance; } /** * Initialise le plugin. */ public function init() { add_action( 'init', array( $this, 'initialize_directories' ) ); } /** * Enregistre les paramètres. */ public function register_settings() { add_settings_section( 'pdfib_main', __( 'Main Settings', 'advanced-pdf-invoice-builder' ), array( $this, 'settings_section_callback' ), 'pdfib_settings' ); } /** * Affiche le bloc de section des paramètres. */ public function settings_section_callback() { return null; } /** * Active le plugin. */ public function activate() { if ( ! class_exists( 'PDFIB\\Database\\SettingsTableManager' ) ) { require_once PDFIB_PLUGIN_DIR . 'src/Database/class-settingstablemanager.php'; } \PDFIB\Database\SettingsTableManager::create_table(); $this->create_database_tables(); add_option( 'pdfib_version', $this->version ); if ( function_exists( 'pdfib_log' ) ) { pdfib_log( 'Advanced PDF Invoice Builder activated', 1 ); } } /** * Désactive le plugin. */ public function deactivate() { if ( function_exists( 'pdfib_log' ) ) { pdfib_log( 'Advanced PDF Invoice Builder deactivated', 1 ); } } /** * Crée les tables de base de données. */ private function create_database_tables() { $charset_collate = pdfib_db()->get_charset_collate(); $table_templates = pdfib_db()->prefix . 'pdfib_templates'; $sql_templates = "CREATE TABLE $table_templates ( id mediumint(9) NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, template_data longtext NOT NULL, user_id bigint(20) unsigned NOT NULL DEFAULT 0, is_default tinyint(1) NOT NULL DEFAULT 0, created_at datetime DEFAULT CURRENT_TIMESTAMP, updated_at datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id) ) $charset_collate;"; $table_order_canvases = pdfib_db()->prefix . 'pdfib_order_canvases'; $sql_order_canvases = "CREATE TABLE $table_order_canvases ( id mediumint(9) NOT NULL AUTO_INCREMENT, order_id bigint(20) NOT NULL, canvas_data longtext NOT NULL, template_id mediumint(9) DEFAULT NULL, created_at datetime DEFAULT CURRENT_TIMESTAMP, updated_at datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY order_id (order_id), KEY template_id (template_id) ) $charset_collate;"; include_once ABSPATH . 'wp-admin/includes/upgrade.php'; dbDelta( $sql_templates ); dbDelta( $sql_order_canvases ); } /** * Affiche la notice de version PHP. */ public function php_version_notice() { ?>