<?php

use Dev4Press\v55\Core\Quick\KSES;
use Dev4Press\v55\Core\Quick\Sanitize;
use function Dev4Press\v55\Functions\panel;

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

$_scopes = array(
    'global' => array(
        'label' => __( 'Global', 'd4plib' ),
        'icon'  => 'd4p-ui-globe',
    ),
    'front'  => array(
        'label' => __( 'Frontend', 'd4plib' ),
        'icon'  => 'd4p-ui-desktop',
    ),
    'admin'  => array(
        'label' => __( 'Admin', 'd4plib' ),
        'icon'  => 'd4p-ui-dashboard',
    ),
);

foreach ( panel()->subpanels() as $subpanel => $obj ) {
    if ( $subpanel == 'index' ) {
        continue;
    }

    $modd = $obj['modd'] ?? 'regular';

    if ( panel()->a()->plugin()->license === false ) {
        $modd = 'regular';
    }

    $_checked = '';
    $_classes = array(
        'd4p-feature-box',
        'feature-' . $subpanel,
        'scope-' . $obj['scope'],
        '_is-feature',
    );

    if ( $obj['active'] ) {
        $_classes[] = '_is-active';
        $_checked   = ' checked="checked"';
    }

    if ( $obj['always_on'] ) {
        $_classes[] = '_is-always-on';
    }

    if ( $obj['hidden'] ) {
        $_classes[] = '_is-hidden';
    }

    if ( $obj['beta'] ) {
        $_classes[] = '_is-beta';
    }

    if ( $obj['settings'] ) {
        $_classes[] = '_has-settings';
    }

    if ( $obj['panel'] ) {
        $_classes[] = '_has-panel';
    }

    $url = panel()->a()->panel_url( 'features', $subpanel );

    if ( $modd === 'premium' ) {
        $url = panel()->a()->plugin()->fs()->get_upgrade_url();
    }

    ?>

    <div data-feature="<?php echo esc_attr( $subpanel ); ?>" class="<?php echo Sanitize::html_classes( $_classes ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>">
        <?php if ( $modd === 'premium' ) { ?>
            <div class="_banner">PRO</div>
        <?php } ?>
        <div class="_info">
            <div class="_icon"><i class="d4p-icon d4p-<?php echo esc_attr( $obj['icon'] ); ?>"></i></div>
            <h4 class="_title"><?php echo esc_html( $obj['title'] ); ?></h4>
            <p class="_description"><?php echo esc_html( $obj['info'] ); ?></p>
        </div>
        <div class="_ctrl">
            <div class="_activation">
                <?php if ( ! $obj['always_on'] && ! $obj['hidden'] ) { ?>
                    <input<?php echo $_checked;  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> data-feature="<?php echo esc_attr( $subpanel ); ?>" id="d4p-feature-toggle-<?php echo esc_attr( $subpanel ); ?>" type="checkbox"/>
                    <label for="d4p-feature-toggle-<?php echo esc_attr( $subpanel ); ?>"><span class="d4p-accessibility-show-for-sr"><?php esc_html_e( 'Active', 'd4plib' ); ?></span></label>
                    <?php
                }
                if ( $obj['hidden'] ) {
                    ?>
                    <span title="<?php esc_html_e( 'This feature can\'t be enabled because of the missing prerequisites.', 'd4plib' ); ?>"><i class="d4p-icon d4p-ui-toggle-slash"></i></span>
                <?php } ?>
            </div>
            <div class="_settings">
                <?php if ( $obj['hidden'] ) {
                    $_reason = $obj['hidden_reason'] ?? __( 'This feature can\'t be enabled at this time.', 'd4plib' );
                    ?>
                    <span title="<?php echo esc_html( $_reason ); ?>"><i class="d4p-icon d4p-ui-cog-slash"></i></span>
                    <?php
                } else {
                    if ( $obj['settings'] ) {
                        ?>
                        <a title="<?php

                        /* translators: Features settings panel button. %s: Feature name. */
                        echo KSES::standard( sprintf( __( 'Settings for \'%s\'', 'd4plib' ), $obj['title'] ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped

                        ?>" href="<?php echo esc_url( $url ); ?>"><i class="d4p-icon d4p-ui-cog"></i></a>
                    <?php } else { ?>
                        <span title="<?php esc_html_e( 'This feature has no settings', 'd4plib' ); ?>"><i class="d4p-icon d4p-ui-cog-slash"></i></span>
                        <?php
                    }
                }
                ?>
            </div>
            <?php

            if ( $obj['panel'] ) {
                ?>
                <div class="_scope">
                    <span title="<?php esc_html_e( 'This feature adds a new panel', 'd4plib' ); ?>"><i class="d4p-icon d4p-ui-folder"></i></span>
                </div>
                <?php
            }

            if ( $obj['beta'] ) {
                ?>
                <div class="_scope">
                    <span title="<?php esc_attr_e( 'This is a Beta feature, and it can be unstable!', 'd4plib' ); ?>"><i class="d4p-icon d4p-ui-flask"></i></span>
                </div>
                <?php
            }

            if ( panel()->a()->plugin()->f()->is_scope_enabled() ) {
                ?>
                <div class="_scope">
                    <span title="<?php echo esc_attr( $_scopes[ $obj['scope'] ]['label'] ); ?>"><i class="d4p-icon <?php echo esc_attr( $_scopes[ $obj['scope'] ]['icon'] ); ?>"></i></span>
                </div>
                <?php
            }

            if ( ! empty( $obj['kb']['url'] ) ) {
                ?>
                <div class="_scope">
                    <a target="_blank" rel="noopener" href="<?php echo esc_attr( $obj['kb']['url'] ); ?>" title="<?php esc_attr_e( 'Get more information in the Knowledge Base', 'd4plib' ); ?>"><i class="d4p-icon d4p-ui-book-spells"></i></a>
                </div>
                <?php
            }

            ?>
        </div>
    </div>

    <?php

}
