<?php

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

// =============================================================================
// 1. REGISTO DE ACÇÃO PARA OS PAINÉIS DE GESTÃO (META BOXES)
// =============================================================================
add_action('add_meta_boxes', 'imz_add_all_meta_boxes');


// =============================================================================
// 2. CRIAÇÃO DE TODOS OS PAINÉIS DE GESTÃO (META BOXES)
// =============================================================================

function imz_add_all_meta_boxes() {
    // Post Type: impulsionamento
    add_meta_box('imz_info', 'Detalhes do Impulsionamento', 'imz_render_info_box', 'impulsionamento', 'normal', 'high');
    add_meta_box('imz_extras', 'Controle Avançado', 'imz_render_extras_box', 'impulsionamento', 'side', 'low');
    
    // Post Type: post (Músicas)
    add_meta_box('imz_download_details_box', 'Gestor de Downloads', 'imz_render_download_details_box', 'post', 'normal', 'high');
    add_meta_box('imz_digital_stores_box', 'Links para Lojas Digitais', 'imz_render_digital_stores_box', 'post', 'normal', 'default');
    add_meta_box('imz_disable_boost_box', 'Opções de Impulsionamento', 'imz_render_disable_boost_box', 'post', 'side', 'default');
    add_meta_box('imz_monetization_management', 'Gestão de Monetização', 'imz_render_monetization_management_box', 'post', 'side', 'high');
    add_meta_box('imz_youtube_link_box', 'Link do Videoclipe (YouTube) & Player', 'imz_render_youtube_link_box', 'post', 'side', 'default');
    
    // Post Type: claim (Reivindicações)
    add_meta_box('imz_claim_details', 'Detalhes da Reivindicação', 'imz_render_claim_details_box', 'claim', 'normal', 'high');
    add_meta_box('imz_claim_actions', 'Ações de Moderação', 'imz_render_claim_actions_box', 'claim', 'side', 'high');
    
    // Post Type: imz_takedown (Proteção Digital)
    add_meta_box('imz_takedown_details', 'Detalhes do Pedido de Proteção', 'imz_render_takedown_details_box', 'imz_takedown', 'normal', 'high');
    add_meta_box('imz_takedown_log', 'Histórico de Ações (Visível para o Artista)', 'imz_render_takedown_log_box', 'imz_takedown', 'normal', 'default');
    add_meta_box('imz_takedown_status', 'Gerir Pedido', 'imz_render_takedown_status_box', 'imz_takedown', 'side', 'default');
    
    // Post Type: imz_subscription (Subscrições PRO)
    add_meta_box('imz_subscription_details', 'Detalhes da Subscrição', 'imz_render_subscription_details_box', 'imz_subscription', 'normal', 'high');
    add_meta_box('imz_subscription_status', 'Gerir Subscrição', 'imz_render_subscription_status_box', 'imz_subscription', 'side', 'default');
}


// =============================================================================
// 3. FUNÇÕES QUE EXIBEM O CONTEÚDO DOS PAINÉIS (RENDER FUNCTIONS)
// =============================================================================

function imz_render_disable_boost_box($post) {
    wp_nonce_field('imz_save_disable_boost', 'imz_disable_boost_nonce');
    $is_not_music = get_post_meta($post->ID, '_imz_nao_e_musica', true);
    echo '<p><label><input type="checkbox" name="imz_nao_e_musica" value="1"' . checked($is_not_music, '1', false) . '> Não é uma música (desativar impulsionamento)</label></p>';
}

