<?php
/**
 * Manejo de la carga de scripts en Compibot.
 *
 * Este archivo se encarga de inyectar el script `compibot.js` en el footer del sitio
 * si el token de autenticación está disponible en la base de datos.
 *
 * @package Compibot
 */

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

/**
 * Encola el script `compibot.js` en el footer si el token es válido.
 *
 * La función verifica la existencia del token en la base de datos y, si es válido,
 * lo inyecta en el footer con el atributo `data-token`.
 *
 * @return void
 */
function compibot_compibot_enqueue_script() {
	$db_manager = new CompibotDatabaseManager();

	// Verifica si la columna "public_token" existe.
	$columns = $db_manager->compibot_get_columns();

	if ( in_array( 'public_token', $columns, true ) ) {
		// Intenta obtener el "public_token".
		$public_token = $db_manager->compibot_select( 'public_token', 'plugin_token_compibot_page', 60 );

	} elseif ( in_array( 'token', $columns, true ) ) {
		// Si no existe "public_token", intenta obtener "token".
		$public_token = $db_manager->compibot_select( 'token', 'plugin_token_compibot_page', 60 );
	} else {
		// Si no existen ni "public_token" ni "token", no cargamos el script.
		return;
	}

	// Si el token es válido, cargamos el script en el footer.
	$public_token = is_string( $public_token ) ? trim( $public_token ) : $public_token;

	if ( 0 !== $public_token && $public_token ) {


        // phpcs:disable WordPress.WP.EnqueuedResourceParameters.MissingVersion
		wp_enqueue_script(
			'compibot-js', // Handle único.
			'https://bot.compibot.com/compibot.js', // URL del script.
			array(), // Sin dependencias.
			null, // Versión 0.1 (cambiar a la versión real).
			true // Cargar en el footer.
		);
        // phpcs:enable

		// Agregamos el atributo "data-token" al script.
		add_filter(
			'script_loader_tag',
			function ( $tag, $handle ) use ( $public_token ) {
				if ( 'compibot-js' !== $handle ) {
					return $tag;
				}

				// Agregar data-token al tag del script.
				return str_replace(
					'<script',
					'<script data-token="' . esc_attr( $public_token ) . '"',
					$tag
				);
			},
			10,
			2
		);
	}
}


add_action( 'wp_footer', 'compibot_compibot_enqueue_script' );

wp_enqueue_style(
  'compibot-login',
  COMPIBOT_PLUGIN_URL . 'assets/css/compibot-login.css',
  array(),
  CompibotPlugin::VERSION
);
