<?php
// ==========================================
// BASE-THEME: THEME OPTIONS ADMIN PAGE
// ==========================================

/**
 * 1. Adiciona a página sob "Aparência"
 */
function culturando_add_admin_menu()
{
    add_options_page(
        __('Opções do tema', 'culturando'),
        __('Culturando', 'culturando'),
        'manage_options',
        'culturando-settings',
        'culturando_settings_page_render'
    );
}
add_action('admin_menu', 'culturando_add_admin_menu');

/**
 * 2. Registra opções, seções e campos
 */
function culturando_settings_init()
{
    register_setting('culturando_options_group', 'culturando_options', 'culturando_sanitize_options');

    add_settings_section(
        'culturando_front_top_section',
        __('Elemento superior da página inicial', 'culturando'),
        'culturando_front_top_section_callback',
        'culturando-settings'
    );

    add_settings_field(
        'culturando_front_top_images',
        __('Imagens do slider', 'culturando'),
        'culturando_front_top_images_callback',
        'culturando-settings',
        'culturando_front_top_section'
    );

    add_settings_field(
        'culturando_front_top_interval',
        __('Intervalo de troca', 'culturando'),
        'culturando_front_top_interval_callback',
        'culturando-settings',
        'culturando_front_top_section'
    );

    add_settings_field(
        'culturando_front_top_duration',
        __('Duração do efeito de troca', 'culturando'),
        'culturando_front_top_duration_callback',
        'culturando-settings',
        'culturando_front_top_section'
    );

    add_settings_section(
        'culturando_contacts_section',
        __('Contatos do site', 'culturando'),
        'culturando_contacts_section_callback',
        'culturando-settings'
    );

    add_settings_field(
        'culturando_contacts',
        __('Canais', 'culturando'),
        'culturando_contacts_callback',
        'culturando-settings',
        'culturando_contacts_section'
    );

    add_settings_section(
        'culturando_editor_section',
        __('Editando conteúdos', 'culturando'),
        'culturando_editor_section_callback',
        'culturando-settings'
    );

    add_settings_field(
        'culturando_editor',
        __('Editor padrão', 'culturando'),
        'culturando_editor_callback',
        'culturando-settings',
        'culturando_editor_section'
    );

    add_settings_section(
        'culturando_copyright_section',
        __('Copyright', 'culturando'),
        'culturando_copyright_section_callback',
        'culturando-settings'
    );

    add_settings_field(
        'culturando_copyright',
        __('Text para o copyright', 'culturando'),
        'culturando_copyright_callback',
        'culturando-settings',
        'culturando_copyright_section'
    );
}
add_action('admin_init', 'culturando_settings_init');

/**
 * 3. Enfileira scripts na página de configurações
 */
function culturando_admin_enqueue_scripts($hook)
{
    if ($hook !== 'settings_page_culturando-settings') {
        return;
    }

    wp_enqueue_media(); // Habilita o Media Library

    wp_enqueue_script(
        'culturando-admin',
        get_template_directory_uri() . '/assets/js/admin-theme-options.js',
        array('jquery', 'media-upload', 'thickbox'),
        wp_get_theme()->get('Version'),
        true
    );

    wp_localize_script('culturando-admin', 'baseThemeAdmin', array(
        'title' => __('Selecionar imagens', 'culturando'),
        'button' => __('Adicionar imagens', 'culturando'),
        'noImages' => __('Nenhuma imagem para exibir', 'culturando'),
    ));

    // culturando_admin_styles();
}
add_action('admin_enqueue_scripts', 'culturando_admin_enqueue_scripts');