function imz_render_info_box($post) {
    wp_nonce_field('imz_save_impulsionamento_meta', 'imz_impulsionamento_nonce');
    $meta = function(string $key) use ($post): string {
        return (string) get_post_meta($post->ID, $key, true);
    };

    $post_id_original = (int) $meta('post_id_original');
    $link_musica  = $post_id_original ? get_permalink($post_id_original) : '#';
    $titulo_musica = $post_id_original ? get_the_title($post_id_original) : 'N/A';
    $status_atual  = $meta('status') ?: 'pendente';

    $allowed_statuses = ['pendente', 'aprovado', 'recusado'];
    ?>
    <div class="imz-info-grid">
        <?php if ($meta('nome')): ?>
        <div class="imz-info-field">
            <span class="imz-info-field-label">Nome</span>
            <span class="imz-info-field-value"><?php echo esc_html($meta('nome')); ?></span>
        </div>
        <?php endif; ?>

        <?php if ($meta('telefone_pagador')): ?>
        <div class="imz-info-field">
            <span class="imz-info-field-label">Telefone do Pagador</span>
            <span class="imz-info-field-value"><?php echo esc_html($meta('telefone_pagador')); ?></span>
        </div>
        <?php endif; ?>

        <div class="imz-info-field">
            <span class="imz-info-field-label">Valor</span>
            <span class="imz-info-field-value"><?php echo esc_html($meta('valor')); ?> MT</span>
        </div>

        <div class="imz-info-field">
            <span class="imz-info-field-label">Método de Pagamento</span>
            <span class="imz-info-field-value"><?php echo esc_html($meta('metodo_pagamento')); ?></span>
        </div>

        <?php
        $duracao = get_post_meta($post->ID, '_boost_duracao_dias', true);
        $data_inicio = get_post_meta($post->ID, '_boost_data_inicio', true);
        $data_fim = get_post_meta($post->ID, '_boost_data_fim', true);
        if ($duracao) : ?>
        <div class="imz-info-field">
            <span class="imz-info-field-label">Duração</span>
            <span class="imz-info-field-value"><?php echo esc_html($duracao); ?> dia(s)</span>
        </div>
        <?php endif; ?>
        <?php if ($data_inicio) : ?>
        <div class="imz-info-field">
            <span class="imz-info-field-label">Início do Destaque</span>
            <span class="imz-info-field-value"><?php echo date('d/m/Y H:i', strtotime($data_inicio)); ?></span>
        </div>
        <?php endif; ?>
        <?php if ($data_fim) :
            $expirado = strtotime($data_fim) < current_time('timestamp');
        ?>
        <div class="imz-info-field">
            <span class="imz-info-field-label">Fim do Destaque</span>
            <span class="imz-info-field-value" style="<?php echo $expirado ? 'color:#ef4444;' : 'color:#10b981;'; ?>">
                <?php echo date('d/m/Y H:i', strtotime($data_fim)); ?>
                <?php echo $expirado ? ' (Expirado)' : ' (Ativo)'; ?>
            </span>
        </div>
        <?php endif; ?>

        <?php if ($post_id_original): ?>
        <div class="imz-info-field" style="grid-column: 1/-1;">
            <span class="imz-info-field-label">Música Associada</span>
            <span class="imz-info-field-value">
                <a href="<?php echo esc_url($link_musica); ?>" target="_blank" rel="noopener">
                    <?php echo esc_html($titulo_musica); ?> &nearr;
                </a>
            </span>
        </div>
        <?php endif; ?>

        <?php if ($meta('comprovativo_url')): ?>
        <div class="imz-info-field" style="grid-column: 1/-1;">
            <span class="imz-info-field-label">Comprovativo de Pagamento</span>
            <a href="<?php echo esc_url($meta('comprovativo_url')); ?>" target="_blank" rel="noopener">
                <img src="<?php echo esc_url($meta('comprovativo_url')); ?>"
                     class="imz-comprovativo-img"
                     alt="Comprovativo de pagamento">
            </a>
        </div>
        <?php endif; ?>
    </div>

    <div class="imz-status-select-wrap">
        <label for="imz_status_select">Status do Pedido</label>
        <select name="imz_status" id="imz_status_select">
            <?php foreach ($allowed_statuses as $s): ?>
            <option value="<?php echo esc_attr($s); ?>" <?php selected($status_atual, $s); ?>>
                <?php echo esc_html(ucfirst($s)); ?>
            </option>
            <?php endforeach; ?>
        </select>
    </div>
    <?php
}

function imz_render_extras_box($post) {
    wp_nonce_field('imz_save_impulsionamento_meta', 'imz_impulsionamento_nonce_extra');
    echo "<p><label>Valor total simulado (MT):<br><input type='number' name='valor_total_simulado' value='" . get_post_meta($post->ID, 'valor_total_simulado', true) . "' style='width:100%;'></label></p>";
    echo "<p><label>Cor personalizada do selo (hex ou nome):<br><input type='text' name='cor_forcada' value='" . get_post_meta($post->ID, 'cor_forcada', true) . "' style='width:100%;'></label></p>";
}

