<?php
/**
 * @package Hafenstudios\Core
 */

namespace Hafenstudios\Core\Licensing;

use Hafenstudios\Core\Events\EventBus;

defined( 'ABSPATH' ) || exit;

/**
 * Zentrale Pro-Leitplanke der Flotte. Muster und Semantik sind aus
 * Wellenbrecher\Support\ProGate (WB19) uebernommen, nur slug-basiert, damit
 * Leadlotse und Kurato dieselbe Weiche nutzen koennen.
 *
 * Aktiv, wenn die Konstante {SLUG}_PRO gesetzt und wahr ist ODER der Filter
 * `hafenstudios/{slug}_pro` true liefert. Default AUS. Der Lizenz-Layer
 * (Freemius-Bootstrap in der Haupt-Plugin-Datei) haengt sich in den Filter ein;
 * hier gibt es bewusst keine Lizenz-Logik und kein zweites Pro-ZIP: die Flotte
 * liefert EIN Paket aus, die Lizenz schaltet zur Laufzeit frei.
 */
final class ProGate {

	/**
	 * Ist das Pro-Paket des Plugins aktiv?
	 *
	 * @param string $slug Plugin-Slug, z.B. 'leadlotse'.
	 * @return bool
	 */
	public static function enabled( string $slug ): bool {
		$constant = strtoupper( str_replace( '-', '_', $slug ) ) . '_PRO';
		$enabled  = defined( $constant ) && constant( $constant );

		/**
		 * Schaltet das Pro-Paket frei (Default = der Konstanten-Wert, sonst false).
		 *
		 * @param bool $enabled Bisheriger Zustand.
		 */
		return (bool) EventBus::filter( $slug . '_pro', $enabled );
	}

	/**
	 * Ziel fuer Kauf-Knoepfe. Ohne Lizenz-Layer die Preisseite, mit Freemius der
	 * kontobezogene Upgrade-Link.
	 *
	 * @param string $slug Plugin-Slug.
	 * @return string
	 */
	public static function upgrade_url( string $slug ): string {
		$url = (string) EventBus::filter( $slug . '_upgrade_url', 'https://hafenstudios.com/preise.html' );

		// Nur echte http(s)-Ziele; ein leerer oder kaputter Filterwert darf nie in ein href geraten.
		return 0 === strpos( $url, 'http' ) ? $url : 'https://hafenstudios.com/preise.html';
	}
}
