<?php
/**
 * Pro feature registry for maca Restu Pro.
 *
 * Core features match the free plugin and are always available.
 * Register every premium-only feature here and gate it with maca_menulist_pro_has_feature().
 *
 * @package Maca_Menu_List_Pro
 */

if (!defined('ABSPATH')) {
    exit;
}

/**
 * Premium-only features (require active subscription).
 *
 * @return array<string, array{label: string, description: string}>
 */
function maca_menulist_pro_get_features() {
    return apply_filters('maca_menulist_pro_features', array(
        'dishes' => array(
            'label'       => __('Onlinemeny', 'maca-restu-pro'),
            'description' => __('Registrera rätter med kategorier, beskrivningar, priser, bilder och allergener i stället för att ladda upp PDF/bild-menyer. EU-standardallergener är förinstallerade (svenska och engelska). Dra-och-släpp-sortering i admin.', 'maca-restu-pro'),
        ),
        'dish_extras' => array(
            'label'       => __('Onlinemeny-inställningar', 'maca-restu-pro'),
            'description' => __('Kategorifilter på meny och QR-sida, klickbara rättbilder (lightbox), valfri prisvaluta, menyfooter samt utskrivbar pappersmeny från admin.', 'maca-restu-pro'),
        ),
        'dish_ratings' => array(
            'label'       => __('Gästbetyg på rätter', 'maca-restu-pro'),
            'description' => __('Låt gäster betygsätta varje rätt med 1 till 5 stjärnor på webbplatsen och QR-sidan. Snittbetyg visas per rätt.', 'maca-restu-pro'),
        ),
        'campaign_menus' => array(
            'label'       => __('Kampanjmenyer', 'maca-restu-pro'),
            'description' => __('Skapa schemalagda kampanjmenyer (t.ex. Sommarmeny), välj vilka rätter som ingår och aktivera vid behov exklusivt kampanjläge så endast aktiva kampanjrätter visas på webb och QR.', 'maca-restu-pro'),
        ),
        'table_orders' => array(
            'label'       => __('Beställningar', 'maca-restu-pro'),
            'description' => __('Gäster bygger en beställning från menyn (antal, noteringar). Visa på enheten eller skicka till servitörs- och/eller kökssida med personal-PIN.', 'maca-restu-pro'),
        ),
        'table_bookings' => array(
            'label'       => __('Bordsbokning', 'maca-restu-pro'),
            'description' => __('Låt gäster boka bord via shortcode eller block. Hantera bord, öppettider, datumundantag och bekräfta bokningar med e-postaviseringar.', 'maca-restu-pro'),
        ),
        'order_status' => array(
            'label'       => __('Orderstatus & tillägg', 'maca-restu-pro'),
            'description' => __('Gäster ser live orderstatus (kök → klar → serverad). Beställ mer under besöket; personal markerar ordrar som betalda och avslutade.', 'maca-restu-pro'),
        ),
        'guest_payments' => array(
            'label'       => __('Gästbetalningar online', 'maca-restu-pro'),
            'description' => __('Stripe Checkout, betala vid bordet, dricks, valfri e-postbekräftelse med momsuppdelning och betalningshistorik. Installationsguide finns under Betalningar.', 'maca-restu-pro'),
        ),
        'qr_table' => array(
            'label'       => __('QR per bord', 'maca-restu-pro'),
            'description' => __('Skriv ut QR-koder med bordsnummer så gäster kommer till menyn med bordet förifyllt vid beställning (`?bord=`).', 'maca-restu-pro'),
        ),
        'menu_footer' => array(
            'label'       => __('Menyfooter', 'maca-restu-pro'),
            'description' => __('Allergiinformation, momsnummer och momssatser, restaurangkontakt (namn, adress, telefon, e-post, webb med ikoner) samt valfri åldersgräns för alkohol — visas längst ner på webb, QR och utskrift.', 'maca-restu-pro'),
        ),
        'print_menu' => array(
            'label'       => __('Utskrivbar meny', 'maca-restu-pro'),
            'description' => __('Skapa en utskriftsklar pappersmeny från registrerade rätter (Rätter → Skriv ut meny). Samma innehåll som den digitala menyn, inklusive footer.', 'maca-restu-pro'),
        ),
        'bilingual_menus' => array(
            'label'       => __('Språkväxlare & tvåspråkiga menyer', 'maca-restu-pro'),
            'description' => __('Flaggväxlare på webbmeny och QR-sida samt visning av både lokalt språk och engelska på menyer.', 'maca-restu-pro'),
        ),
        'guest_ui_strings' => array(
            'label'       => __('Gästgränssnittstexter', 'maca-restu-pro'),
            'description' => __('Anpassa gästtexter (knappar, bokning, orderstatus m.m.) per restaurang — lokalt språk och engelska.', 'maca-restu-pro'),
        ),
        'takeaway' => array(
            'label'       => __('Hämtmat', 'maca-restu-pro'),
            'description' => __('Takeaway-läge med egen meny-URL, beställning utan bordsnummer och hämtningsfält för gäster.', 'maca-restu-pro'),
        ),
        'public_overview' => array(
            'label'       => __('Publik översikt', 'maca-restu-pro'),
            'description' => __('Skrivskyddad live-översikt utanför wp-admin med separat chef-PIN.', 'maca-restu-pro'),
        ),
        'daily_report' => array(
            'label'       => __('Dagsrapport', 'maca-restu-pro'),
            'description' => __('HTML-sammanfattning per dag — omsättning, ordrar, betalningar, bokningar och topprätter — med automatiskt e-postutskick vid vald tid.', 'maca-restu-pro'),
        ),
        'info_hub' => array(
            'label'       => __('Informationsdisk', 'maca-restu-pro'),
            'description' => __('Publicera nyheter och evenemang på webbplatsen via block. Valfri delning till Facebook och Instagram samt kalenderprenumeration för gäster.', 'maca-restu-pro'),
        ),
        'site_chatbot' => array(
            'label'       => __('Chatt', 'maca-restu-pro'),
            'description' => __('AI-assistent för gäster med egen OpenAI-nyckel. Indexerar meny, öppettider, event, bokningsregler m.m. lokalt — skickar bara relevanta textbitar per fråga.', 'maca-restu-pro'),
        ),
    ));
}