function imz_render_monetization_management_box($post) {
    wp_nonce_field('imz_demonetize_action', 'imz_demonetize_nonce');
    
    // --- NOVO: Checkbox de Proteção 1MZ For Artists ---
    $is_protected = get_post_meta($post->ID, '_imz_protected_for_artists', true);
    ?>
    <div class="imz-protection-box">
        <span class="imz-protection-box-icon">🛡️</span>
        <div class="imz-protection-box-body">
            <strong>Proteção 1MZ For Artists</strong>
            <label for="imz_protected_for_artists">
                <input type="checkbox" name="imz_protected_for_artists" id="imz_protected_for_artists" value="yes" <?php checked($is_protected, 'yes'); ?>>
                Ativar gestão pela 1MusicMoz
            </label>
            <p class="description">Adiciona o selo "1MZ For Artists" e marca a música para gestão oficial.</p>
        </div>
    </div>
    <hr>
    <?php
    // --------------------------------------------------

    if (get_post_meta($post->ID, '_is_claimed', true) !== 'yes') {
        echo '<p>Esta música não está monetizada por nenhum artista individual (Reivindicação).</p>';
        return;
    }
    
    $artist_id = get_post_field('post_author', $post->ID);
    $artist = get_user_by('id', $artist_id);
    $document_id = get_post_meta($post->ID, '_proof_of_ownership_id', true);

    echo '<p><strong>Artista Atual (Dono):</strong> ' . esc_html($artist->display_name ?? 'N/A') . '</p>';

    if ($document_id && $document_url = wp_get_attachment_url($document_id)) {
        echo '<p><a href="' . esc_url($document_url) . '" target="_blank" class="button">Ver Prova de Autoria</a></p>';
    } else {
        echo '<p><em>Nenhuma prova de autoria associada.</em></p>';
    }

    echo '<hr>';
    ?>
    <div class="imz-danger-box">
        <strong>⚠️ Ação Irreversível</strong>
        <label for="imz_demonetize_action_checkbox">
            <input type="checkbox" name="imz_demonetize_action" id="imz_demonetize_action_checkbox" value="1">
            Sim, desmonetizar e reverter esta música para o administrador.
        </label>
        <p class="description" style="margin-top:8px;color:#991b1b;">Marque a caixa e clique em "Atualizar" para confirmar.</p>
    </div>
    <?php
}

function imz_render_claim_details_box($post) {
    $music_id = get_post_meta($post->ID, 'music_id', true);
    $artist = get_user_by('id', get_post_meta($post->ID, 'artist_id', true));
    $document_id = get_post_meta($post->ID, 'claim_document_id', true);
    $document_url = wp_get_attachment_url($document_id);
    echo '<p><strong>Música:</strong> <a href="' . get_permalink($music_id) . '">' . get_the_title($music_id) . '</a></p>';
    if ($artist) echo '<p><strong>Artista:</strong> ' . esc_html($artist->display_name) . '</p>';
    if ($document_url) {
        echo '<p><strong>Documento Submetido:</strong> <a href="' . esc_url($document_url) . '" target="_blank" class="button">Ver Documento</a></p>';
    } else {
        echo '<p><strong>Documento Submetido:</strong> Nenhum.</p>';
    }
}

function imz_render_claim_actions_box($post) {
    if ($post->post_status !== 'pending') {
        echo '<p>Este pedido já foi processado.</p>';
        echo '<p><strong>Status Final: ' . esc_html(ucfirst($post->post_status)) . '</strong></p>';
        return;
    }
    wp_nonce_field('imz_claim_moderation_action', 'imz_claim_moderation_nonce');
    ?>
    <p>Use os botões abaixo para processar este pedido.</p>
    <div id="major-publishing-actions">
        <div id="publishing-action">
            <button type="submit" name="imz_claim_action" value="approve" class="button button-primary button-large">Aprovar Reivindicação</button>
        </div>
        <div class="clear"></div>
    </div>
    <div id="misc-publishing-actions">
        <div class="misc-pub-section misc-pub-post-status">
            <button type="submit" name="imz_claim_action" value="reject_fraud" class="button-link-delete" onclick="return confirm('Atenção!\n\nIsto irá adicionar um aviso (strike) ao artista e marcar o pedido como Rejeitado.\n\nTem a certeza?');">Marcar como Fraude e Punir</button>
        </div>
    </div>
    <?php
}

