diff options
Diffstat (limited to 'src/accounts.php')
| -rw-r--r-- | src/accounts.php | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/accounts.php b/src/accounts.php index 72c766f..51cb3f6 100644 --- a/src/accounts.php +++ b/src/accounts.php @@ -55,17 +55,27 @@ function authorize_user(bool $required = false): bool $_SESSION["user_role"] = $role_row; } - $stmt = $db->prepare("SELECT es.* FROM emote_sets es + $stmt = $db->prepare("SELECT es.*, aes.is_default FROM emote_sets es INNER JOIN acquired_emote_sets aes ON aes.emote_set_id = es.id - WHERE aes.user_id = ? AND aes.is_default = TRUE + WHERE aes.user_id = ? + ORDER BY + CASE WHEN es.id = ? THEN 0 ELSE 1 END, + es.id "); - $stmt->execute([$row["id"]]); + $stmt->execute([$row["id"], $_SESSION["user_active_emote_set_id"] ?? ""]); - $_SESSION["user_active_emote_set"] = null; + $emote_sets = $stmt->fetchAll(PDO::FETCH_ASSOC); - if ($emote_set_row = $stmt->fetch(PDO::FETCH_ASSOC)) { - $_SESSION["user_active_emote_set"] = $emote_set_row; + if (!isset($_SESSION["user_active_emote_set_id"])) { + foreach ($emote_sets as $es) { + if ($es["is_default"]) { + $_SESSION["user_active_emote_set"] = $es; + $_SESSION["user_active_emote_set_id"] = $es["id"]; + } + } } + + $_SESSION["user_emote_sets"] = $emote_sets; } else { session_regenerate_id(); session_unset(); |
