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 @@ +