function imz_render_youtube_link_box($post) {
    wp_nonce_field('imz_save_youtube_link', 'imz_youtube_link_nonce');
    $youtube_url = get_post_meta($post->ID, '_imz_youtube_url', true);
    
    // --- NOVOS CAMPOS: Artista e Título Personalizados ---
    $custom_title = get_post_meta($post->ID, '_imz_custom_audio_title', true);
    $custom_artist = get_post_meta($post->ID, '_imz_custom_audio_artist', true);
    // --------------------
    
    $enable_player = get_post_meta($post->ID, '_imz_enable_audio_player', true);
    $audio_url = get_post_meta($post->ID, '_imz_audio_player_url', true);

    echo '<p><label for="imz_youtube_url"><strong>Link do Vídeo Oficial (para visualizações):</strong></label></p>';
    echo '<input type="url" name="imz_youtube_url" id="imz_youtube_url" value="' . esc_url($youtube_url) . '" style="width: 100%;" placeholder="https://www.youtube.com/watch?v=...">';

    // --- ÁREA DE PERSONALIZAÇÃO ---
    echo '<div style="margin-top: 15px; background: #f0f0f1; padding: 10px; border-radius: 4px;">';
    
    echo '<p><label for="imz_custom_audio_artist"><strong>Nome do Artista (Personalizado):</strong></label></p>';
    echo '<input type="text" name="imz_custom_audio_artist" id="imz_custom_audio_artist" value="' . esc_attr($custom_artist) . '" style="width: 100%;" placeholder="Ex: C4 Pedro (Deixe vazio para usar o autor do post)">';
    
    echo '<p style="margin-top: 10px;"><label for="imz_custom_audio_title"><strong>Nome da Música (Personalizado):</strong></label></p>';
    echo '<input type="text" name="imz_custom_audio_title" id="imz_custom_audio_title" value="' . esc_attr($custom_title) . '" style="width: 100%;" placeholder="Ex: Nossas Coisas (Deixe vazio para usar o título do YouTube)">';
    
    echo '<p class="description">Estes campos substituem os dados automáticos no player.</p>';
    echo '</div>';
    // -------------------------------------------

    echo '<hr style="margin: 15px 0;">';

    echo '<p><label>';
    echo '<input type="checkbox" id="imz_enable_audio_player_checkbox" name="imz_enable_audio_player" value="yes"' . checked($enable_player, 'yes', false) . '>';
    echo '<strong> Adicionar Player de Áudio neste post</strong>';
    echo '</label></p>';

    echo '<div id="imz-audio-url-wrapper" style="display: ' . ($enable_player === 'yes' ? 'block' : 'none') . ';">';
    echo '<p><label for="imz_audio_player_url"><strong>Link do YouTube para o Áudio (Opcional):</strong></label></p>';
    echo '<input type="url" name="imz_audio_player_url" id="imz_audio_player_url" value="' . esc_url($audio_url) . '" style="width: 100%;" placeholder="https://www.youtube.com/watch?v=...">';
    echo '<p class="description">Se deixar em branco, o player usará o link do vídeo oficial. Use este campo se o áudio estiver num vídeo diferente (ex: Art Track).</p>';
    echo '</div>';
    ?>
    <script>
        jQuery(document).ready(function($) {
            function toggleAudioUrlField() {
                $('#imz-audio-url-wrapper').toggle($('#imz_enable_audio_player_checkbox').is(':checked'));
            }
            toggleAudioUrlField();
            $('#imz_enable_audio_player_checkbox').on('change', toggleAudioUrlField);
        });
    </script>
    <?php
}