function culturando_enqueue_front_top_slider()
{
    // Só carrega na página inicial definida em Configurações > Leitura
    if (! is_front_page()) {
        return;
    }

    wp_enqueue_style(
        'culturando-slider-css',
        get_template_directory_uri() . '/assets/css/front-top-slider.css',
        array(),
        wp_get_theme()->get('Version')
    );

    wp_enqueue_script(
        'culturando-slider-js',
        get_template_directory_uri() . '/assets/js/front-top-slider.js',
        array(),
        wp_get_theme()->get('Version'),
        true
    );
}
add_action('wp_enqueue_scripts', 'culturando_enqueue_front_top_slider');

// ==========================================
// CALLBACKS DE RENDERIZAÇÃO
// ==========================================

function culturando_front_top_section_callback()
{
    echo '<p>' . esc_html__('Configure o bloco de destaque no topo da home. Selecione as imagens que serão exibidas com transição automática.', 'culturando') . '</p>';
}

function culturando_front_top_images_callback()
{
    $options = get_option('culturando_options', array());
    $image_ids = isset($options['front_top_images']) ? $options['front_top_images'] : array();
?>
    <div class="culturando-image-selector">
        <div class="culturando-image-list" id="culturando-image-list">
            <?php if (! empty($image_ids)) : ?>
                <?php foreach ($image_ids as $image_id) :
                    $image_url = wp_get_attachment_image_url($image_id, 'thumbnail');
                    if ($image_url) :
                ?>
                        <div class="culturando-image-item" data-id="<?php echo esc_attr($image_id); ?>">
                            <img src="<?php echo esc_url($image_url); ?>" alt="">
                            <button type="button" class="button remove-image" aria-label="<?php esc_attr_e('Remover imagem', 'culturando'); ?>">
                                <?php esc_html_e('×', 'culturando'); ?>
                            </button>
                        </div>
                <?php
                    endif;
                endforeach;
            else : ?>
                <p class="description"><?php esc_html_e('Nenhuma imagem selecionada.', 'culturando'); ?></p>
            <?php endif; ?>
        </div>

        <input type="hidden"
            name="culturando_options[front_top_images]"
            id="culturando-image-ids"
            value="<?php echo esc_attr(implode(',', array_map('absint', $image_ids))); ?>">

        <button type="button" class="button button-secondary" id="culturando-select-images">
            <?php esc_html_e('Selecionar imagens', 'culturando'); ?>
        </button>
    </div>
    <p class="description">
        <?php esc_html_e('Clique para abrir a biblioteca de mídia e selecione múltiplas imagens. Elas serão exibidas em sequência com transição suave.', 'culturando'); ?>
    </p>
<?php
}

function culturando_front_top_interval_callback()
{
    $options  = get_option('culturando_options', array());
    $interval = isset($options['front_top_interval']) ? absint($options['front_top_interval']) : 5;
?>
    <input
        type="number"
        name="culturando_options[front_top_interval]"
        value="<?php echo esc_attr($interval); ?>"
        min="1"
        max="30"
        step="1"
        class="small-text"> <?php esc_html_e('segundos', 'culturando'); ?>
<?php
}

function culturando_front_top_duration_callback()
{
    $options  = get_option('culturando_options', array());
    $duration = isset($options['front_top_duration']) ? absint($options['front_top_duration']) : 300;
?>
    <input
        type="number"
        name="culturando_options[front_top_duration]"
        value="<?php echo esc_attr($duration); ?>"
        min="0"
        max="2000"
        step="1"
        class="small-text"> <?php esc_html_e('milissegundos', 'culturando'); ?>
<?php
}

function culturando_editor_section_callback()
{
    echo '<p>' . esc_html__('Defina qual editor prefere usar ao editar. Recomendo o editor clássico.', 'culturando') . '</p>';
}

