<?php
if ( ! defined( 'ABSPATH' ) ) {
	exit; // Impede acesso direto ao arquivo
}

define('CULT_URL', WP_CONTENT_URL . "/themes/culturando");

include WP_CONTENT_DIR . "/themes/culturando/includes/theme-options.php";
include WP_CONTENT_DIR . "/themes/culturando/includes/partners.php";
include WP_CONTENT_DIR . "/themes/culturando/includes/events.php";
include WP_CONTENT_DIR . "/themes/culturando/includes/banner-manager.php";

/**
 * Configuração inicial do tema.
 * Hook: after_setup_theme
 */
function culturando_setup() {
	// Permite que o WP gerencie <title> automaticamente
	add_theme_support( 'title-tag' );

	// Habilita imagens destacadas nos posts/páginas
	add_theme_support( 'post-thumbnails' );

	// Adiciona links automáticos para RSS/Atom no <head>
	add_theme_support( 'automatic-feed-links' );

	// Usa marcação HTML5 em formulários, listas de comentários, etc.
	add_theme_support( 'html5', array(
		'search-form',
		'comment-form',
		'comment-list',
		'gallery',
		'caption',
		'style',
		'script',
	) );

    register_nav_menus( array(
        'primary' => __( 'Menu Principal', 'culturando' ),
        'footer'  => __( 'Menu Footer', 'culturando' ),
    ) );

	// Prepara o tema para tradução (domínio: culturando)
	load_theme_textdomain( 'culturando', get_template_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'culturando_setup' );

/**
 * Carregamento de CSS e JS.
 * Hook: wp_enqueue_scripts
 */
function culturando_assets() {
	// CSS principal de layout
	wp_enqueue_style(
		'culturando-main',
		get_template_directory_uri() . '/assets/css/main.css',
		array(),
		wp_get_theme()->get( 'Version' ) // Usa a versão do style.css automaticamente
	);

	// JS principal (carrega no footer)
	wp_enqueue_script(
		'culturando-main',
		get_template_directory_uri() . '/assets/js/main.js',
		[],
		wp_get_theme()->get( 'Version' ),
		true // true = carrega antes de </body>
	);
}
add_action( 'wp_enqueue_scripts', 'culturando_assets' );

/**
 * Desativa o editor de blocos (Gutenberg) e força o editor clássico.
 */
function culturando_toggle_gutenberg() {
	$options = get_option( 'culturando_options', array() );
	$editor  = isset( $options['editor'] ) ? $options['editor'] : 'classic';

	// Se escolheu 'classic', desativa o Gutenberg
	if ( 'classic' === $editor ) {
		add_filter( 'use_block_editor_for_post', '__return_false', 10 );
		add_filter( 'use_block_editor_for_post_type', '__return_false', 10 );
	}
}
add_action( 'after_setup_theme', 'culturando_toggle_gutenberg', 20 );

/**
 * Adiciona Categorias e Tags nativas às Páginas
 */
function culturando_add_taxonomies_to_pages() {
	// Adiciona Categorias às páginas
	register_taxonomy_for_object_type( 'category', 'page' );
	
	// Adiciona Tags às páginas
	register_taxonomy_for_object_type( 'post_tag', 'page' );
}
add_action( 'init', 'culturando_add_taxonomies_to_pages', 20 );

/**
 * Imprime um SVG inline a partir de um caminho ou URL.
 * Permite estilização via CSS (fill, stroke, hover, etc.).
 *
 * @param string $src      Caminho relativo ao tema (ex: 'assets/icons/search.svg') ou URL local.
 * @param string $attrs    Atributos HTML opcionais (ex: 'class="icon" aria-hidden="true"').
 */
function print_svg( $src, $attrs = '' ) {
	if ( empty( $src ) ) return;

    if (preg_match("/^[a-z0-9]+$/", $src)) {
        $src = "/assets/images/svg/{$src}.svg";
    }

    $name = str_replace(".svg", "", array_pop(explode("/", $src)));

	$file_path = strpos( $src, 'http' ) === 0 
		? str_replace( home_url( '/' ), ABSPATH, $src ) 
		: get_template_directory() . '/' . ltrim( $src, '/' );

	$file_path = wp_normalize_path( $file_path );

	if ( ! file_exists( $file_path ) || ! is_readable( $file_path ) || pathinfo( $file_path, PATHINFO_EXTENSION ) !== 'svg' ) {
		return;
	}

	$svg = file_get_contents( $file_path );
	if ( stripos( $svg, '<svg' ) === false ) return;

	$svg = preg_replace( '/<\?xml[^>]*\?>/', '', $svg );
	$svg = preg_replace( '/<!DOCTYPE[^>]*>/', '', $svg );

	if ( $attrs ) {
		$svg = preg_replace( '/(<svg\s*[^>]*?)>/', '$1 ' . trim( $attrs ) . '>', $svg, 1 );
	}

	echo "<span class=\"inline-svg {$name}\">{$svg}</span>";
}

/**
 * Retorna o HTML dos contatos globais do site (configurações do tema).
 *
 * @return string HTML sanitizado ou string vazia se não houver dados.
 */
function culturando_get_site_contact_html() {
	$options  = get_option( 'culturando_options', [] );
	$contacts = $options['contacts'] ?? [];

	// Se todos os campos estiverem vazios, não imprime nada
	if ( ! array_filter( $contacts ) ) {
		return '';
	}

	ob_start();
	?>
	<div class="site-contact">
		<h4>Entre em contato</h4>

		<?php if ( ! empty( $contacts['phone'] ) ) : ?>
			<p class="contact-phone">
				<a href="tel:<?php echo esc_attr( preg_replace( '/\D/', '', $contacts['phone'] ) ); ?>">
					<?php print_svg( 'phone' ); ?>
					<?php echo esc_html( $contacts['phone'] ); ?>
				</a>
			</p>
		<?php endif; ?>

		<?php if ( ! empty( $contacts['email'] ) ) : ?>
			<p class="contact-email">
				<a href="mailto:<?php echo esc_attr( $contacts['email'] ); ?>">
					<?php print_svg( 'email' ); ?>
					<?php echo esc_html( $contacts['email'] ); ?>
				</a>
			</p>
		<?php endif; ?>

		<?php if ( ! empty( $contacts['whatsapp'] ) ) : ?>
			<p class="contact-whatsapp">
				<a href="https://wa.me/55<?php echo esc_attr( $contacts['whatsapp'] ); ?>?text=Olá,%20vi%20no%20site%20e%20gostaria%20de%20mais%20informações." target="_blank" rel="noopener">
					<?php print_svg( 'whatsapp' ); ?>
					<?php esc_html_e( 'Enviar mensagem no WhatsApp', 'culturando' ); ?>
				</a>
			</p>
		<?php endif; ?>

		<?php if ( ! empty( $contacts['facebook'] ) || ! empty( $contacts['instagram'] ) || ! empty( $contacts['youtube'] ) ) : ?>
			<div class="site-social">
				<?php if ( ! empty( $contacts['facebook'] ) ) : ?>
					<p class="contact-facebook">
						<a href="<?php echo esc_url( $contacts['facebook'] ); ?>" class="social-facebook" target="_blank" rel="noopener" aria-label="Facebook">
							<?php print_svg( 'facebook' ); ?>
							Facebook
						</a>
					</p>
				<?php endif; ?>

				<?php if ( ! empty( $contacts['instagram'] ) ) : ?>
					<p class="contact-instagram">
						<a href="<?php echo esc_url( $contacts['instagram'] ); ?>" class="social-instagram" target="_blank" rel="noopener" aria-label="Instagram">
							<?php print_svg( 'instagram' ); ?>
							Instagram
						</a>
					</p>
				<?php endif; ?>

				<?php if ( ! empty( $contacts['youtube'] ) ) : ?>
					<p class="contact-youtube">
						<a href="<?php echo esc_url( $contacts['youtube'] ); ?>" class="social-youtube" target="_blank" rel="noopener" aria-label="YouTube">
							<?php print_svg( 'youtube' ); ?>
							YouTube
						</a>
					</p>
				<?php endif; ?>
			</div>
		<?php endif; ?>
	</div>
	<?php
	return ob_get_clean();
}

/**
 * Exibe (echo) os contatos globais do site.
 */
function culturando_the_site_contact() {
	echo culturando_get_site_contact_html();
}

function culturando_get_partner_initials( $post_id = null ) {
    if ( ! $post_id ) {
        $post_id = get_the_ID();
    }

    $name = get_the_title( $post_id );
    if ( empty( $name ) ) return '?';

    // Limpa HTML e divide em palavras
    $words = array_filter( preg_split( '/\s+/', strip_tags( $name ) ) );
    if ( empty( $words ) ) return '?';

    // Pega primeira letra da primeira e da última palavra
    $first = mb_substr( $words[0], 0, 1, 'UTF-8' );
    $last  = count( $words ) > 1 
            // ? mb_substr( end( $words ), 0, 1, 'UTF-8' ) 
            ? mb_substr( $words[1], 0, 1, 'UTF-8' ) 
            : mb_substr( $words[0], 1, 1, 'UTF-8' );

    // Normaliza: remove acentos, converte para maiúsculas, mantém só letras
    $initials = strtoupper( remove_accents( $first . $last ) );
    $initials = preg_replace( '/[^A-Z]/', '', $initials );

    return substr( $initials, 0, 2 ) ?: '?';
}

/* ======================================================================
 * Auto-Thumbnail para YouTube em posts da categoria Culturando
 * ====================================================================== */

add_action( 'save_post', 'culturando_auto_youtube_thumbnail' );
function culturando_auto_youtube_thumbnail( $post_id ) {
    // Ignora revisões e autosave para não duplicar processos
    if ( wp_is_post_revision( $post_id ) || ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) ) {
        return;
    }

    // Só roda se o post estiver na categoria 'culturando' (use o slug da categoria)
    if ( ! has_category( 'culturando', $post_id ) ) {
        return;
    }

    // Se já tem imagem destacada, para aqui (respeita o upload manual)
    if ( has_post_thumbnail( $post_id ) ) {
        return;
    }

    // Pega o conteúdo do post
    $content = get_post_field( 'post_content', $post_id );
    
    // Regex robusto para encontrar ID do YouTube (Links longos, curtos, embeds)
    $pattern = '#(?:(?:https?:)?//)?(?:(?:www|m)\.)?(?:youtube\.com|youtu\.be)(?:/(?:[\w\-]+\?v=|embed/|v/|shorts/)?)([\w\-]{11})#';
    
    if ( preg_match( $pattern, $content, $matches ) ) {
        $video_id = $matches[1];
        
        // URL da imagem de alta qualidade (funciona para Shorts e vídeos normais)
        $thumbnail_url = 'https://img.youtube.com/vi/' . $video_id . '/hqdefault.jpg';

        // 5. Carrega as funções necessárias para upload externo
        require_once( ABSPATH . 'wp-admin/includes/media.php' );
        require_once( ABSPATH . 'wp-admin/includes/file.php' );
        require_once( ABSPATH . 'wp-admin/includes/image.php' );

        // Baixa a imagem, salva na biblioteca e retorna o ID
        $attachment_id = media_sideload_image( $thumbnail_url, $post_id, 'Thumbnail do vídeo', 'id' );

        // Se o download deu certo, define como Destaque
        if ( ! is_wp_error( $attachment_id ) ) {
            set_post_thumbnail( $post_id, $attachment_id );
        }
    }
}

