<?php
/**
 * Plugin Name: Canção Verdadeira Core
 * Plugin URI: https://exemplo.com
 * Description: Plugin base para o site Canção Verdadeira.
 * Version: 1.0.0
 * Author: Seu Nome
 * Text Domain: cancao-verdadeira-core
 */

// ==============================================
// Arquivo: wp-content/plugins/cancao-verdadeira-core/cancao-verdadeira-core.php
// Data: 23/05/2026 16:45h
// 
// Objetivo: Este arquivo é o ponto de entrada do plugin 'cancao-verdadeira-core'.
// Ele gerencia a ativação do plugin, criando as tabelas personalizadas cv_plays e
// cv_favorites para armazenar reproduções e favoritos. Além disso, registra o
// Custom Post Type 'musica' com suas taxonomias 'genero' e 'subcategoria',
// essenciais para a catalogação e exibição do conteúdo musical.
// 
// Funcionalidades:
// - Criação de tabelas via dbDelta no ato da ativação.
// - Registro de CPT e taxonomias para integração com temas e outros plugins.
// ==============================================

defined( 'ABSPATH' ) || exit;

// Constante de versão
if ( ! defined( 'CVC_VERSION' ) ) {
	define( 'CVC_VERSION', '1.0.0' );
}

/**
 * Executa as tarefas na ativação do plugin.
 */
function cvc_activate() {
	global $wpdb;
	$charset_collate = $wpdb->get_charset_collate();

	$sql_plays = "CREATE TABLE IF NOT EXISTS {$wpdb->prefix}cv_plays (
		id bigint(20) NOT NULL AUTO_INCREMENT,
		song_id bigint(20) NOT NULL,
		user_id bigint(20) NOT NULL DEFAULT 0,
		play_time datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
		PRIMARY KEY (id),
		KEY song_id (song_id),
		KEY user_id (user_id)
	) $charset_collate;";

	$sql_favorites = "CREATE TABLE IF NOT EXISTS {$wpdb->prefix}cv_favorites (
		id bigint(20) NOT NULL AUTO_INCREMENT,
		song_id bigint(20) NOT NULL,
		user_id bigint(20) NOT NULL,
		created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
		PRIMARY KEY (id),
		KEY song_id (song_id),
		KEY user_id (user_id)
	) $charset_collate;";

	require_once ABSPATH . 'wp-admin/includes/upgrade.php';
	dbDelta( $sql_plays );
	dbDelta( $sql_favorites );
}
register_activation_hook( __FILE__, 'cvc_activate' );

/**
 * Registra o Custom Post Type 'musica'.
 */
function cvc_register_post_type() {
	$labels = array(
		'name'               => __( 'Músicas', 'cancao-verdadeira-core' ),
		'singular_name'      => __( 'Música', 'cancao-verdadeira-core' ),
		'menu_name'          => __( 'Músicas', 'cancao-verdadeira-core' ),
		'add_new'            => __( 'Adicionar Nova', 'cancao-verdadeira-core' ),
		'add_new_item'       => __( 'Adicionar Nova Música', 'cancao-verdadeira-core' ),
		'edit_item'          => __( 'Editar Música', 'cancao-verdadeira-core' ),
		'view_item'          => __( 'Ver Música', 'cancao-verdadeira-core' ),
		'all_items'          => __( 'Todas as Músicas', 'cancao-verdadeira-core' ),
		'search_items'       => __( 'Pesquisar Músicas', 'cancao-verdadeira-core' ),
		'not_found'          => __( 'Nenhuma música encontrada.', 'cancao-verdadeira-core' ),
		'not_found_in_trash' => __( 'Nenhuma música na lixeira.', 'cancao-verdadeira-core' ),
	);

	$args = array(
		'labels'              => $labels,
		'public'              => true,
		'has_archive'         => true,
		'supports'            => array( 'title', 'editor', 'thumbnail', 'excerpt', 'custom-fields' ),
		'taxonomies'          => array( 'genero', 'subcategoria' ),
		'rewrite'             => array( 'slug' => 'musica' ),
		'show_in_rest'        => true,
		'menu_icon'           => 'dashicons-format-audio',
	);

	register_post_type( 'musica', $args );
}
add_action( 'init', 'cvc_register_post_type' );

/**
 * Registra a taxonomia 'genero'.
 */
function cvc_register_taxonomy_genero() {
	$labels = array(
		'name'              => __( 'Gêneros', 'cancao-verdadeira-core' ),
		'singular_name'     => __( 'Gênero', 'cancao-verdadeira-core' ),
		'search_items'      => __( 'Pesquisar Gêneros', 'cancao-verdadeira-core' ),
		'all_items'         => __( 'Todos os Gêneros', 'cancao-verdadeira-core' ),
		'edit_item'         => __( 'Editar Gênero', 'cancao-verdadeira-core' ),
		'update_item'       => __( 'Atualizar Gênero', 'cancao-verdadeira-core' ),
		'add_new_item'      => __( 'Adicionar Novo Gênero', 'cancao-verdadeira-core' ),
		'new_item_name'     => __( 'Novo Gênero', 'cancao-verdadeira-core' ),
		'menu_name'         => __( 'Gêneros', 'cancao-verdadeira-core' ),
	);

	$args = array(
		'hierarchical'      => true,
		'labels'            => $labels,
		'show_ui'           => true,
		'show_admin_column' => true,
		'query_var'         => true,
		'rewrite'           => array( 'slug' => 'genero' ),
		'show_in_rest'      => true,
	);

	register_taxonomy( 'genero', 'musica', $args );
}
add_action( 'init', 'cvc_register_taxonomy_genero' );

/**
 * Registra a taxonomia 'subcategoria'.
 */
function cvc_register_taxonomy_subcategoria() {
	$labels = array(
		'name'              => __( 'Subcategorias', 'cancao-verdadeira-core' ),
		'singular_name'     => __( 'Subcategoria', 'cancao-verdadeira-core' ),
		'search_items'      => __( 'Pesquisar Subcategorias', 'cancao-verdadeira-core' ),
		'all_items'         => __( 'Todas as Subcategorias', 'cancao-verdadeira-core' ),
		'edit_item'         => __( 'Editar Subcategoria', 'cancao-verdadeira-core' ),
		'update_item'       => __( 'Atualizar Subcategoria', 'cancao-verdadeira-core' ),
		'add_new_item'      => __( 'Adicionar Nova Subcategoria', 'cancao-verdadeira-core' ),
		'new_item_name'     => __( 'Nova Subcategoria', 'cancao-verdadeira-core' ),
		'menu_name'         => __( 'Subcategorias', 'cancao-verdadeira-core' ),
	);

	$args = array(
		'hierarchical'      => true,
		'labels'            => $labels,
		'show_ui'           => true,
		'show_admin_column' => true,
		'query_var'         => true,
		'rewrite'           => array( 'slug' => 'subcategoria' ),
		'show_in_rest'      => true,
	);

	register_taxonomy( 'subcategoria', 'musica', $args );
}
add_action( 'init', 'cvc_register_taxonomy_subcategoria' );