<?php
// includes/shortcodes.php

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Acesso direto bloqueado
}

/**
 * --------------------------------------------------------------------------
 * Carregamento Condicional do Módulo de Distribuição
 * --------------------------------------------------------------------------
 * Necessário para que o shortcode da distribuição funcione.
 */
$distro_path = RMBZ_PLUGIN_PATH . 'includes/distribution/distribution-main.php';
if ( file_exists( $distro_path ) ) {
    require_once $distro_path;
}

/**
 * Registo de Shortcodes
 */
function onemz_registrar_shortcodes() {
    // 1. Área do Artista (Upload de Músicas para Avaliação / Audições)
    add_shortcode( '1mz_artist_area', 'onemz_exibir_area_artista' );
    
    // 2. Dashboard de Distribuição Dedicado (Para a página /dashboard-digital)
    add_shortcode( '1mz_distribution_dashboard', 'rmbz_exibir_dashboard_distribuicao_page' );
}
add_action( 'init', 'onemz_registrar_shortcodes' );


/**
 * ==========================================================================
 * SHORTCODE 1: DASHBOARD DE DISTRIBUIÇÃO ([1mz_distribution_dashboard])
 * ==========================================================================
 * Exibe o painel WeOne/TuneCore na página dedicada.
 */
function rmbz_exibir_dashboard_distribuicao_page() {
    ob_start();
    
    // 1. Verificar Login
    if ( ! function_exists('rmbz_is_user_logged_in') || ! rmbz_is_user_logged_in() ) {
        // [DS 1.5.66 → 1.5.67] Gate de login com lista de features ao lado.
        // Em PC: 2 colunas (CTA à esq, benefícios à dir) — vende o produto a
        // visitantes que ainda não estão logados. Em mobile: stack vertical.
        // SVG cadeado em vez de emoji 🔒 — visual consistente em qualquer browser.
        $icon_lock = '<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">'
                   . '<rect x="4" y="11" width="16" height="10" rx="1.5" stroke="currentColor" stroke-width="1.8"/>'
                   . '<path d="M8 11V7.5a4 4 0 018 0V11" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/>'
                   . '<circle cx="12" cy="16" r="1.2" fill="currentColor"/>'
                   . '</svg>';

        // Ícones SVG dos features. Cada um simboliza visualmente o benefício —
        // padrão coerente com restante do plugin (currentColor herda).
        $icon_globe = '<svg viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">'
                    . '<circle cx="10" cy="10" r="7.5" stroke="currentColor" stroke-width="1.6"/>'
                    . '<path d="M2.5 10h15M10 2.5a12 12 0 010 15M10 2.5a12 12 0 000 15" stroke="currentColor" stroke-width="1.6"/>'
                    . '</svg>';
        $icon_money = '<svg viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">'
                    . '<rect x="2" y="5" width="16" height="11" rx="2" stroke="currentColor" stroke-width="1.6"/>'
                    . '<circle cx="10" cy="10.5" r="2.4" stroke="currentColor" stroke-width="1.6"/>'
                    . '<path d="M5 8.5v3M15 8.5v3" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/>'
                    . '</svg>';
        $icon_chart = '<svg viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">'
                    . '<path d="M3 17V8M9 17V3M15 17v-7" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/>'
                    . '</svg>';
        $icon_shield = '<svg viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">'
                     . '<path d="M10 2l7 3v5.5c0 4-3 7-7 7.5-4-.5-7-3.5-7-7.5V5l7-3z" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/>'
                     . '<path d="M7 10l2 2 4-4" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>'
                     . '</svg>';

        // Lista de features estruturada — fácil de editar/traduzir
        $features = [
            [
                'icon'  => $icon_globe,
                'title' => __( 'Distribuição em 150+ lojas', '1mz-for-artists' ),
                'desc'  => __( 'Spotify, Apple Music, TikTok, YouTube Music, Deezer e dezenas mais.', '1mz-for-artists' ),
            ],
            [
                'icon'  => $icon_money,
                'title' => __( 'Receba royalties em USD', '1mz-for-artists' ),
                'desc'  => __( 'Levante para M-Pesa, eMola ou Mkesh sempre que quiser.', '1mz-for-artists' ),
            ],
            [
                'icon'  => $icon_chart,
                'title' => __( 'Analytics em tempo real', '1mz-for-artists' ),
                'desc'  => __( 'Veja streams, ouvintes únicos e países onde a sua música toca.', '1mz-for-artists' ),
            ],
            [
                'icon'  => $icon_shield,
                'title' => __( '100% dos seus direitos', '1mz-for-artists' ),
                'desc'  => __( 'A sua música é sua. Sem contratos exclusivos, sem cláusulas escondidas.', '1mz-for-artists' ),
            ],
        ];

        $login_url = esc_url( home_url('/minha-conta/') );

        // Lojas/plataformas para o marquee (texto — sem precisar de imagens).
        $stores = [
            'Spotify', 'Apple Music', 'YouTube Music', 'TikTok', 'Instagram',
            'Deezer', 'Amazon Music', 'Boomplay', 'Tidal', 'Audiomack',
            'Anghami', 'Napster', 'iHeartRadio', 'Pandora', 'Shazam',
        ];

        // Passos do "Como funciona".
        $steps = [
            [ 'n' => '1', 'title' => __( 'Cria a tua conta', '1mz-for-artists' ),
              'desc' => __( 'Regista-te em minutos com o teu telemóvel. Sem burocracia.', '1mz-for-artists' ) ],
            [ 'n' => '2', 'title' => __( 'Envia a tua música', '1mz-for-artists' ),
              'desc' => __( 'Carrega o áudio e a capa. A nossa equipa revê e prepara tudo.', '1mz-for-artists' ) ],
            [ 'n' => '3', 'title' => __( 'Vai para as lojas', '1mz-for-artists' ),
              'desc' => __( 'Distribuímos para 150+ plataformas em todo o mundo.', '1mz-for-artists' ) ],
            [ 'n' => '4', 'title' => __( 'Recebe os teus royalties', '1mz-for-artists' ),
              'desc' => __( 'Acompanha os ganhos e levanta para M-Pesa, eMola ou Mkesh.', '1mz-for-artists' ) ],
        ];
        ?>
        <div class="rmbz-distro-lp">

            <!-- HERO -->
            <section class="rmbz-lp-hero">
                <div class="rmbz-lp-inner">
                    <span class="rmbz-lp-badge">🎵 1MZ For Artists · Distribuição Digital</span>
                    <h1 class="rmbz-lp-h1">
                        <?php esc_html_e( 'A tua música em todo o mundo.', '1mz-for-artists' ); ?>
                        <span class="rmbz-lp-h1-accent"><?php esc_html_e( 'Os ganhos são teus.', '1mz-for-artists' ); ?></span>
                    </h1>
                    <p class="rmbz-lp-sub">
                        <?php esc_html_e( 'Distribui as tuas faixas para Spotify, Apple Music, TikTok, YouTube Music e mais de 150 plataformas. Recebe 100% dos royalties em USD e levanta direto para M-Pesa, eMola ou Mkesh — feito em Moçambique, para artistas moçambicanos.', '1mz-for-artists' ); ?>
                    </p>
                    <div class="rmbz-lp-cta">
                        <a href="<?php echo $login_url; ?>" class="rmbz-lp-btn rmbz-lp-btn--primary">
                            <?php esc_html_e( 'Entrar / Começar agora', '1mz-for-artists' ); ?>
                        </a>
                        <a href="#rmbz-lp-como" class="rmbz-lp-btn rmbz-lp-btn--ghost">
                            <?php esc_html_e( 'Como funciona', '1mz-for-artists' ); ?>
                        </a>
                    </div>
                    <div class="rmbz-lp-stats">
                        <div class="rmbz-lp-stat"><strong>150+</strong><span><?php esc_html_e( 'Lojas e plataformas', '1mz-for-artists' ); ?></span></div>
                        <div class="rmbz-lp-stat"><strong>100%</strong><span><?php esc_html_e( 'Royalties para ti', '1mz-for-artists' ); ?></span></div>
                        <div class="rmbz-lp-stat"><strong>USD</strong><span><?php esc_html_e( 'Pago via M-Pesa/eMola', '1mz-for-artists' ); ?></span></div>
                    </div>
                </div>
            </section>

            <!-- LOJAS (marquee) -->
            <section class="rmbz-lp-stores">
                <p class="rmbz-lp-stores-label"><?php esc_html_e( 'A tua música disponível em', '1mz-for-artists' ); ?></p>
                <div class="rmbz-lp-marquee">
                    <div class="rmbz-lp-marquee-track">
                        <?php for ( $rep = 0; $rep < 2; $rep++ ): ?>
                            <?php foreach ( $stores as $st ): ?>
                                <span class="rmbz-lp-store"><?php echo esc_html( $st ); ?></span>
                            <?php endforeach; ?>
                        <?php endfor; ?>
                    </div>
                </div>
            </section>

            <!-- FEATURES -->
            <section class="rmbz-lp-section">
                <div class="rmbz-lp-inner">
                    <h2 class="rmbz-lp-h2"><?php esc_html_e( 'Tudo o que precisas para crescer', '1mz-for-artists' ); ?></h2>
                    <p class="rmbz-lp-section-sub"><?php esc_html_e( 'Uma plataforma completa, pensada para o artista.', '1mz-for-artists' ); ?></p>
                    <div class="rmbz-lp-features">
                        <?php foreach ( $features as $f ): ?>
                            <div class="rmbz-lp-feature">
                                <div class="rmbz-lp-feature-icon"><?php echo $f['icon']; ?></div>
                                <h3 class="rmbz-lp-feature-title"><?php echo esc_html( $f['title'] ); ?></h3>
                                <p class="rmbz-lp-feature-desc"><?php echo esc_html( $f['desc'] ); ?></p>
                            </div>
                        <?php endforeach; ?>
                    </div>
                </div>
            </section>

            <!-- COMO FUNCIONA -->
            <section class="rmbz-lp-section rmbz-lp-section--alt" id="rmbz-lp-como">
                <div class="rmbz-lp-inner">
                    <h2 class="rmbz-lp-h2"><?php esc_html_e( 'Como funciona', '1mz-for-artists' ); ?></h2>
                    <p class="rmbz-lp-section-sub"><?php esc_html_e( 'Da tua música às lojas em 4 passos simples.', '1mz-for-artists' ); ?></p>
                    <div class="rmbz-lp-steps">
                        <?php foreach ( $steps as $s ): ?>
                            <div class="rmbz-lp-step">
                                <div class="rmbz-lp-step-n"><?php echo esc_html( $s['n'] ); ?></div>
                                <h3 class="rmbz-lp-step-title"><?php echo esc_html( $s['title'] ); ?></h3>
                                <p class="rmbz-lp-step-desc"><?php echo esc_html( $s['desc'] ); ?></p>
                            </div>
                        <?php endforeach; ?>
                    </div>
                </div>
            </section>

            <!-- DIFERENCIAIS -->
            <section class="rmbz-lp-section">
                <div class="rmbz-lp-inner rmbz-lp-why">
                    <div class="rmbz-lp-why-text">
                        <h2 class="rmbz-lp-h2"><?php esc_html_e( 'Feito para Moçambique 🇲🇿', '1mz-for-artists' ); ?></h2>
                        <ul class="rmbz-lp-why-list">
                            <li><?php esc_html_e( 'Pagamentos locais: M-Pesa, eMola e Mkesh — sem dores de cabeça com bancos.', '1mz-for-artists' ); ?></li>
                            <li><?php esc_html_e( 'Suporte em português, perto de ti, que entende o mercado local.', '1mz-for-artists' ); ?></li>
                            <li><?php esc_html_e( 'Sem contratos exclusivos: a tua música continua tua, sempre.', '1mz-for-artists' ); ?></li>
                            <li><?php esc_html_e( 'Ferramentas com IA para perceberes os teus dados e crescer mais rápido.', '1mz-for-artists' ); ?></li>
                        </ul>
                        <a href="<?php echo $login_url; ?>" class="rmbz-lp-btn rmbz-lp-btn--primary">
                            <?php esc_html_e( 'Quero distribuir a minha música', '1mz-for-artists' ); ?>
                        </a>
                    </div>
                    <div class="rmbz-lp-why-card">
                        <div class="rmbz-lp-why-card-row"><span>💸</span><?php esc_html_e( 'Levantamentos rápidos', '1mz-for-artists' ); ?></div>
                        <div class="rmbz-lp-why-card-row"><span>📊</span><?php esc_html_e( 'Relatórios claros de streams e ganhos', '1mz-for-artists' ); ?></div>
                        <div class="rmbz-lp-why-card-row"><span>🎬</span><?php esc_html_e( 'Produção de videoclipes (Ganhar Vídeo)', '1mz-for-artists' ); ?></div>
                        <div class="rmbz-lp-why-card-row"><span>🤝</span><?php esc_html_e( 'Splits de royalties com colaboradores', '1mz-for-artists' ); ?></div>
                    </div>
                </div>
            </section>

            <!-- CTA FINAL -->
            <section class="rmbz-lp-cta-band">
                <div class="rmbz-lp-inner">
                    <h2 class="rmbz-lp-cta-title"><?php esc_html_e( 'Pronto para lançar a tua música?', '1mz-for-artists' ); ?></h2>
                    <p class="rmbz-lp-cta-sub"><?php esc_html_e( 'Junta-te à 1MZ Records e leva a tua arte mais longe.', '1mz-for-artists' ); ?></p>
                    <a href="<?php echo $login_url; ?>" class="rmbz-lp-btn rmbz-lp-btn--primary rmbz-lp-btn--lg">
                        <?php esc_html_e( 'Entrar / Criar conta', '1mz-for-artists' ); ?>
                    </a>
                </div>
            </section>

        </div>
        <?php
    } else {
        // [1.5.127] FIRST DEPOSIT GATE — antes de renderizar o painel de
        // distribuição, verifica se o utilizador está em estado pre-activação.
        // Se sim, bloqueia tudo (idêntico à área do artista).
        if ( function_exists('rmbz_first_deposit_gate_block_if_needed') ) {
            if ( rmbz_first_deposit_gate_block_if_needed() ) {
                return ob_get_clean();
            }
        }

        // 2. Renderizar o Painel de Distribuição
        if ( function_exists('rmbz_render_distribution_dashboard') ) {

            // NOTA: Os scripts e estilos (wp_enqueue_style e wp_enqueue_script)
            // foram movidos para o includes/enqueue.php para respeitar as boas práticas do WordPress.

            /* [1.5.126] PROTECÇÃO ANTI-ESCAPE de `&` em JS inline.
               Há plugins (cache, optimização, minificadores) e temas que
               adicionam filtros a `the_content` que escapam `&` para `&#038;`
               em todo o output do shortcode — incluindo dentro de tags
               `<script>`. Isto partia o JS frontend (bug raiz da 1.5.119).
               Desde o WP 4.4 o core protege `<script>`, mas terceiros
               continuam a fazer mal.
               Solução: durante a renderização do nosso shortcode, removemos
               temporariamente os 2 filtros mais comummente nocivos
               (`convert_chars`, `wptexturize`). Re-adicionamos a seguir
               para não afectar outros conteúdos da página. Filtros
               adicionados por plugins terceiros ficam intactos — se
               houver outro suspeito, adiciona-se aqui à lista. */
            $had_convert_chars = has_filter( 'the_content', 'convert_chars' );
            $had_wptexturize   = has_filter( 'the_content', 'wptexturize' );
            if ( $had_convert_chars ) remove_filter( 'the_content', 'convert_chars' );
            if ( $had_wptexturize )   remove_filter( 'the_content', 'wptexturize' );

            echo rmbz_render_distribution_dashboard();

            // Re-adicionar (idempotente — só re-adiciona se removemos)
            if ( $had_convert_chars ) add_filter( 'the_content', 'convert_chars' );
            if ( $had_wptexturize )   add_filter( 'the_content', 'wptexturize' );

        } else {
            echo '<p style="color:red; text-align:center;">Erro crítico: O módulo de distribuição não foi encontrado. Contacte o suporte.</p>';
        }
    }

    return ob_get_clean();
}