// Registra o nome do botão na barra
add_filter( 'mce_buttons', 'culturando_register_columns_buttons' );
function culturando_register_columns_buttons( $buttons ) {
    array_push( $buttons, 'culturando_columns_equal', 'culturando_columns_asymmetric' );
    return $buttons;
}

// Registra APENAS UM plugin (que contém os dois botões)
add_filter( 'mce_external_plugins', 'culturando_add_columns_plugin' );
function culturando_add_columns_plugin( $plugins ) {
    $plugins['culturando_columns'] = get_template_directory_uri() . '/assets/js/tinymce-columns.js';
    return $plugins;
}

// Carrega CSS exclusivo para o editor
add_action( 'admin_init', 'culturando_load_editor_css' );
function culturando_load_editor_css() {
    add_editor_style( 'assets/css/editor-style.css' );
}

// Injeta CSS na tela do editor (fora do iframe)
add_action( 'admin_print_styles-editor.php', 'culturando_tinymce_toolbar_icons' );
function culturando_tinymce_toolbar_icons() {
    ?>
    <style>
        /* Ícone do botão na barra do TinyMCE */
        .mce-i-columns:before {
            content: "\f514"; /* Dashicon: dashicons-layout */
            font-family: dashicons;
            font-size: 20px;
            line-height: 20px;
            -webkit-font-smoothing: antialiased;
            display: inline-block;
        }
    </style>
    <?php
}