Files
sistema_funcionando_lastwar/change_language.php

87 lines
2.4 KiB
PHP
Executable File

<?php
/**
* change_language.php
*
* Este script maneja el cambio de idioma en la aplicación.
* Actualiza la sesión del usuario con el idioma seleccionado.
*/
// Iniciar la sesión si no está iniciada
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
// Incluir configuración y base de datos
require_once __DIR__ . '/config/config.php';
require_once __DIR__ . '/includes/db.php';
require_once __DIR__ . '/includes/translation_helper.php';
// Configurar cabeceras para respuesta JSON
header('Content-Type: application/json');
// Verificar que la solicitud sea POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405); // Método no permitido
echo json_encode(['success' => false, 'message' => 'Método no permitido']);
exit;
}
// Obtener el idioma de la solicitud
$language = $_POST['language'] ?? null;
// Validar que se proporcionó un idioma
if (empty($language)) {
http_response_code(400); // Solicitud incorrecta
echo json_encode(['success' => false, 'message' => 'No se proporcionó un idioma']);
exit;
}
// Verificar que el idioma esté disponible
$availableLanguages = get_available_languages();
$validLanguage = false;
foreach ($availableLanguages as $lang) {
if ($lang['code'] === $language) {
$validLanguage = true;
break;
}
}
if (!$validLanguage) {
http_response_code(400); // Solicitud incorrecta
echo json_encode(['success' => false, 'message' => 'Idioma no válido']);
exit;
}
// Actualizar el idioma en la sesión
$_SESSION['language'] = $language;
// Si el usuario está autenticado, actualizar su preferencia de idioma en la base de datos
if (isset($_SESSION['user_id'])) {
try {
$stmt = $pdo->prepare("UPDATE users SET language = ? WHERE id = ?");
$stmt->execute([$language, $_SESSION['user_id']]);
} catch (PDOException $e) {
// Registrar el error pero no fallar la operación
error_log("Error al actualizar el idioma del usuario: " . $e->getMessage());
}
}
// Limpiar la caché de traducciones si existe
if (isset($GLOBALS['_translations_cache'])) {
$GLOBALS['_translations_cache'] = [];
}
// Devolver respuesta exitosa
echo json_encode([
'success' => true,
'message' => 'Idioma actualizado correctamente',
'language' => $language
]);
// Registrar el cambio de idioma
custom_log("Idioma cambiado a: " . $language, 'language');
// Finalizar el script
exit;