From 150c774bb37647e7e7b714cef7253fa518649e51 Mon Sep 17 00:00:00 2001 From: Jukka Lampikoski Date: Wed, 11 Mar 2026 22:33:38 +0200 Subject: [PATCH] =?UTF-8?q?Siirr=C3=A4=20allekirjoitukset=20Asiakaspalvelu?= =?UTF-8?q?-v=C3=A4lilehdelle=20+=20postilaatikoiden=20piilotus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Uusi "Omat asetukset" -näkymä Asiakaspalvelu-tabiin (allekirjoitukset + mailbox-näkyvyys) - Uusi user_hidden_mailboxes-taulu piilotettavien postilaatikoiden tallennukseen - API: profile_update + check_auth tukevat hidden_mailboxes-listaa - Tikettilista suodattaa piilotettujen mailboxien tiketit automaattisesti - Reply-formin mailbox-dropdown piilottaa piilotetut postilaatikot - Allekirjoitukset poistettu Oma profiili -modalista (siirretty Asiakaspalvelu-asetuksiin) Co-Authored-By: Claude Opus 4.6 --- api.php | 4 ++ db.php | 21 +++++++++ index.html | 31 +++++++++++-- script.js | 133 +++++++++++++++++++++++++++++++++++++++++------------ 4 files changed, 154 insertions(+), 35 deletions(-) diff --git a/api.php b/api.php index 28e5f7d..98525d6 100644 --- a/api.php +++ b/api.php @@ -1461,6 +1461,7 @@ switch ($action) { 'signatures' => $userSignatures, 'branding' => $branding, 'enabled_modules' => $enabledModules, + 'hidden_mailboxes' => $u ? ($u['hidden_mailboxes'] ?? []) : [], ]); } else { echo json_encode(['authenticated' => false]); @@ -1756,6 +1757,9 @@ switch ($action) { } $u['signatures'] = $sigs; } + if (isset($input['hidden_mailboxes']) && is_array($input['hidden_mailboxes'])) { + $u['hidden_mailboxes'] = array_map('strval', $input['hidden_mailboxes']); + } dbSaveUser($u); // Päivitä session nimi $_SESSION['nimi'] = $u['nimi']; diff --git a/db.php b/db.php index 20d0e9f..c6abb9d 100644 --- a/db.php +++ b/db.php @@ -159,6 +159,13 @@ function initDatabase(): void { UNIQUE KEY udx_user_mailbox (user_id, mailbox_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", + "CREATE TABLE IF NOT EXISTS user_hidden_mailboxes ( + user_id VARCHAR(20) NOT NULL, + mailbox_id VARCHAR(20) NOT NULL, + PRIMARY KEY (user_id, mailbox_id), + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", + "CREATE TABLE IF NOT EXISTS config ( config_key VARCHAR(100) PRIMARY KEY, config_value TEXT @@ -776,6 +783,8 @@ function dbGetUser(string $id): ?array { } $u['signatures'] = $sigs; + $u['hidden_mailboxes'] = _dbFetchColumn("SELECT mailbox_id FROM user_hidden_mailboxes WHERE user_id = ?", [$id]); + return $u; } @@ -797,6 +806,8 @@ function dbGetUserByUsername(string $username): ?array { } $u['signatures'] = $sigs; + $u['hidden_mailboxes'] = _dbFetchColumn("SELECT mailbox_id FROM user_hidden_mailboxes WHERE user_id = ?", [$u['id']]); + return $u; } @@ -838,6 +849,16 @@ function dbSaveUser(array $user): void { } } + // Piilotetut postilaatikot + if (array_key_exists('hidden_mailboxes', $user)) { + _dbExecute("DELETE FROM user_hidden_mailboxes WHERE user_id = ?", [$user['id']]); + if (!empty($user['hidden_mailboxes'])) { + foreach ($user['hidden_mailboxes'] as $mbId) { + _dbExecute("INSERT IGNORE INTO user_hidden_mailboxes (user_id, mailbox_id) VALUES (?, ?)", [$user['id'], $mbId]); + } + } + } + $db->commit(); } catch (Exception $e) { $db->rollback(); diff --git a/index.html b/index.html index 3b69301..a191e37 100644 --- a/index.html +++ b/index.html @@ -1136,6 +1136,7 @@ +