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

/**
 * Adiciona o template da Declaração de Titularidade à lista de templates de página.
 */
add_filter('theme_page_templates', 'imz_add_proof_of_ownership_template', 10, 1);
function imz_add_proof_of_ownership_template($templates) {
    $templates['template-proof-of-ownership.php'] = '1MZ - Declaração de Titularidade';
    return $templates;
}

/**
 * Carrega o ficheiro do template a partir do plugin, se selecionado.
 */
add_filter('page_template', 'imz_load_proof_of_ownership_template');
function imz_load_proof_of_ownership_template($page_template) {
    if (get_page_template_slug() == 'template-proof-of-ownership.php') {
        $page_template = plugin_dir_path(__FILE__) . '../page-templates/template-proof-of-ownership.php';
    }
    return $page_template;
}

/**
 * Cria a página "Declaração de Titularidade" programaticamente na ativação do plugin.
 */
function imz_create_proof_of_ownership_page() {
    if (get_page_by_path('declaracao-de-titularidade') == NULL) {
        $page_id = wp_insert_post([
            'post_title'    => 'Declaração de Titularidade',
            'post_name'     => 'declaracao-de-titularidade',
            'post_status'   => 'publish',
            'post_type'     => 'page',
            'post_content'  => 'Esta página gera o documento de prova de titularidade para os artistas.',
        ]);

        if ($page_id && !is_wp_error($page_id)) {
            update_post_meta($page_id, '_wp_page_template', 'template-proof-of-ownership.php');
        }
    }
}
register_activation_hook(dirname(__DIR__) . '/impulsionamento-musicas.php', 'imz_create_proof_of_ownership_page');

/**
 * Gera um link seguro para o documento de uma música específica.
 *
 * @param int $music_id O ID do post da música.
 * @return string O URL para a declaração.
 */
function imz_get_proof_document_link($music_id) {
    $page = get_page_by_path('declaracao-de-titularidade');
    if (!$page) {
        return '#error-page-not-found';
    }

    $token = wp_generate_password(32, false);
    // O token é válido por 1 hora
    set_transient('imz_proof_token_' . $token, $music_id, HOUR_IN_SECONDS);

    return add_query_arg('token', $token, get_permalink($page->ID));
}