/**
 * ==========================================================================
 * SHORTCODE 2: ÁREA DO ARTISTA ([1mz_artist_area])
 * ==========================================================================
 * Carrega o template separado para exibir o formulário ou o bloqueio.
 */
function onemz_exibir_area_artista() {
    // 1. Verificar Login
    if ( ! function_exists('rmbz_is_user_logged_in') || ! rmbz_is_user_logged_in() ) {
        // [DS 1.5.66] Wrapper modernizado em vez do legacy "rmbz-login-warning"
        // com inline styles. Usa tokens do design system + carrega o shortcode
        // de login embutido por baixo da mensagem (comportamento original).
        $msg = esc_html__( 'Faça login na sua conta para aceder à área de artistas.', '1mz-for-artists' );
        return '<div class="rmbz-area-artista-gate">'
            . '<p class="rmbz-area-artista-gate__msg">' . $msg . '</p>'
            . do_shortcode('[rmbz_minha_conta]')
            . '</div>';
    }

    // 2. Preparar Dados para o Template
    $telemovel = rmbz_get_current_user_telemovel();

    // [1.5.127] FIRST DEPOSIT GATE.
    // Se o utilizador acabou de se registar e o primeiro depósito ainda não
    // foi confirmado pelo admin, bloqueamos toda a área do artista e mostramos
    // só o gate com instruções de pagamento + countdown 24h.
    // Implementação em includes/first-deposit-gate.php.
    if ( function_exists('rmbz_first_deposit_gate_block_if_needed') ) {
        ob_start();
        if ( rmbz_first_deposit_gate_block_if_needed() ) {
            return ob_get_clean();
        }
        ob_end_clean(); // não bloqueou — descartar buffer e continuar normalmente
    }

    // Verifica subscrição
    $tem_subscricao = function_exists('rmbz_user_has_active_subscription') ? rmbz_user_has_active_subscription($telemovel) : false;
    
    // CORREÇÃO: Calcula dias restantes em segurança para evitar erros fatais do PHP (strtotime empty)
    $dias_restantes = 0;
    if ($tem_subscricao && function_exists('rmbz_get_subscription_expiry')) {
        $data_expiracao = rmbz_get_subscription_expiry($telemovel);
        if ( ! empty( $data_expiracao ) ) {
            $dias_restantes = ceil((strtotime($data_expiracao) - time()) / 86400);
            $dias_restantes = max(0, $dias_restantes); // Garante que nunca fica negativo
        }
    }

    // Dados financeiros (para o caso de bloqueio)
    $custo = get_option('rmbz_sub_price', 1500);
    $saldo = function_exists('rmbz_get_wallet_balance_by_phone') ? rmbz_get_wallet_balance_by_phone($telemovel) : 0;

    // 3. Carregar o Template
    ob_start();

    // [1.5.182] Barra fixa global de notificações (severity warning/danger).
    // Aparece em TODAS as renderizações de área de artista — alerta o user
    // de algo urgente (release devolvido, levantamento rejeitado, etc.)
    // independentemente de em que página está.
    if ( function_exists('rmbz_notif_render_global_bar') ) {
        rmbz_notif_render_global_bar( $telemovel );
    }

    // [1.5.126] Mesma protecção anti-escape de & em JS inline aplicada
    // ao shortcode 1mz_distribution_dashboard. Ver comentário lá para
    // contexto completo.
    $had_convert_chars = has_filter( 'the_content', 'convert_chars' );
    $had_wptexturize   = has_filter( 'the_content', 'wptexturize' );
    if ( $had_convert_chars ) remove_filter( 'the_content', 'convert_chars' );
    if ( $had_wptexturize )   remove_filter( 'the_content', 'wptexturize' );

    // Caminho para o template do formulário
    $template_path = RMBZ_PLUGIN_PATH . 'templates/frontend/artist-upload-form.php';

    if ( file_exists( $template_path ) ) {
        include $template_path;
    } else {
        // Fallback de erro visível para ajudar a encontrar o problema
        echo '<div style="background: #ffebeb; color: #d63031; padding: 20px; border: 1px solid #d63031; border-radius: 5px; text-align: center;">';
        echo '<h2>⚠️ Arquivo não encontrado</h2>';
        echo '<p>Não foi possível carregar o formulário. Verifique se o arquivo existe neste local:</p>';
        echo '<code>' . esc_html($template_path) . '</code>';
        echo '</div>';
    }

    if ( $had_convert_chars ) add_filter( 'the_content', 'convert_chars' );
    if ( $had_wptexturize )   add_filter( 'the_content', 'wptexturize' );

    return ob_get_clean();
}
