<?php
if (!defined('ABSPATH')) exit;

// Ação de registo de menu e setting movida para settings.php

// Função para limpar e validar os dados dos níveis (mantida aqui por organização)
function imz_sanitize_hype_levels($input) {
    $new_input = [];
    if (isset($input) && is_array($input)) {
        foreach ($input as $level) {
            if (empty($level['amount']) || empty($level['title'])) continue;
            $new_input[] = [
                'amount' => absint($level['amount']),
                'title'  => sanitize_text_field($level['title'])
            ];
        }
    }
    usort($new_input, function($a, $b) { return $a['amount'] <=> $b['amount']; });
    return $new_input;
}

// Renderizar o CONTEÚDO da página de configurações dos níveis
function imz_render_niveis_page_content() {
    $default_levels = [
        ['amount' => 250, 'title' => '🔥 Promessa Local'],
        ['amount' => 500, 'title' => '🚀 Hit da Cidade'],
        ['amount' => 1000, 'title' => '🌟 Sucesso Provincial'],
        ['amount' => 3000, 'title' => '🏆 Fenómeno Nacional'],
    ];
    $levels = get_option('imz_hype_levels', $default_levels);
    ?>
    <div id="niveis_hype_content">
        <h2>Configurar Níveis de Hype</h2>
        <p>Defina os títulos que uma música recebe ao atingir determinados valores de impulsionamento (MT).</p>

        <table class="wp-list-table widefat striped" id="hype-levels-table">
            <thead>
                <tr>
                    <th style="width: 200px;">Valor Mínimo (MT)</th>
                    <th>Título do Nível (use emojis se quiser)</th>
                    <th style="width: 100px;">Ação</th>
                </tr>
            </thead>
            <tbody id="levels-container">
                <?php if (!empty($levels)) : foreach ($levels as $index => $level) : ?>
                    <tr class="level-row">
                        <td><input type="number" class="regular-text" name="imz_hype_levels[<?php echo $index; ?>][amount]" value="<?php echo esc_attr($level['amount']); ?>" required></td>
                        <td><input type="text" class="large-text" name="imz_hype_levels[<?php echo $index; ?>][title]" value="<?php echo esc_attr($level['title']); ?>" required></td>
                        <td><button type="button" class="button button-secondary remove-level">Remover</button></td>
                    </tr>
                <?php endforeach; else: ?>
                     <tr class="level-row-empty"><td colspan="3">Nenhum nível configurado. Adicione um abaixo.</td></tr>
                <?php endif; ?>
            </tbody>
        </table>

        <p style="margin-top: 20px;">
            <button type="button" class="button button-primary" id="add-level">Adicionar Novo Nível</button>
            <?php submit_button('Salvar Alterações', 'primary', 'submit', false, ['style' => 'margin-left: 10px;']); ?>
        </p>
    </div>

    <script>
    document.addEventListener('DOMContentLoaded', function() {
        const niveisContent = document.getElementById('niveis_hype_content');
        if (!niveisContent) return;

        const tableBody = niveisContent.querySelector('#levels-container');
        const addBtn = niveisContent.querySelector('#add-level');

        addBtn.addEventListener('click', function() {
            const index = tableBody.querySelectorAll('.level-row').length;
            const newRow = document.createElement('tr');
            newRow.classList.add('level-row');
            newRow.innerHTML = `
                <td><input type="number" class="regular-text" name="imz_hype_levels[${index}][amount]" required></td>
                <td><input type="text" class="large-text" name="imz_hype_levels[${index}][title]" required></td>
                <td><button type="button" class="button button-secondary remove-level">Remover</button></td>
            `;
            const emptyRow = tableBody.querySelector('.level-row-empty');
            if(emptyRow) emptyRow.remove();
            tableBody.appendChild(newRow);
        });

        tableBody.addEventListener('click', function(e) {
            if (e.target && e.target.classList.contains('remove-level')) {
                e.target.closest('.level-row').remove();
            }
        });
    });
    </script>
    <?php
}

// A função original foi dividida para ser chamada dentro do novo sistema de abas
function imz_render_niveis_page(){
    ?>
     <form method="post" action="options.php">
        <?php
            settings_fields('imz_niveis_group');
            imz_render_niveis_page_content();
        ?>
    </form>
    <?php
}

// Registar a configuração dos níveis (agora chamado a partir do settings.php principal)
add_action('admin_init', function() {
    register_setting('imz_niveis_group', 'imz_hype_levels', 'imz_sanitize_hype_levels');
});