<?php
/*
Plugin Name: Botão Voltar ao Topo
Description: Plugin para adicionar um botão de voltar ao topo personalizável em páginas específicas.
Version: 1.0
Author: Cat Leap Studios
Author URI: https://catleapstudios.com/
License: GPL2
*/

// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

// Adiciona o menu no admin para gerenciar as configurações
function voltar_topo_add_admin_menu() {
    add_menu_page(
        'Botão Voltar ao Topo',
        'Voltar ao Topo',
        'manage_options',
        'voltar-topo',
        'voltar_topo_settings_page',
        'dashicons-arrow-up-alt',
        60
    );
}
add_action( 'admin_menu', 'voltar_topo_add_admin_menu' );

// Página de configurações no admin
function voltar_topo_settings_page() {
    if ( isset( $_POST['voltar_topo_settings_save'] ) ) {
        // Verificação de nonce
if ( isset( $_POST['voltar_topo_nonce'] ) ) {
    $nonce = sanitize_text_field( wp_unslash( $_POST['voltar_topo_nonce'] ) ); // Desescapa e sanitiza
    if ( ! wp_verify_nonce( $nonce, 'voltar_topo_save_settings' ) ) {
        wp_die( 'Ação não autorizada.' );
    }
} else {
    wp_die( 'Nonce não definido.' );
}


        // Sanitiza os dados do formulário
        $selected_pages = isset( $_POST['voltar_topo_pages'] ) ? array_map( 'intval', $_POST['voltar_topo_pages'] ) : [];
        $background_color = isset( $_POST['voltar_topo_background_color'] ) ? sanitize_hex_color( wp_unslash( $_POST['voltar_topo_background_color'] ) ) : '#000000';
        $icon = isset( $_POST['voltar_topo_icon'] ) ? sanitize_text_field( wp_unslash( $_POST['voltar_topo_icon'] ) ) : 'fa-arrow-up';

        // Salva os valores no banco de dados
        update_option( 'voltar_topo_pages', $selected_pages );
        update_option( 'voltar_topo_background_color', $background_color );
        update_option( 'voltar_topo_icon', $icon );

        // Mensagem de sucesso
        echo '<div class="updated"><p>Configurações salvas com sucesso!</p></div>';
    }

    // Recupera os valores do banco de dados
    $pages = get_pages();
    $selected_pages = get_option( 'voltar_topo_pages', [] );
    $background_color = get_option( 'voltar_topo_background_color', '#000000' );
    $icon = get_option( 'voltar_topo_icon', 'fa-arrow-up' );
    ?>
    <div class="wrap">
        <h1>Configurações do Botão Voltar ao Topo</h1>
        <form method="post">
            <?php wp_nonce_field( 'voltar_topo_save_settings', 'voltar_topo_nonce' ); ?>
            <table class="form-table">
                <tr>
                    <th scope="row"><label for="voltar_topo_pages">Páginas</label></th>
                    <td>
                        <select id="voltar_topo_pages" name="voltar_topo_pages[]" multiple style="width: 100%; height: 150px;">
                            <?php foreach ( $pages as $page ) : ?>
                                <option value="<?php echo esc_attr( $page->ID ); ?>" <?php echo in_array( $page->ID, $selected_pages ) ? 'selected' : ''; ?>>
                                    <?php echo esc_html( $page->post_title ); ?>
                                </option>
                            <?php endforeach; ?>
                        </select>
                        <p class="description">Selecione as páginas onde o botão será exibido.</p>
                    </td>
                </tr>
                <tr>
                    <th scope="row"><label for="voltar_topo_background_color">Cor de Fundo</label></th>
                    <td>
                        <input type="color" id="voltar_topo_background_color" name="voltar_topo_background_color" value="<?php echo esc_attr( $background_color ); ?>">
                    </td>
                </tr>
                <tr>
                    <th scope="row"><label for="voltar_topo_icon">Ícone</label></th>
                    <td>
                        <input type="text" id="voltar_topo_icon" name="voltar_topo_icon" value="<?php echo esc_attr( $icon ); ?>">
                        <p class="description">Insira o nome do ícone do Font Awesome (ex: <code>fa-arrow-up</code>).</p>
                    </td>
                </tr>
            </table>
            <?php submit_button( 'Salvar Configurações', 'primary', 'voltar_topo_settings_save' ); ?>
        </form>
    </div>
    <?php
}

// Adiciona o botão ao front-end
function voltar_topo_add_button() {
    if ( is_admin() ) {
        return;
    }

    $selected_pages = get_option( 'voltar_topo_pages', [] );
    $background_color = get_option( 'voltar_topo_background_color', '#000000' );
    $icon = get_option( 'voltar_topo_icon', 'fa-arrow-up' );

    if ( ! is_page( $selected_pages ) ) {
        return;
    }

    echo '<div id="voltar-topo" style="background-color: ' . esc_attr( $background_color ) . ';"><i class="fa ' . esc_attr( $icon ) . '"></i></div>';
}
add_action( 'wp_footer', 'voltar_topo_add_button' );

// Enfileira os scripts e estilos
function voltar_topo_enqueue_scripts() {
    // Font Awesome local
    wp_enqueue_style( 'voltar-topo-fontawesome', plugins_url( '/assets/fontawesome/css/all.min.css', __FILE__ ), [], '6.0.0-beta3' );
    
    // CSS local do plugin
    wp_enqueue_style( 'voltar-topo-style', plugins_url( '/style.css', __FILE__ ), [], '1.0' );
    
    // JS local do plugin
    wp_enqueue_script( 'voltar-topo-script', plugins_url( '/script.js', __FILE__ ), [], '1.0', true );
}
add_action( 'wp_enqueue_scripts', 'voltar_topo_enqueue_scripts' );

