<?php
/*
Arquivo: wp-content/themes/cancao-verdadeira/inc/meta-fields.php

Resumo:
Este arquivo adiciona campos personalizados ao CPT "musica" utilizando a API nativa
do WordPress (meta boxes), evitando dependência de plugins pesados como ACF.
Os campos incluem: URL do MP3, nome do artista, views, favoritos e avaliação média.
Esses dados são usados para player, ranking, SEO e interação do usuário.
O sistema foi projetado para alta performance, salvando dados já calculados
(evita queries pesadas). Também prepara integração futura com AJAX e ranking automático.
*/

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


/* =========================
   🎧 META BOX: DADOS DA MÚSICA
========================= */
function cancao_add_meta_box_musica() {
    add_meta_box(
        'cancao_dados_musica',
        'Dados da Música',
        'cancao_render_meta_box',
        'musica',
        'normal',
        'high'
    );
}
add_action('add_meta_boxes', 'cancao_add_meta_box_musica');


/* =========================
   🧱 RENDER DO META BOX
========================= */
function cancao_render_meta_box($post) {

    wp_nonce_field('cancao_save_meta', 'cancao_meta_nonce');

    $mp3        = get_post_meta($post->ID, '_cancao_mp3', true);
    $artista    = get_post_meta($post->ID, '_cancao_artista', true);
    $views      = get_post_meta($post->ID, '_cancao_views', true);
    $favoritos  = get_post_meta($post->ID, '_cancao_favoritos', true);
    $rating     = get_post_meta($post->ID, '_cancao_rating', true);
    ?>

    <p>
        <label><strong>🎧 URL do MP3</strong></label><br>
        <input type="text" name="cancao_mp3" value="<?php echo esc_attr($mp3); ?>" style="width:100%;" placeholder="https://...">
    </p>

    <p>
        <label><strong>🎤 Artista</strong></label><br>
        <input type="text" name="cancao_artista" value="<?php echo esc_attr($artista); ?>" style="width:100%;">
    </p>

    <hr>

    <p>
        <label><strong>👁️ Views</strong></label><br>
        <input type="number" name="cancao_views" value="<?php echo esc_attr($views ?: 0); ?>" style="width:100px;">
    </p>

    <p>
        <label><strong>❤️ Favoritos</strong></label><br>
        <input type="number" name="cancao_favoritos" value="<?php echo esc_attr($favoritos ?: 0); ?>" style="width:100px;">
    </p>

    <p>
        <label><strong>⭐ Avaliação Média</strong></label><br>
        <input type="number" step="0.1" name="cancao_rating" value="<?php echo esc_attr($rating ?: 0); ?>" style="width:100px;">
    </p>

    <?php
}


/* =========================
   💾 SALVAR META
========================= */
function cancao_save_meta_fields($post_id) {

    // Segurança
    if (!isset($_POST['cancao_meta_nonce']) || 
        !wp_verify_nonce($_POST['cancao_meta_nonce'], 'cancao_save_meta')) {
        return;
    }

    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
    if (!current_user_can('edit_post', $post_id)) return;

    // Campos
    $fields = [
        '_cancao_mp3'        => sanitize_text_field($_POST['cancao_mp3'] ?? ''),
        '_cancao_artista'    => sanitize_text_field($_POST['cancao_artista'] ?? ''),
        '_cancao_views'      => intval($_POST['cancao_views'] ?? 0),
        '_cancao_favoritos'  => intval($_POST['cancao_favoritos'] ?? 0),
        '_cancao_rating'     => floatval($_POST['cancao_rating'] ?? 0)
    ];

    foreach ($fields as $key => $value) {
        update_post_meta($post_id, $key, $value);
    }
}
add_action('save_post', 'cancao_save_meta_fields');


/* =========================
   📊 FUNÇÕES AUXILIARES
========================= */

// Incrementa views automaticamente
function cancao_increment_views($post_id) {
    $views = get_post_meta($post_id, '_cancao_views', true);
    $views = $views ? intval($views) : 0;
    update_post_meta($post_id, '_cancao_views', $views + 1);
}

// Retorna dados da música
function cancao_get_musica_meta($post_id) {
    return [
        'mp3'       => get_post_meta($post_id, '_cancao_mp3', true),
        'artista'   => get_post_meta($post_id, '_cancao_artista', true),
        'views'     => intval(get_post_meta($post_id, '_cancao_views', true)),
        'favoritos' => intval(get_post_meta($post_id, '_cancao_favoritos', true)),
        'rating'    => floatval(get_post_meta($post_id, '_cancao_rating', true)),
    ];
}