function imz_render_download_details_box($post) {
    wp_nonce_field('imz_save_download_details', 'imz_download_details_nonce');
    wp_enqueue_script('jquery-ui-datepicker');

    $enable_download = get_post_meta($post->ID, '_imz_enable_download', true);
    $release_date = get_post_meta($post->ID, '_imz_release_date', true);
    $quality_saved = get_post_meta($post->ID, '_imz_quality', true);
    $file_source_type = get_post_meta($post->ID, '_imz_file_source_type', true) ?: 'upload';
    $file_id = get_post_meta($post->ID, '_imz_download_file_id', true);
    $file_url = get_post_meta($post->ID, '_imz_download_file_url', true);
    $download_count = get_post_meta($post->ID, '_imz_download_count', true);
    $predefined_qualities = get_option('imz_predefined_qualities', ['320kbps AAC M4A', '256kbps MP3', '128kbps MP3']);

    // --- CAMPOS PARA DOWNLOAD PAGO ---
    $enable_paid_download = get_post_meta($post->ID, '_imz_enable_paid_download', true);
    $paid_download_price = get_post_meta($post->ID, '_imz_paid_download_price', true);

    // --- VERIFICAR SE O UTILIZADOR É PRO OU ADMIN ---
    $artist_id = $post->post_author;
    $is_pro_or_admin = (function_exists('imz_is_artist_pro') && imz_is_artist_pro($artist_id)) || current_user_can('manage_options');
    
    ?>
    <!-- PRE-SAVE / PRÉ-LANÇAMENTO -->
    <?php
    $presave_enabled = get_post_meta($post->ID, '_imz_presave_enabled', true);
    $presave_date = get_post_meta($post->ID, '_imz_presave_date', true);
    ?>
    <div style="background:#0c1829;border:1px solid #1e40af;border-radius:8px;padding:16px;margin-bottom:16px;">
        <p style="margin-top:0;"><label><input type="checkbox" name="_imz_presave_enabled" value="yes" <?php checked($presave_enabled, 'yes'); ?> id="imz_presave_checkbox"> <strong style="color:#3b82f6;">&#128197; Ativar Modo Pre-Save (Pré-Lançamento)</strong></label></p>
        <p class="description" style="color:#60a5fa;">Ao ativar, a página da música mostrará um cronómetro de contagem regressiva e um formulário para o público ser notificado (por Email ou WhatsApp) quando a música for lançada. O conteúdo (player, download, letras) ficará oculto até à data definida.</p>
        <div id="imz_presave_fields" style="display:<?php echo $presave_enabled === 'yes' ? 'block' : 'none'; ?>;margin-top:12px;">
            <table class="form-table" style="margin:0;">
                <tr>
                    <th><label for="imz_presave_datepicker">Data de Lançamento</label></th>
                    <td>
                        <input type="text" id="imz_presave_datepicker" name="_imz_presave_date" value="<?php echo esc_attr($presave_date); ?>" class="regular-text" placeholder="Clique para escolher a data" autocomplete="off">
                        <p class="description">Enquanto esta data não chegar, o modo Pre-Save estará activo. Após a data, o conteúdo será mostrado normalmente.</p>
                    </td>
                </tr>
            </table>
        </div>
    </div>

    <p><label><input type="checkbox" name="_imz_enable_download" value="yes" <?php checked($enable_download, 'yes'); ?> id="imz_enable_download_checkbox"> <strong>Ativar caixa de download gratuito para esta música</strong></label></p>

    <hr style="margin: 15px 0;">
    <p><label><input type="checkbox" name="_imz_enable_paid_download" value="yes" <?php checked($enable_paid_download === 'yes' || $enable_paid_download === 'expired_pro', true); ?> id="imz_enable_paid_download_checkbox" <?php disabled(!$is_pro_or_admin && $enable_paid_download !== 'expired_pro'); ?>> <strong>Ativar Download Pago (Modo de Venda)</strong></label></p>

    <?php if (!$is_pro_or_admin && $enable_paid_download !== 'expired_pro'): ?>
        <p class="description" style="color: #ef4444;"><strong>Apenas Artistas PRO podem ativar o Download Pago.</strong></p>
    <?php else: ?>
        <p class="description">Isto irá <strong>desativar</strong> o download gratuito e mostrará as opções de compra.</p>
    <?php endif; ?>

    <div id="imz_paid_download_details_wrapper" style="display: <?php echo ($enable_paid_download === 'yes' || $enable_paid_download === 'expired_pro') ? 'block' : 'none'; ?>;"> <table class="form-table">
            <tr>
                <th><label for="_imz_paid_download_price">Preço da Música (ex: 50)</label></th>
                <td><input type="number" id="_imz_paid_download_price" name="_imz_paid_download_price" value="<?php echo esc_attr($paid_download_price); ?>" class="regular-text" placeholder="Ex: 50" <?php disabled(!$is_pro_or_admin && $enable_paid_download !== 'expired_pro'); ?>> MT</td>
            </tr>
            <?php if ($enable_paid_download === 'expired_pro'): ?>
                 <tr><th></th><td><p class="description" style="color: #f59e0b;"><strong>Atenção:</strong> O Download Pago está inativo porque a subscrição PRO do artista expirou. Será reativado automaticamente se o artista renovar.</p></td></tr>
            <?php endif; ?>
        </table>
    </div>
    
    <div id="imz_download_details_wrapper" style="display: <?php echo $enable_download === 'yes' ? 'block' : 'none'; ?>;">
        <hr><h3 style="padding-left: 0;">Detalhes da Música (Download Gratuito)</h3>
        <table class="form-table">
            <tr><th><label for="imz_release_datepicker">Data de Lançamento</label></th><td><input type="text" id="imz_release_datepicker" name="_imz_release_date" value="<?php echo esc_attr($release_date); ?>" class="regular-text" placeholder="Clique para escolher a data" autocomplete="off"></td></tr>
            <tr><th><label for="_imz_quality">Qualidade</label></th><td><select id="_imz_quality" name="_imz_quality"><option value="">-- Selecione a qualidade --</option><?php foreach ($predefined_qualities as $quality): ?><option value="<?php echo esc_attr($quality); ?>" <?php selected($quality_saved, $quality); ?>><?php echo esc_html($quality); ?></option><?php endforeach; ?></select></td></tr>
        </table>
        <hr><h3 style="padding-left: 0;">Ficheiro para Download</h3>
        <table class="form-table">
            <tr><th><label>Origem do Ficheiro</label></th><td><label><input type="radio" name="_imz_file_source_type" value="upload" <?php checked($file_source_type, 'upload'); ?>> Carregar Ficheiro</label><label style="margin-left: 15px;"><input type="radio" name="_imz_file_source_type" value="url" <?php checked($file_source_type, 'url'); ?>> Inserir URL</label></td></tr>
            <tr class="imz_download_source_field" id="imz_source_upload" style="display: <?php echo $file_source_type === 'upload' ? 'table-row' : 'none'; ?>;"><th><label>Ficheiro de Áudio</label></th><td><?php wp_enqueue_media(); ?><input type="hidden" id="_imz_download_file_id" name="_imz_download_file_id" value="<?php echo esc_attr($file_id); ?>"><button type="button" id="upload_audio_button" class="button">Carregar Ficheiro</button><p id="file_name_display" style="margin-top: 5px; font-style: italic;"><?php if ($file_id) echo basename(get_attached_file($file_id)); ?></p></td></tr>
            <tr class="imz_download_source_field" id="imz_source_url" style="display: <?php echo $file_source_type === 'url' ? 'table-row' : 'none'; ?>;"><th><label for="_imz_download_file_url">URL do Ficheiro</label></th><td><input type="url" id="_imz_download_file_url" name="_imz_download_file_url" value="<?php echo esc_url($file_url); ?>" class="large-text" placeholder="https://..."></td></tr>
        </table>
        <hr><h3 style="padding-left: 0;">Estatísticas</h3>
         <table class="form-table">
            <tr><th><label>Contador Total</label></th><td><strong><?php echo (int)$download_count; ?></strong> downloads.</td></tr>
        </table>
    </div>

    <script>
    jQuery(document).ready(function($){
        $('#imz_release_datepicker').datepicker({ dateFormat: 'yy-mm-dd', changeMonth: true, changeYear: true, yearRange: "-100:+5" });
        $('#imz_presave_datepicker').datepicker({ dateFormat: 'yy-mm-dd', changeMonth: true, changeYear: true, yearRange: "0:+5", minDate: 0 });
        $('#imz_presave_checkbox').on('change', function(){ $('#imz_presave_fields').toggle(this.checked); });

        function toggleDownloadBoxes() {
             var freeChecked = $('#imz_enable_download_checkbox').is(':checked');
             var paidChecked = $('#imz_enable_paid_download_checkbox').is(':checked');

             $('#imz_download_details_wrapper').toggle(freeChecked && !paidChecked);
             $('#imz_paid_download_details_wrapper').toggle(paidChecked);
        }
        toggleDownloadBoxes();

        $('#imz_enable_download_checkbox').on('change', function(){
            if (this.checked && !$('#imz_enable_paid_download_checkbox').prop('disabled')) {
                $('#imz_enable_paid_download_checkbox').prop('checked', false);
            }
             toggleDownloadBoxes();
        });

        $('#imz_enable_paid_download_checkbox').on('change', function(){
            if ($(this).is(':disabled')) { this.checked = false; return; }
            if (this.checked) { $('#imz_enable_download_checkbox').prop('checked', false); }
             toggleDownloadBoxes();
        });

        $('input[name="_imz_file_source_type"]').on('change', function(){ $('.imz_download_source_field').hide(); $('#imz_source_' + $(this).val()).show(); });
        
        $('#upload_audio_button').click(function(e) { 
            e.preventDefault(); 
            var mediaUploader = wp.media({ title: 'Selecione o ficheiro de áudio', button: { text: 'Usar este ficheiro' }, multiple: false }); 
            mediaUploader.on('select', function() { 
                var attachment = mediaUploader.state().get('selection').first().toJSON(); 
                $('#_imz_download_file_id').val(attachment.id); 
                $('#file_name_display').text(attachment.filename); 
            }); 
            mediaUploader.open(); 
        });
    });
    </script>
    <?php
}

