<?php
/**
 * Plugin Name:       Leadlotse
 * Plugin URI:        https://hafenstudios.com/leadlotse
 * Description:       Formularbuilder und Lead-Erfassung. Bringt jede Anfrage sicher in den Hafen. DSGVO-first, ohne externen Call.
 * Version:           1.3.1
 * Update URI:        https://hafenstudios.com/updates/leadlotse
 * Requires at least: 6.5
 * Requires PHP:      8.1
 * Author:            Hafenstudios
 * Author URI:        https://hafenstudios.com
 * License:           GPL-2.0-or-later
 * License URI:       https://www.gnu.org/licenses/gpl-2.0.html
 * Text Domain:       leadlotse
 * Domain Path:       /languages
 *
 * @package Hafenstudios\Leadlotse
 */

defined( 'ABSPATH' ) || exit;

define( 'LEADLOTSE_VERSION', '1.3.1' );
define( 'LEADLOTSE_FILE', __FILE__ );
define( 'LEADLOTSE_DIR', plugin_dir_path( __FILE__ ) );
define( 'LEADLOTSE_URL', plugin_dir_url( __FILE__ ) );
define( 'LEADLOTSE_MIN_PHP', '8.1' );

/**
 * PHP-Version pruefen, sonst mit klarer Meldung (Ursache + naechster Schritt) stoppen.
 */
if ( version_compare( PHP_VERSION, LEADLOTSE_MIN_PHP, '<' ) ) {
	add_action(
		'admin_notices',
		static function () {
			echo '<div class="notice notice-error"><p>';
			printf(
				/* translators: 1: benoetigte PHP-Version, 2: aktuelle PHP-Version */
				esc_html__( 'Leadlotse benoetigt PHP %1$s oder neuer. Ihre Version ist %2$s. Bitte aktualisieren Sie PHP im Hosting-Panel oder fragen Sie Ihren Anbieter.', 'leadlotse' ),
				esc_html( LEADLOTSE_MIN_PHP ),
				esc_html( PHP_VERSION )
			);
			echo '</p></div>';
		}
	);
	return;
}

/**
 * Composer-Autoloader (enthaelt via files-Autoload den Core-Bootstrap).
 */
$leadlotse_autoloader = LEADLOTSE_DIR . 'vendor/autoload.php';
if ( is_readable( $leadlotse_autoloader ) ) {
	require_once $leadlotse_autoloader;
} else {
	add_action(
		'admin_notices',
		static function () {
			echo '<div class="notice notice-error"><p>';
			esc_html_e( 'Leadlotse ist nicht vollstaendig installiert (vendor-Ordner fehlt). Bitte laden Sie das Plugin erneut aus dem offiziellen Paket hoch oder fuehren Sie "composer install" aus.', 'leadlotse' );
			echo '</p></div>';
		}
	);
	return;
}

use Hafenstudios\Leadlotse\Install\Installer;
use Hafenstudios\Leadlotse\Plugin;

/**
 * Freemius-Lizenz-Layer (Muster: Adjet, Hausentscheidung 10.07.2026; Flotten-Linie
 * in FREEMIUS-LAUNCH.md).
 *
 * Die Flotte liefert EIN Paket aus: der Pro-Code steckt im selben ZIP und wird
 * zur Laufzeit ueber Core\Licensing\ProGate freigeschaltet. Kein zweites
 * Premium-ZIP, kein Code-Stripping. Darum is_premium/has_premium_version = false
 * und has_paid_plans = true; so bleibt auch der Freemius-Updater inaktiv und
 * greift dem Eigenvertrieb (Manifest auf hafenstudios.com) nicht ins Steuer.
 *
 * anonymous_mode: kein Opt-in-Dialog, keine Nutzungsdaten. Ohne Lizenzeingabe
 * verlaesst kein Byte die Site.
 *
 * Solange LEADLOTSE_FS_ID leer ist (Produkt im Freemius-Dashboard noch nicht
 * angelegt), wird das SDK gar nicht geladen und das Plugin verhaelt sich exakt
 * wie bisher.
 */
define( 'LEADLOTSE_FS_ID', '35575' );
define( 'LEADLOTSE_FS_PUBLIC_KEY', 'pk_5ec4ab3b37e8df3f42a25ce39dfe0' );

if ( ! function_exists( 'leadlotse_fs' ) ) {
	/**
	 * Freemius-Instanz oder null, solange kein Produkt verdrahtet ist.
	 *
	 * @return \Freemius|null
	 */
	function leadlotse_fs() {
		global $leadlotse_fs;

		if ( ! isset( $leadlotse_fs ) ) {
			$leadlotse_sdk = LEADLOTSE_DIR . 'vendor/freemius/start.php';

			if ( '' === LEADLOTSE_FS_ID || ! is_readable( $leadlotse_sdk ) ) {
				return null;
			}

			require_once $leadlotse_sdk;

			$leadlotse_fs = fs_dynamic_init(
				array(
					'id'                  => LEADLOTSE_FS_ID,
					'slug'                => 'leadlotse',
					'type'                => 'plugin',
					'public_key'          => LEADLOTSE_FS_PUBLIC_KEY,
					'is_premium'          => false,
					'has_premium_version' => false,
					'has_addons'          => false,
					'has_paid_plans'      => true,
					'is_org_compliant'    => false,
					'anonymous_mode'      => true,
					'trial'               => array(
						'days'               => 14,
						'is_require_payment' => false,
					),
					'menu'                => array(
						'slug'    => 'leadlotse',
						'account' => true,
						'contact' => false,
						'support' => false,
					),
				)
			);

			do_action( 'leadlotse_fs_loaded' );
		}

		return $leadlotse_fs;
	}

	leadlotse_fs();
}

/**
 * Lizenz an die Pro-Weiche haengen (Core\Licensing\ProGate::enabled( 'leadlotse' )).
 */
add_filter(
	'hafenstudios/leadlotse_pro',
	static function ( $pro ) {
		$fs = function_exists( 'leadlotse_fs' ) ? leadlotse_fs() : null;

		return $fs ? ( $pro || $fs->is_paying_or_trial() ) : $pro;
	}
);
add_filter(
	'hafenstudios/leadlotse_upgrade_url',
	static function ( $url ) {
		$fs = function_exists( 'leadlotse_fs' ) ? leadlotse_fs() : null;

		return $fs ? $fs->get_upgrade_url() : $url;
	}
);

/**
 * Aktivierung: Tabellen, Capabilities, Default-Einstellungen.
 */
register_activation_hook(
	__FILE__,
	static function () {
		Installer::activate();
	}
);

/**
 * Deaktivierung: geplante Aufgaben aufraeumen (Daten bleiben erhalten).
 */
register_deactivation_hook(
	__FILE__,
	static function () {
		Installer::deactivate();
	}
);

/**
 * Plugin starten, sobald der Core geladen ist. Der Core bootet auf
 * plugins_loaded (Prioritaet -50), daher haengt Leadlotse sich auf
 * `hafenstudios/core_booted` bzw. plugins_loaded (Standardprioritaet).
 */
add_action(
	'plugins_loaded',
	static function () {
		if ( ! class_exists( \Hafenstudios\Core\Core::class ) ) {
			add_action(
				'admin_notices',
				static function () {
					echo '<div class="notice notice-error"><p>';
					esc_html_e( 'Leadlotse konnte die Hafenstudios-Core-Bibliothek nicht laden. Bitte installieren Sie das Plugin neu.', 'leadlotse' );
					echo '</p></div>';
				}
			);
			return;
		}
		Plugin::instance()->boot();
	},
	20
);