/**
 * Features included in the Pro plugin without a subscription.
 *
 * @return array<string, array{label: string, description: string}>
 */
function maca_menulist_pro_get_included_features() {
    return apply_filters('maca_menulist_pro_included_features', array(
        'backup' => array(
            'label'       => __('Backup & återställning', 'maca-restu-pro'),
            'description' => __('Exportera all plugin-data och media som ZIP, dagliga automatiska backuper, lagringsinställningar och full återställning vid import.', 'maca-restu-pro'),
        ),
    ));
}

/**
 * Whether the site has an active Pro subscription / license.
 *
 * @return bool
 */
function maca_menulist_pro_is_active() {
    if (!class_exists('Maca_MenuList_License')) {
        return false;
    }

    return Maca_MenuList_License::instance()->is_active();
}

/**
 * Check access to a premium-only feature (not used for free-tier features).
 *
 * @param string $feature Feature key from maca_menulist_pro_get_features().
 * @return bool
 */
function maca_menulist_pro_has_feature($feature) {
    $features = maca_menulist_pro_get_features();
    if (!isset($features[$feature])) {
        return false;
    }

    return maca_menulist_pro_is_active();
}

/**
 * Admin notice HTML when a premium feature is locked.
 *
 * @param string $feature Feature key.
 * @return string
 */
function maca_menulist_pro_locked_notice($feature) {
    $features = maca_menulist_pro_get_features();
    $label = isset($features[$feature]['label']) ? $features[$feature]['label'] : __('Pro', 'maca-restu-pro');

    $subscribe_url = Maca_MenuList_License::instance()->get_subscribe_url();
    $settings_url  = admin_url('admin.php?page=maca-restu-subscription');

    ob_start();
    ?>
    <div class="notice notice-warning inline maca-pro-locked-notice">
        <p>
            <?php
            printf(
                /* translators: %s: feature name */
                esc_html__('%s requires an active Pro subscription.', 'maca-restu-pro'),
                esc_html($label)
            );
            ?>
            <a href="<?php echo esc_url($settings_url); ?>"><?php esc_html_e('Manage subscription', 'maca-restu-pro'); ?></a>
            <?php if ($subscribe_url !== '') : ?>
                | <a href="<?php echo esc_url($subscribe_url); ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Subscribe with Stripe', 'maca-restu-pro'); ?></a>
            <?php endif; ?>
        </p>
    </div>
    <?php
    return (string) ob_get_clean();
}