function culturando_editor_callback()
{
    $options = get_option('culturando_options', array());
    $current = isset($options['editor']) ? $options['editor'] : 'classic';
?>
    <select name="culturando_options[editor]" id="culturando_editor">
        <option value="classic" <?php selected($current, 'classic'); ?>>
            <?php esc_html_e('Editor Clássico', 'culturando'); ?>
        </option>
        <option value="gutenberg" <?php selected($current, 'gutenberg'); ?>>
            <?php esc_html_e('Gutenberg (Blocos)', 'culturando'); ?>
        </option>
    </select>
    <p class="description">
        <?php esc_html_e('Escolha qual editor será utilizado ao criar ou editar conteúdos.', 'culturando'); ?>
    </p>
<?php
}

function culturando_contacts_section_callback()
{
    echo '<p>' . esc_html__('Configure os canais de contato do site.', 'culturando') . '</p>';
}

function culturando_contacts_callback()
{
    // Pega o array completo e acessa a sub-chave 'contacts'
    $options = get_option('culturando_options', []);
    $contacts = $options['contacts'] ?? [];

    $fields = [
        'phone'     => ['label' => 'Telefone', 'type' => 'text'],
        'email'     => ['label' => 'E-mail', 'type' => 'email'],
        'whatsapp'  => ['label' => 'WhatsApp', 'type' => 'tel', 'placeholder' => '5511999999999'],
        'facebook'  => ['label' => 'Facebook', 'type' => 'url'],
        'instagram' => ['label' => 'Instagram', 'type' => 'url'],
        'youtube'   => ['label' => 'Youtube', 'type' => 'url'],
    ];

    foreach ($fields as $key => $config) {
        $value = isset($contacts[$key]) ? esc_attr($contacts[$key]) : '';
        $placeholder = isset($config['placeholder']) ? ' placeholder="' . esc_attr($config['placeholder']) . '"' : '';

        printf(
            '<p style="margin: 0 0 12px 0;">
                <label for="contacts_%s" style="display:block; margin-bottom:4px; font-weight:500;">%s</label>
                <input type="%s" id="contacts_%s" name="culturando_options[contacts][%s]" value="%s" class="regular-text"%s>
            </p>',
            $key,
            $config['label'],
            $config['type'],
            $key,
            $key,
            $value,
            $placeholder
        );
    }
}

function culturando_copyright_section_callback()
{
    echo '<p>' . esc_html__('Texto que aparece na informação de copyright, no footer do site.', 'culturando') . '</p>';
}

function culturando_copyright_callback()
{
    $options = get_option('culturando_options', []);
    $copyright = $options['copyright'] ?? '';
?>
    <input
        type="text"
        name="culturando_options[copyright]"
        value="<?php echo esc_attr($copyright); ?>"
    >
<?php
}

// ==========================================
// RENDERIZAÇÃO DA PÁGINA ADMIN
// ==========================================

function culturando_settings_page_render()
{
    if (! current_user_can('manage_options')) {
        return;
    }
    ?>
    <div class="wrap">
        <?php // settings_errors(); // ✅ Exibe "Configurações salvas." automaticamente 
        ?>
        <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
        <form action="options.php" method="post">
            <?php
            settings_fields('culturando_options_group');
            do_settings_sections('culturando-settings');
            submit_button(__('Salvar configurações', 'culturando'));
            ?>
        </form>
    </div>
    <?php
}

// ==========================================
// SANITIZAÇÃO SEGURA DAS OPÇÕES
// ==========================================