function imz_render_digital_stores_box($post) {
    wp_nonce_field('imz_save_digital_stores', 'imz_digital_stores_nonce');
    $stores_data = get_post_meta($post->ID, '_imz_digital_stores', true);
    $predefined_stores = get_option('imz_predefined_stores', []);
    ?>
    <div id="imz_stores_wrapper"><p class="description">Adicione links para esta música nas lojas digitais. As lojas disponíveis são geridas no menu <a href="<?php echo esc_url(admin_url('admin.php?page=rmbz-settings&tab=artists&artists_section=lojas')); ?>" target="_blank">Configurações 1MZ For Artists &gt; Música no site &gt; Lojas digitais</a>.</p><div id="imz_stores_container"><?php if (!empty($stores_data) && is_array($stores_data)): foreach ($stores_data as $index => $store): ?><div class="imz-store-row"><select class="imz-store-select" name="_imz_digital_stores[<?php echo $index; ?>][store_key]"><option value="">-- Selecionar Loja --</option><?php foreach ($predefined_stores as $p_store): ?><option value="<?php echo esc_attr($p_store['key']); ?>" <?php selected($p_store['key'], $store['store_key'] ?? ''); ?>><?php echo esc_html($p_store['name']); ?></option><?php endforeach; ?></select><input type="url" name="_imz_digital_stores[<?php echo $index; ?>][url]" value="<?php echo esc_url($store['url'] ?? ''); ?>" placeholder="URL da Música na Loja"><input type="text" name="_imz_digital_stores[<?php echo $index; ?>][price]" value="<?php echo esc_attr($store['price'] ?? ''); ?>" placeholder="Preço (ex: Grátis, $1.29)"><button type="button" class="button button-link-delete remove-store-row">Remover</button></div><?php endforeach; endif; ?></div><button type="button" id="add_store_row" class="button" style="margin-top: 10px;">Adicionar Loja</button></div>
    <script>jQuery(document).ready(function($) {var container = $('#imz_stores_container');var predefinedStores = <?php echo json_encode($predefined_stores); ?>;$('#add_store_row').on('click', function() {var index = container.find('.imz-store-row').length;var optionsHtml = '<option value="">-- Selecionar Loja --</option>';$.each(predefinedStores, function(i, store) { optionsHtml += `<option value="${store.key}">${store.name}</option>`; });var newRow = `<div class="imz-store-row"><select class="imz-store-select" name="_imz_digital_stores[${index}][store_key]">${optionsHtml}</select><input type="url" name="_imz_digital_stores[${index}][url]" placeholder="URL da Música na Loja"><input type="text" name="_imz_digital_stores[${index}][price]" placeholder="Preço (ex: Grátis, $1.29)"><button type="button" class="button button-link-delete remove-store-row">Remover</button></div>`;container.append(newRow);});container.on('click', '.remove-store-row', function() { $(this).closest('.imz-store-row').remove(); });});</script>
    <?php
}

