Bot Discord - Commit completo con todos los cambios
This commit is contained in:
86
change_language.php
Executable file
86
change_language.php
Executable file
@@ -0,0 +1,86 @@
|
||||
<?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;
|
||||
Reference in New Issue
Block a user