diff --git a/docker/init/00-setup.sql b/docker/init/00-setup.sql index ba43e80..6fc0e9f 100644 --- a/docker/init/00-setup.sql +++ b/docker/init/00-setup.sql @@ -20,6 +20,7 @@ CREATE TABLE IF NOT EXISTS users ( family_id INT DEFAULT NULL, is_admin TINYINT(1) DEFAULT 0, is_active TINYINT(1) DEFAULT 1, + lang VARCHAR(5) DEFAULT 'fr', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (family_id) REFERENCES families(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/header.php b/header.php index c3ae2c8..790c3be 100644 --- a/header.php +++ b/header.php @@ -54,13 +54,6 @@ $currentLang = $_SESSION['app_lang'] ?? 'fr';
-
- FR - | - CA - | - EN -
diff --git a/login.php b/login.php index 523dd81..3dd6cb9 100644 --- a/login.php +++ b/login.php @@ -21,7 +21,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $error = tr('error_missing_fields'); } else { $stmt = $meta_pdo->prepare(" - SELECT u.id, u.username, u.password_hash, u.display_name, u.family_id, u.is_admin, u.is_active, f.db_name, f.is_active as family_active + SELECT u.id, u.username, u.password_hash, u.display_name, u.family_id, u.is_admin, u.is_active, u.lang, f.db_name, f.is_active as family_active FROM users u LEFT JOIN families f ON f.id = u.family_id WHERE u.username = ? @@ -43,6 +43,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { 'is_admin' => (bool)$user['is_admin'], ]; $_SESSION['family_db'] = $user['db_name']; + $_SESSION['app_lang'] = $user['lang'] ?? 'fr'; $redirectTo = $_GET['redirect'] ?? '/index.php'; header('Location: ' . $redirectTo); exit; diff --git a/settings.php b/settings.php index cff8f6e..ccf3d2a 100644 --- a/settings.php +++ b/settings.php @@ -14,6 +14,16 @@ $success = null; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $action = $_POST['action'] ?? ''; + if ($action === 'set_lang') { + $lang = $_POST['lang'] ?? 'fr'; + if (in_array($lang, ['fr', 'ca', 'en'])) { + $_SESSION['app_lang'] = $lang; + $meta_pdo->prepare("UPDATE users SET lang = ? WHERE id = ?") + ->execute([$lang, $user_id]); + $success = "Language updated."; + } + } + if ($action === 'update_profile') { $display_name = trim($_POST['display_name'] ?? ''); if (!$display_name) { @@ -98,6 +108,25 @@ require __DIR__ . '/header.php';
+ +
+

🌐 Langue / Language

+
+ + '🇫🇷 Français', 'en' => '🇬🇧 English', 'ca' => '🏴 Català']; + $currentLang = $_SESSION['app_lang'] ?? 'fr'; + foreach ($langs as $code => $label): + ?> + + +
+
+

👤 Mon profil