function imz_render_takedown_details_box($post) {
    $artist_id = get_post_field('post_author', $post->ID);
    $artist = get_user_by('id', $artist_id);
    $music_id = get_post_meta($post->ID, '_music_id', true);
    $infringing_url = get_post_meta($post->ID, '_infringing_url', true);
    $comments = get_post_meta($post->ID, '_takedown_comments', true);
    $music_title = get_the_title($music_id);
    $current_user = wp_get_current_user();
    $site_name = get_bloginfo('name');

    echo '<table class="form-table">';
    if ($artist) { echo '<tr><th><label>Artista</label></th><td><a href="' . get_edit_user_link($artist_id) . '" target="_blank">' . esc_html($artist->display_name) . '</a></td></tr>'; }
    if ($music_id) { echo '<tr><th><label>Música Original</label></th><td><a href="' . get_edit_post_link($music_id) . '" target="_blank">' . $music_title . '</a></td></tr>'; }
    if ($infringing_url) { echo '<tr><th><label>Link a Remover</label></th><td><a href="' . esc_url($infringing_url) . '" target="_blank" rel="noopener noreferrer">' . esc_html($infringing_url) . '</a></td></tr>'; }
    if (!empty($comments)) { echo '<tr><th><label>Comentário do Artista</label></th><td>' . wp_kses_post(nl2br($comments)) . '</td></tr>'; }
    $verification_code_admin = get_post_meta($post->ID, '_verification_code', true);
    if ($verification_code_admin) {
        echo '<tr><th><label>Código de Verificação</label></th><td><code>' . esc_html($verification_code_admin) . '</code></td></tr>';
    }
    echo '</table>';

    if ($artist && $music_id && $infringing_url) {
        $takedown_notice = "Assunto: Notificação de Remoção por Violação de Direitos Autorais (DMCA Takedown Notice)\n\n";
        $takedown_notice .= "Prezados Senhores,\n\n";
        $takedown_notice .= "Esta é uma notificação oficial de acordo com a Digital Millennium Copyright Act (DMCA). Escrevo em nome de [{$artist->display_name}], que representamos através da nossa plataforma, {$site_name}.\n\n";
        $takedown_notice .= "1. **Identificação da Obra Protegida:**\n";
        $takedown_notice .= "A obra original protegida por direitos autorais é a faixa musical intitulada \"{$music_title}\" pelo artista [{$artist->display_name}].\n";
        $takedown_notice .= "Pode ser encontrada na nossa plataforma oficial no seguinte link:\n" . get_permalink($music_id) . "\n\n";
        $takedown_notice .= "2. **Localização do Material Infrator:**\n";
        $takedown_notice .= "O material que viola os direitos autorais do nosso artista encontra-se no seguinte URL:\n{$infringing_url}\n\n";
        $takedown_notice .= "3. **Declaração de Boa-fé:**\n";
        $takedown_notice .= "Acreditamos de boa-fé que o uso do material descrito acima, da maneira reclamada, não é autorizado pelo proprietário dos direitos autorais, seu agente ou pela lei.\n\n";
        $takedown_notice .= "4. **Declaração de Veracidade:**\n";
        $takedown_notice .= "Declaro, sob pena de perjúrio, que as informações nesta notificação são precisas e que somos o agente autorizado a agir em nome do proprietário de um direito exclusivo que está a ser violado.\n\n";
        $takedown_notice .= "Solicitamos a remoção imediata do material infrator.\n\n";
        $takedown_notice .= "Com os melhores cumprimentos,\n\n{$current_user->display_name}\nEquipa de Proteção Digital\n{$site_name}";
        ?>
        <hr>
        <h3>Documento de Remoção (DMCA)</h3>
        <p class="description">Copie o texto abaixo e envie para o contacto de abuso/copyright da plataforma onde a música foi publicada sem autorização.</p>
        <textarea id="imz-takedown-notice-text" rows="15" style="width:100%; font-family: monospace; white-space: pre-wrap;"><?php echo esc_textarea($takedown_notice); ?></textarea>
        <button type="button" id="imz-copy-takedown-notice" class="button button-primary" style="margin-top:10px;">Copiar Texto</button>
        <p id="imz-copy-feedback" style="display:none; color: green; font-weight: bold;">Texto copiado!</p>
        <script>
            document.getElementById('imz-copy-takedown-notice').addEventListener('click', function() {
                var textToCopy = document.getElementById('imz-takedown-notice-text');
                textToCopy.select();
                document.execCommand('copy');
                var feedback = document.getElementById('imz-copy-feedback');
                feedback.style.display = 'inline';
                setTimeout(function() { feedback.style.display = 'none'; }, 2000);
            });
        </script>
        <?php
    }
}

