<?php
/**
 * Plugin Name: ProstaFaktura dla KSeF
 * Plugin URI:  https://prostafakturaksef.pl
 * Description: Independent plugin (not affiliated with the Ministry of Finance). Issue invoices and send them to Poland's National e-Invoicing System (KSeF) - manually or from a WooCommerce order in one click, with acceptance confirmation, UPO and PDF download. FA(3) compliant.
 * Version:     1.0.4
 * Author:      prostafakturaksef.pl
 * License:     GPLv2 or later
 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
 * Text Domain: prostafaktura-ksef
 * Requires at least: 6.0
 * Requires PHP: 8.1
 * WC requires at least: 7.0
 * WC tested up to: 9.4
 */

// Zabezpieczenie przed bezpośrednim dostępem
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

// ================================================================
// Zgodność z WooCommerce HPOS (High-Performance Order Storage / custom order tables).
// Wtyczka korzysta z zamówień wyłącznie przez API WooCommerce (wc_get_order/wc_get_orders,
// $order->...meta), więc deklarujemy pełną zgodność — usuwa ostrzeżenie „niezgodna wtyczka".
// ================================================================
add_action( 'before_woocommerce_init', static function () {
	if ( class_exists( '\\Automattic\\WooCommerce\\Utilities\\FeaturesUtil' ) ) {
		\Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true );
	}
} );

/**
 * Logowanie diagnostyczne — tylko gdy WP_DEBUG jest włączone. W produkcji nie
 * zapisuje nic (zgodnie z wytycznymi WordPress.org — brak debug output).
 *
 * @param string $message Komunikat do zalogowania.
 * @return void
 */
if ( ! function_exists( 'ksef_efaktury_log' ) ) {
	function ksef_efaktury_log( $message ) {
		if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
			error_log( (string) $message ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log -- celowy debug log pod WP_DEBUG.
		}
	}
}

// ================================================================
// Współistnienie z wersją Pro (ksef-wordpress) — te same klasy/tabele gksef_*.
// Gdy Pro jest aktywne, wersja darmowa NIE ładuje swoich klas (ustępuje Pro), żeby nie
// doszło do „Cannot redeclare". NIE deaktywujemy żadnej wtyczki — o włączaniu/wyłączaniu
// decyduje wyłącznie użytkownik.
// ================================================================
$ksef_pro_active = in_array( 'ksef-wordpress/ksef-wordpress.php', (array) get_option( 'active_plugins', [] ), true );
if ( ! $ksef_pro_active && is_multisite() ) {
	$ksef_pro_active = array_key_exists( 'ksef-wordpress/ksef-wordpress.php', (array) get_site_option( 'active_sitewide_plugins', [] ) );
}
if ( $ksef_pro_active ) {
	return; // Pro aktywne — darmowa ustępuje i nie ładuje klas.
}
unset( $ksef_pro_active );

// ================================================================
// ⚠️ SECURITY: Stałe wtyczki - ustaw JAKO PIERWSZE
// ================================================================
define( 'KSEF_WORDPRESS_VERSION', '1.0.4' );
define( 'KSEF_WORDPRESS_PATH', plugin_dir_path( __FILE__ ) );
define( 'KSEF_WORDPRESS_URL', plugin_dir_url( __FILE__ ) );
define( 'KSEF_WORDPRESS_FILE', __FILE__ );
define( 'KSEF_WORDPRESS_PLUGIN_SLUG', 'prostafaktura-ksef' );

// Crypto key do zabezpieczenia tokenów (opcjonalne, ale zalecane)
if ( ! defined( 'KSEF_CRYPTO_KEY' ) ) {
	define( 'KSEF_CRYPTO_KEY', defined( 'AUTH_KEY' ) ? AUTH_KEY : hash( 'sha256', ABSPATH . 'ksef-fallback' ) );
}

// ================================================================
// Załaduj plugin (wersja darmowa — aktualizacje przez WordPress.org)
// ================================================================
require_once KSEF_WORDPRESS_PATH . 'includes/class-plugin.php';

// Hook aktywacji
register_activation_hook( KSEF_WORDPRESS_FILE, [ 'KSEF\WordPress\Plugin', 'activate' ] );

// Hook deaktywacji
register_deactivation_hook( KSEF_WORDPRESS_FILE, [ 'KSEF\WordPress\Plugin', 'deactivate' ] );

// ================================================================
// ⚠️ SECURITY: Inicjalizacja wtyczki
// ================================================================
add_action( 'plugins_loaded', [ 'KSEF\WordPress\Plugin', 'init' ] );
