<?php
// ==========================================
// BASE-THEME: CUSTOM POST TYPE 'PARTNER'
// ==========================================

/**
 * Registra o CPT 'partner'
 */
function culturando_register_partner_cpt() {
    $labels = array(
        'name'                  => _x( 'Parceiros', 'Post type general name', 'culturando' ),
        'singular_name'         => _x( 'Parceiro', 'Post type singular name', 'culturando' ),
        'menu_name'             => __( 'Parceiros', 'culturando' ),
        'name_admin_bar'        => __( 'Parceiro', 'culturando' ),
        'add_new'               => __( 'Adicionar novo', 'culturando' ),
        'add_new_item'          => __( 'Adicionar parceiro', 'culturando' ),
        'new_item'              => __( 'Novo parceiro', 'culturando' ),
        'edit_item'             => __( 'Editar parceiro', 'culturando' ),
        'view_item'             => __( 'Ver parceiro', 'culturando' ),
        'all_items'             => __( 'Todos os parceiros', 'culturando' ),
        'search_items'          => __( 'Buscar parceiros', 'culturando' ),
        'not_found'             => __( 'Nenhum parceiro encontrado.', 'culturando' ),
        'not_found_in_trash'    => __( 'Nenhum parceiro na lixeira.', 'culturando' ),
        'featured_image'        => __( 'Logo do parceiro', 'culturando' ),
        'set_featured_image'    => __( 'Definir logo', 'culturando' ),
        'remove_featured_image' => __( 'Remover logo', 'culturando' ),
        'use_featured_image'    => __( 'Usar thumbnail', 'culturando' ),
    );

    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,          // ✅ Aparece no menu lateral do WP Admin
        'menu_position'      => 25,
        'menu_icon'          => 'dashicons-admin-users', // Pode trocar por qualquer dashicon
        'query_var'          => true,
        'rewrite'            => array( 'slug' => 'parceiros', 'with_front' => false ),
        'has_archive'        => true,          // ✅ Cria /parceiros/ automaticamente
        'hierarchical'       => false,
        'supports'           => array( 'title', 'editor', 'thumbnail', 'excerpt' ),
        'show_in_rest'       => true,          // ✅ Habilita editor Gutenberg
        'show_in_nav_menus'  => true,          // ✅ Permite adicionar links em Aparência > Menus
    );

    register_post_type( 'partner', $args );
}
add_action( 'init', 'culturando_register_partner_cpt' );

/**
 * Registra as taxonomias para Parceiros
 */
function culturando_register_partner_taxonomies() {
    // Categorias (substituindo "Áreas")
    register_taxonomy( 'categoria_parceiro', 'partner', [
        'label' => __( 'Categorias', 'culturando' ),
        'labels' => [
            'name' => __( 'Categorias', 'culturando' ),
            'singular_name' => __( 'Categoria', 'culturando' ),
            'search_items' => __( 'Buscar Categorias', 'culturando' ),
            'edit_item' => __( 'Editar Categoria', 'culturando' ),
            'add_new_item' => __( 'Adicionar Nova Categoria', 'culturando' ),
            'menu_name' => __( 'Categorias', 'culturando' ),
        ],
        'public' => true,
        'hierarchical' => true, // Permite subcategorias se precisar depois
        'rewrite' => [ 'slug' => 'categoria', 'with_front' => false ],
        'show_admin_column' => true,
        'show_in_rest' => true, // Habilita no editor Gutenberg
    ] );

    // Locais (bairros/cidades)
    register_taxonomy( 'local_parceiro', 'partner', [
        'label' => __( 'Locais', 'culturando' ),
        'labels' => [
            'name' => __( 'Locais', 'culturando' ),
            'singular_name' => __( 'Local', 'culturando' ),
            'search_items' => __( 'Buscar Locais', 'culturando' ),
            'edit_item' => __( 'Editar Local', 'culturando' ),
            'add_new_item' => __( 'Adicionar Novo Local', 'culturando' ),
            'menu_name' => __( 'Locais', 'culturando' ),
        ],
        'public' => true,
        'hierarchical' => true, // Bairros > Cidades, se quiser
        'rewrite' => [ 'slug' => 'local', 'with_front' => false ],
        'show_admin_column' => true,
        'show_in_rest' => true,
    ] );
}
add_action( 'init', 'culturando_register_partner_taxonomies', 20 );