function imz_render_takedown_log_box($post) {
    wp_nonce_field('imz_save_takedown_meta', 'imz_takedown_nonce_log');
    $log_entries = get_post_meta($post->ID, '_takedown_log', true);

    echo '<div class="imz-takedown-log-wrapper">';
    if (empty($log_entries) || !is_array($log_entries)) {
        echo '<p>Nenhuma ação registada ainda.</p>';
    } else {
        echo '<ul class="imz-takedown-log-list">';
        foreach (array_reverse($log_entries) as $entry) {
            echo '<li>';
            echo '<span class="log-date">' . date_i18n('d/m/Y \à\s H:i', $entry['timestamp']) . '</span>';
            echo '<p class="log-note">' . esc_html($entry['note']) . '</p>';
            echo '</li>';
        }
        echo '</ul>';
    }
    echo '</div>';

    echo '<hr style="margin: 20px 0;">';
    echo '<h4>Adicionar Nova Nota ao Histórico</h4>';
    echo '<p class="description">Esta nota ficará visível para o artista. Deixe em branco se quiser apenas mudar o status.</p>';
    echo '<textarea name="imz_new_takedown_note" style="width:100%; height: 100px;" placeholder="Ex: A notificação foi enviada para a plataforma. Aguardamos resposta..."></textarea>';
}

function imz_render_takedown_status_box($post) {
    wp_nonce_field('imz_save_takedown_meta', 'imz_takedown_nonce');
    $status = get_post_meta($post->ID, '_takedown_status', true);
    ?>
    <p><label for="imz_takedown_status"><strong>Status do Pedido:</strong></label><br><select name="imz_takedown_status" id="imz_takedown_status" style="width: 100%;"><option value="pendente" <?php selected($status, 'pendente'); ?>>Pendente</option><option value="em-processo" <?php selected($status, 'em-processo'); ?>>Em Processo</option><option value="resolvido" <?php selected($status, 'resolvido'); ?>>Resolvido</option><option value="recusado" <?php selected($status, 'recusado'); ?>>Recusado</option></select></p>
    <p class="description">Atualize o status para informar o artista. O status "Resolvido" indica que o link foi removido com sucesso.</p>
    <?php
}

function imz_render_subscription_details_box($post) {
    $artist_id = get_post_meta($post->ID, 'artist_id', true);
    $artist = get_user_by('id', $artist_id);
    $metodo = get_post_meta($post->ID, 'metodo_pagamento', true);
    $comprovativo_url = get_post_meta($post->ID, 'comprovativo_url', true);

    echo '<table class="form-table">';
    if ($artist) { echo '<tr><th><label>Artista</label></th><td><a href="' . get_edit_user_link($artist_id) . '" target="_blank">' . esc_html($artist->display_name) . '</a></td></tr>'; }
    echo '<tr><th><label>Método de Pagamento</label></th><td>' . esc_html($metodo) . '</td></tr>';
    if ($comprovativo_url) { echo '<tr><th><label>Comprovativo</label></th><td><a href="' . esc_url($comprovativo_url) . '" target="_blank"><img src="' . esc_url($comprovativo_url) . '" style="max-width: 400px; height: auto; border: 1px solid #ddd;"></a></td></tr>'; }
    echo '</table>';
}

function imz_render_subscription_status_box($post) {
    wp_nonce_field('imz_save_subscription_meta', 'imz_subscription_nonce');
    $status = get_post_meta($post->ID, 'status', true);
    ?>
    <p>
        <label for="imz_subscription_status"><strong>Status do Pedido:</strong></label><br>
        <select name="imz_subscription_status" id="imz_subscription_status" style="width: 100%;">
            <option value="pendente" <?php selected($status, 'pendente'); ?>>Pendente</option>
            <option value="aprovado" <?php selected($status, 'aprovado'); ?>>Aprovado</option>
            <option value="rejeitado" <?php selected($status, 'rejeitado'); ?>>Rejeitado</option>
        </select>
    </p>
    <p class="description"><strong>Importante:</strong> Ao mudar o status para "Aprovado", o acesso PRO do artista será ativado por 1 mês.</p>
    <?php
}
?>