function culturando_sanitize_options($input)
{
    $sanitized = array();

    // Valida e sanitiza array de IDs de imagem
    if (isset($input['front_top_images'])) {
        $ids_string = sanitize_text_field($input['front_top_images']);
        $ids_array = array_filter(array_map('absint', explode(',', $ids_string)));
        $sanitized['front_top_images'] = array_values($ids_array);
    }

    // Garante que o intervalo seja um inteiro positivo
    if (isset($input['front_top_interval'])) {
        $sanitized['front_top_interval'] = max(1, min(30, absint($input['front_top_interval'])));
    }

    // Garante que o intervalo seja um inteiro positivo
    if (isset($input['front_top_duration'])) {
        $sanitized['front_top_duration'] = max(0, min(2000, absint($input['front_top_duration'])));
    }

    if (isset($input['editor'])) {
        $sanitized['editor'] = in_array($input['editor'], array('classic', 'gutenberg'), true)
            ? $input['editor']
            : 'classic';
    }

    if (isset($input['contacts']) && is_array($input['contacts'])) {
        $sanitized['contacts'] = [
            'phone'     => sanitize_text_field($input['contacts']['phone'] ?? ''),
            'email'     => sanitize_email($input['contacts']['email'] ?? ''),
            'whatsapp'  => preg_replace('/\D/', '', $input['contacts']['whatsapp'] ?? ''),
            'facebook'  => esc_url_raw($input['contacts']['facebook'] ?? ''),
            'instagram' => esc_url_raw($input['contacts']['instagram'] ?? ''),
            'youtube'   => esc_url_raw($input['contacts']['youtube'] ?? ''),
        ];
        // Remove chaves vazias (opcional, mantém o banco limpo)
        $sanitized['contacts'] = array_filter($sanitized['contacts']);
    }

    if (isset($input['copyright'])) {
        $sanitized['copyright'] = esc_attr($input['copyright']);
    }

    // Preserva outros campos futuros
    $existing = get_option('culturando_options', array());
    return array_merge($existing, $sanitized);
}

/**
 * Retorna as configurações do bloco superior da home.
 * 
 * @return array {
 *   @type array $images   URLs das imagens em tamanho full.
 *   @type int   $interval Intervalo de troca em segundos.
 * }
 */
function culturando_get_front_top_config()
{
    $defaults = array(
        'images'   => array(),
        'interval' => 5,
    );

    $options = get_option('culturando_options', array());

    // Garante que temos um array de IDs válidos
    $image_ids = ! empty($options['front_top_images']) ? array_filter($options['front_top_images'], 'is_numeric') : array();
    $interval  = ! empty($options['front_top_interval']) ? max(1, absint($options['front_top_interval'])) : $defaults['interval'];
    $duration  = ! empty($options['front_top_duration']) ? max(0, absint($options['front_top_duration'])) : $defaults['duration'];

    // Converte IDs → URLs (filtra IDs que não geram URL válida)
    $image_urls = array_filter(array_map(function ($id) {
        return wp_get_attachment_image_url((int) $id, 'full');
    }, $image_ids));

    return array(
        'images'   => array_values($image_urls),
        'interval' => $interval,
        'duration' => $duration,
    );
}

/**
 * CSS inline para a página de admin
 */
function culturando_admin_styles()
{
?>
    <style>
        .culturando-image-selector {
            margin: 10px 0;
        }

        .culturando-image-list {
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
            margin-bottom: 15px;
            min-height: 80px;
            padding: 10px;
            border: 1px dashed #ccc;
            background: #f9f9f9;
        }

        .culturando-image-item {
            position: relative;
            width: 100px;
            height: 100px;
        }

        .culturando-image-item img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            border: 2px solid #ddd;
            border-radius: 4px;
        }

        .culturando-image-item .remove-image {
            position: absolute;
            top: -8px;
            right: -8px;
            min-width: auto !important;
            min-height: auto !important;
            padding: 0 !important;
            margin: 0;
            box-sizing: border-box;
            width: 24px;
            height: 24px;
            display: flex !important;
            align-items: center;
            justify-content: center;
            line-height: 1;
            background: #dc3232;
            color: #fff;
            border: 2px solid #fff;
            border-radius: 50%;
            cursor: pointer;
            font-size: 14px;
            /* 16px costuma vazar em 24px; 14px fica proporcional */
            font-weight: bold;
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
        }

        .culturando-image-item .remove-image:hover {
            background: #a00;
            color: #fff;
            border-color: #fff;
        }
    </style>
<?php
}
add_action('admin_head-settings_page_culturando-settings', 'culturando_admin_styles');