/**
 * Limpa as regras de rewrite ao ativar o tema (evita 404 no primeiro acesso)
 */
function culturando_flush_cpt_rewrites() {
    culturando_register_partner_cpt();
    flush_rewrite_rules();
}
add_action( 'after_switch_theme', 'culturando_flush_cpt_rewrites' );

// ==========================================
// BASE-THEME: META BOX CONTATO PARCEIRO
// ==========================================

/**
 * Registra o meta box "Dados de Contato" no CPT Partner
 */
function culturando_partner_contact_meta_box() {
    add_meta_box(
        'partner_contact_box',
        __( 'Dados de Contato', 'culturando' ),
        'culturando_render_partner_contact_box',
        'partner',
        'side',      // Pode trocar para 'normal' se preferir abaixo do editor
        'default'
    );
}
add_action( 'add_meta_boxes', 'culturando_partner_contact_meta_box' );

/**
 * Renderiza os campos do meta box
 */
function culturando_render_partner_contact_box( $post ) {
    wp_nonce_field( 'culturando_partner_contact_nonce', 'partner_contact_nonce' );

    $fields = array(
        'partner_address'   => get_post_meta( $post->ID, 'partner_address', true ),
        'partner_phone'     => get_post_meta( $post->ID, 'partner_phone', true ),
        'partner_email'     => get_post_meta( $post->ID, 'partner_email', true ),
        'partner_whatsapp'  => get_post_meta( $post->ID, 'partner_whatsapp', true ),
        'partner_website'   => get_post_meta( $post->ID, 'partner_website', true ),
        'partner_facebook'  => get_post_meta( $post->ID, 'partner_facebook', true ),
        'partner_instagram' => get_post_meta( $post->ID, 'partner_instagram', true ),
        'partner_youtube'   => get_post_meta( $post->ID, 'partner_youtube', true ),
    );
    ?>
    <p>
        <label for="partner_address"><?php esc_html_e( 'Endereço', 'culturando' ); ?></label>
        <textarea id="partner_address" name="partner_address" class="widefat" rows="3"><?php echo esc_textarea( $fields['partner_address'] ); ?></textarea>
    </p>
    <p>
        <label for="partner_phone"><?php esc_html_e( 'Telefone', 'culturando' ); ?></label>
        <input type="tel" id="partner_phone" name="partner_phone" value="<?php echo esc_attr( $fields['partner_phone'] ); ?>" class="widefat">
    </p>
    <p>
        <label for="partner_email"><?php esc_html_e( 'E-mail', 'culturando' ); ?></label>
        <input type="email" id="partner_email" name="partner_email" value="<?php echo esc_attr( $fields['partner_email'] ); ?>" class="widefat">
    </p>
    <p>
        <label for="partner_website"><?php esc_html_e( 'Website', 'culturando' ); ?></label>
        <input type="url" id="partner_website" name="partner_website" value="<?php echo esc_url( $fields['partner_website'] ); ?>" class="widefat">
    </p>
    <p>
        <label for="partner_whatsapp"><?php esc_html_e( 'WhatsApp', 'culturando' ); ?></label>
        <input type="tel" id="partner_whatsapp" name="partner_whatsapp" value="<?php echo esc_attr( $fields['partner_whatsapp'] ); ?>" class="widefat" placeholder="55 11 99999-9999">
        <span class="description"><?php esc_html_e( 'Apenas números. Ex: 5511999999999', 'culturando' ); ?></span>
    </p>
    <p>
        <label for="partner_facebook"><?php esc_html_e( 'Facebook', 'culturando' ); ?></label>
        <input type="url" id="partner_facebook" name="partner_facebook" value="<?php echo esc_url( $fields['partner_facebook'] ); ?>" class="widefat">
    </p>
    <p>
        <label for="partner_instagram"><?php esc_html_e( 'Instagram', 'culturando' ); ?></label>
        <input type="url" id="partner_instagram" name="partner_instagram" value="<?php echo esc_url( $fields['partner_instagram'] ); ?>" class="widefat">
    </p>
    <p>
        <label for="partner_youtube"><?php esc_html_e( 'Youtube', 'culturando' ); ?></label>
        <input type="url" id="partner_youtube" name="partner_youtube" value="<?php echo esc_url( $fields['partner_youtube'] ); ?>" class="widefat">
    </p>
    <?php
}

/**
 * Salva os dados do meta box
 */
