' . esc_html( sprintf( /* translators: 1: required PHP version, 2: current PHP version */ __( 'Factella requires PHP %1$s or newer. Your site runs PHP %2$s. Please ask your host to update PHP.', 'factella' ), EFACTURE_FR_MIN_PHP, PHP_VERSION ) ) . '

'; } ); return; } // Composer dependencies for Factur-X (horstoeko/zugferd + mPDF), bundled and namespace-prefixed // with Strauss (EFactureFR\Vendor\...) so they never collide with another plugin's copies. if ( is_readable( EFACTURE_FR_DIR . 'vendor-prefixed/autoload.php' ) ) { require_once EFACTURE_FR_DIR . 'vendor-prefixed/autoload.php'; } require_once EFACTURE_FR_DIR . 'includes/class-identifiers.php'; require_once EFACTURE_FR_DIR . 'includes/class-crypto.php'; require_once EFACTURE_FR_DIR . 'includes/class-connector.php'; require_once EFACTURE_FR_DIR . 'includes/class-connector-superpdp.php'; require_once EFACTURE_FR_DIR . 'includes/class-transmission.php'; require_once EFACTURE_FR_DIR . 'includes/class-settings.php'; require_once EFACTURE_FR_DIR . 'includes/class-checkout-fields.php'; require_once EFACTURE_FR_DIR . 'includes/class-company-lookup.php'; require_once EFACTURE_FR_DIR . 'includes/class-invoice-numbering.php'; require_once EFACTURE_FR_DIR . 'includes/class-invoice-manager.php'; require_once EFACTURE_FR_DIR . 'includes/class-admin-order.php'; require_once EFACTURE_FR_DIR . 'includes/class-facturx.php'; require_once EFACTURE_FR_DIR . 'includes/class-invoice-delivery.php'; require_once EFACTURE_FR_DIR . 'includes/class-rest.php'; require_once EFACTURE_FR_DIR . 'includes/class-report.php'; /** * Declare compatibility with WooCommerce features (HPOS order tables and block checkout). */ add_action( 'before_woocommerce_init', static function () { if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) { \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', EFACTURE_FR_FILE, true ); \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'cart_checkout_blocks', EFACTURE_FR_FILE, true ); } } ); /** * Create the invoice counter when the plugin is activated. */ register_activation_hook( __FILE__, static function () { EFacture_FR_Invoice_Numbering::install(); } ); /** * Boot the plugin once WooCommerce is loaded. */ add_action( 'plugins_loaded', static function () { // Translations load automatically since WordPress 4.6 (from this plugin's /languages folder). if ( ! class_exists( 'WooCommerce' ) ) { add_action( 'admin_notices', static function () { if ( ! current_user_can( 'activate_plugins' ) ) { return; } echo '

' . esc_html__( 'Factella requires WooCommerce to be installed and active.', 'factella' ) . '

'; } ); return; } EFacture_FR_Settings::init(); EFacture_FR_Checkout_Fields::init(); EFacture_FR_Company_Lookup::init(); EFacture_FR_Invoice_Manager::init(); EFacture_FR_Admin_Order::init(); EFacture_FR_REST::init(); EFacture_FR_Report::init(); // Factur-X generation only runs when its library is bundled (free version core). if ( class_exists( \EFactureFR\Vendor\horstoeko\zugferd\ZugferdDocumentBuilder::class ) ) { EFacture_FR_Facturx::init(); EFacture_FR_Invoice_Delivery::init(); // Platform transmission builds on the generated PDFs. EFacture_FR_Transmission::init(); } } );