function culturando_save_partner_contact( $post_id ) {
    if ( ! isset( $_POST['partner_contact_nonce'] ) || ! wp_verify_nonce( $_POST['partner_contact_nonce'], 'culturando_partner_contact_nonce' ) ) return;
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
    if ( ! current_user_can( 'edit_post', $post_id ) ) return;

    $sanitizers = array(
        'partner_address'   => 'sanitize_textarea_field',
        'partner_phone'     => 'sanitize_text_field',
        'partner_email'     => 'sanitize_email',
        'partner_whatsapp'  => 'sanitize_text_field',
        'partner_facebook'  => 'esc_url_raw',
        'partner_instagram' => 'esc_url_raw',
        'partner_youtube'   => 'esc_url_raw',
        'partner_website'   => 'esc_url_raw',
    );

    foreach ( $sanitizers as $field => $callback ) {
        if ( isset( $_POST[ $field ] ) ) {
            update_post_meta( $post_id, $field, call_user_func( $callback, $_POST[ $field ] ) );
        }
    }
}
add_action( 'save_post_partner', 'culturando_save_partner_contact' );

/**
 * Helper: Retorna todos os campos de contato de um parceiro
 * @param int $post_id
 * @return array
 */
function culturando_get_partner_contact( $post_id ) {
    return array(
        'address'   => get_post_meta( $post_id, 'partner_address', true ),
        'phone'     => preg_replace( '/\D/', '', get_post_meta( $post_id, 'partner_phone', true ) ),
        'email'     => get_post_meta( $post_id, 'partner_email', true ),
        'whatsapp'  => preg_replace( '/\D/', '', get_post_meta( $post_id, 'partner_whatsapp', true ) ),
        'facebook'  => get_post_meta( $post_id, 'partner_facebook', true ),
        'instagram' => get_post_meta( $post_id, 'partner_instagram', true ),
        'youtube'   => get_post_meta( $post_id, 'partner_youtube', true ),
    );
}

/**
 * Retorna o HTML completo dos dados de contato de um parceiro.
 *
 * @param int|null $post_id ID do post. Se null, usa o post atual.
 * @return string HTML sanitizado ou string vazia se não houver dados.
 */
function culturando_get_partner_contact_html( $post_id = null ) {
    if ( ! $post_id ) {
        $post_id = get_the_ID();
    }

    $c = culturando_get_partner_contact( $post_id );

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

    ob_start();
    ?>
    <div class="partner-contact">
        <h4>Contatos</h4>
        <?php if ( $c['address'] ) : ?>
            <p class="contact-address">
                <a>
                    <?php print_svg('address'); ?>
                    <?php echo esc_html( $c['address'] ); ?>
                </a>
            </p>
        <?php endif; ?>

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

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

        <?php if ( $c['whatsapp'] ) : ?>
            <p class="contact-whatsapp">
                <a href="https://wa.me/55<?php echo esc_attr( $c['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 ( $c['facebook'] || $c['instagram'] || $c['youtube'] ) : ?>
            <div class="partner-social">
                <?php if ( $c['facebook'] ) : ?>
                    <p class="contact-facebook">
                        <a href="<?php echo esc_url( $c['facebook'] ); ?>" class="social-facebook" target="_blank" rel="noopener" aria-label="Facebook">
                            <?php print_svg('facebook'); ?>
                            Facebook

                        </a>
                    </p>
                <?php endif; ?>
                <?php if ( $c['instagram'] ) : ?>
                    <p class="contact-instagram">
                        <a href="<?php echo esc_url( $c['instagram'] ); ?>" class="social-instagram" target="_blank" rel="noopener" aria-label="Instagram">
                            <?php print_svg('instagram'); ?>
                            Instagram
                        </a>
                    </p>
                <?php endif; ?>
                <?php if ( $c['youtube'] ) : ?>
                    <p class="contact-youtube">
                        <a href="<?php echo esc_url( $c['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
    $output = ob_get_clean();

    /**
     * Filtro para permitir que temas filhos ou plugins modifiquem o HTML.
     */
    return apply_filters( 'culturando_partner_contact_html', $output, $post_id, $c );
}

/**
 * Exibe (echo) os dados de contato de um parceiro.
 *
 * @param int|null $post_id ID do post. Se null, usa o post atual.
 */
function the_partner_contacts( $post_id = null ) {
    echo culturando_get_partner_contact_html( $post_id );
}