From 0417260bf158c5d7b62888dae2e202b0de115a05 Mon Sep 17 00:00:00 2001
From: Minteck <contact@minteck.org>
Date: Wed, 10 Aug 2022 00:04:25 +0200
Subject: Initial commit

---
 includes/header.php | 719 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 719 insertions(+)
 create mode 100644 includes/header.php

(limited to 'includes/header.php')

diff --git a/includes/header.php b/includes/header.php
new file mode 100644
index 0000000..af12bcb
--- /dev/null
+++ b/includes/header.php
@@ -0,0 +1,719 @@
+<?php global $title;
+
+require_once $_SERVER["DOCUMENT_ROOT"] . "/includes/score.php";
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $isLoggedIn;
+
+function getMiniName(string $name) {
+    $parts = explode(" ", $name);
+
+    if (strlen($parts[0]) > 3 && !str_ends_with($parts[0], "e") && $parts[0] !== "Filly") {
+        if (str_contains($parts[0], "/")) {
+            return explode("/", $parts[0])[0];
+        } else {
+            return $parts[0];
+        }
+    } else {
+        return $name;
+    }
+}
+
+function getSystemMember(string $system, string $id) {
+    $systemID = $system;
+
+    $members = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-members.json"), true);
+    $member = null;
+
+    foreach ($members as $m) {
+        if ($m["id"] === $id) $member = $m;
+    }
+
+    return $member;
+}
+
+function getBrightness(string $hexCode) {
+    if (str_starts_with("#", $hexCode)) {
+        $hexCode = substr($hexCode, 1);
+    }
+
+    $red = hexdec(substr($hexCode, 0, 2));
+    $green = hexdec(substr($hexCode, 2, 2));
+    $blue = hexdec(substr($hexCode, 4, 2));
+    $brightness = $red + $green + $blue;
+
+    return $brightness > 382;
+}
+
+function showMembersFromList(array $list, string $id) {
+    foreach ($list as $member) { if ($member['name'] !== "unknown") {
+        echo('<!-- ' . ($member['display_name'] ?? $member['name']) . ' -->
+<a href="/' . ($id === "gdapd" ? "raindrops" : "cloudburst") . '/' . $member['name'] . '" style="text-decoration:none !important;filter:none !important;"><div class="hpd-item-card" style="background-color:rgba(255, 255, 255, .1);border-radius:10px;text-align:center;display:flex;align-items:center;justify-content:center;padding:5px;"><div>
+<img alt="" src="/assets/uploads/pt' . (file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "") . '.png" style="height:48px;display:block;margin-left:auto;margin-right:auto;">
+<div style="text-decoration:none;color:white;margin-top:5px;">' . ($member['display_name'] ?? $member['name']) . '</div>
+<div style="text-decoration:none !important;color:black !important;"><code style="text-decoration:none !important;color:white !important;">' . $member['proxy_tags'][0]['prefix'] . '</code></div>
+</div></div></a>');
+    }}
+}
+
+function showSubsystem(array $data, string $parentSystem) {
+    $subsystemData = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$parentSystem-subsystem-$data[source].json"), true);
+
+    echo('<!-- ' . $subsystemData["name"] . ' -->
+<div id="hpd-cloudburst" style="background:rgba(255, 255, 255, .1);border-radius:10px;padding:10px;display:grid;grid-template-columns: 1fr;margin-bottom:10px;">');
+    echo(' <div style="display:grid;grid-template-columns:repeat(6, 1fr);grid-gap:10px;">');
+
+    showMembersFromList(scoreOrder(array_map(function ($i) use ($parentSystem) {
+        return getSystemMember($parentSystem, $i);
+    }, $data["members"]), $parentSystem), $parentSystem);
+
+    echo('</div>
+
+</div>');
+}
+
+function showSystem(string $id, string $name, string $color, bool $hideTitle) {
+    if ($hideTitle) {
+        echo('<!-- ' . $name . ' -->
+<div id="hpd-' . ($id === "gdapd" ? "raindrops" : "cloudburst") . '" style="background:rgba(255, 255, 255, .1);border-radius:10px;padding:10px;display:grid;grid-template-columns: 1fr;margin-bottom:10px;">');
+    } else {
+        echo('<!-- ' . $name . ' -->
+<div id="hpd-' . ($id === "gdapd" ? "raindrops" : "cloudburst") . '" style="background:rgba(255, 255, 255, .1);border-radius:10px;padding:10px 10px 10px 20px;display:grid;grid-template-columns: 128px 1fr;margin-bottom:10px;">');
+    }
+
+    if (!$hideTitle) echo('<!-- System Name -->
+<a style="display:flex;margin: -10px -20px;align-items:center;justify-content:center;text-align:center;padding: 10px 20px;border-radius: 10px;background: ' . $color . ';width: 148px;text-decoration:none;color:white;filter:none !important;" href="/' . ($id === "gdapd" ? "raindrops" : "cloudburst") . '" class="hpd-system">
+' . $name . '
+</a>');
+
+    if ($hideTitle) {
+        echo(' <div style="display:grid;grid-template-columns:repeat(6, 1fr);grid-gap:10px;">');
+    } else {
+        echo(' <div style="display:grid;grid-template-columns:repeat(6, 1fr);padding-left:10px;grid-gap:10px;">');
+    }
+
+    showMembersFromList(scoreOrder(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$id-members.json"), true), $id), $id);
+
+    echo('</div>
+
+</div>');
+}
+
+function cloudburst(bool $hideTitle): void {
+    showSystem("ynmuc", "Cloudburst System", "#5f08a9a6", $hideTitle);
+}
+
+function raindrops(bool $hideTitle): void {
+    showSystem("gdapd", "Raindrops System", "#a95f08a6", $hideTitle);
+}
+
+?>
+<!doctype html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
+    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
+    <title><?= $title ? $title . " ยท " : "" ?>Cuties and Plurality</title>
+    <link rel="shortcut icon" href="/assets/uploads/logo.jpg" type="image/jpg">
+    <style>
+        nav.navbar {
+            background-color: black !important;
+            border-bottom: 1px solid rgba(255, 255, 255, .25);
+        }
+
+        body {
+            background-color: black !important;
+            color: white;
+        }
+
+        .hpd-item-card:hover {
+            background-color: rgba(255, 255, 255, .15) !important;
+        }
+
+        .hpd-item-card:active, .hpd-item-card:focus {
+            background-color: rgba(255, 255, 255, .2) !important;
+        }
+
+        .hpd-system:hover {
+            opacity: .9 !important;
+        }
+
+        .hpd-system:active, .hpd-system:focus {
+            opacity: .8 !important;
+        }
+
+        .hpd-link:hover {
+            background-color: rgba(255, 255, 255, .15) !important;
+        }
+
+        .hpd-link:active, .hpd-link:focus {
+            background-color: rgba(255, 255, 255, .2) !important;
+        }
+
+        .list-separator-mobile {
+            display: none;
+        }
+
+        @media (max-width: 991px) {
+            #hpd-cloudburst > div, #hpd-raindrops > div {
+                grid-template-columns: repeat(3, 1fr) !important;
+            }
+
+            .list-separator-desktop {
+                display: none;
+            }
+
+            span.list-separator-mobile {
+                display: inline;
+            }
+        }
+
+        @media (max-width: 768px) {
+            #hpd-cloudburst > div, #hpd-raindrops > div {
+                grid-template-columns: repeat(2, 1fr) !important;
+            }
+        }
+
+        @media (max-width: 575px) {
+            #hpd-cloudburst > div, #hpd-raindrops > div {
+                grid-template-columns: repeat(1, 1fr) !important;
+            }
+
+            .hpd-item-card img {
+                display: inline-block !important;
+                margin-right: 5px !important;
+                height: 32px !important;
+            }
+
+            #hpd-cloudburst > div, #hpd-raindrops > div {
+                grid-gap: 5px !important;
+            }
+
+            .hpd-item-card div {
+                display: inline-block !important;
+            }
+
+            .hpd-item-card div:nth-child(3)::before {
+                content: "(";
+                padding-left: 5px;
+                color: white !important;
+            }
+
+            .hpd-item-card div:nth-child(3)::after {
+                content: ")";
+                color: white !important;
+            }
+        }
+
+        .dropdown-menu {
+            background-color: #222;
+        }
+
+        .dropdown-item:hover {
+            background-color: rgba(255, 255, 255, .1);
+        }
+
+        .dropdown-item:active, .dropdown-item:focus {
+            background-color: rgba(255, 255, 255, .2);
+        }
+
+        .dropdown-item {
+            color: white !important;
+        }
+
+        .dropdown-icon {
+            filter: invert(1);
+        }
+
+        .dropdown-toggle .dropdown-icon {
+            opacity: .5;
+            transition: 200ms opacity;
+        }
+
+        .dropdown-toggle:hover .dropdown-icon, .dropdown-toggle:active .dropdown-icon, .dropdown-toggle:focus .dropdown-icon {
+            opacity: .75;
+        }
+
+        dd {
+            margin-left: 20px;
+        }
+
+        #system-info a {
+            color: white;
+        }
+
+        #system-info a:hover {
+            opacity: .75;
+        }
+
+        #system-info a:active, #system-info a:focus {
+            opacity: .5;
+        }
+
+        @media (max-width: 991px) {
+            #member-card {
+                grid-template-columns: repeat(3, 1fr) !important;
+            }
+
+            .species-name {
+                display: none;
+            }
+        }
+
+        @media (max-width: 767px) {
+            #member-card {
+                grid-template-columns: 1fr !important;
+                text-align: left;
+            }
+        }
+
+        #page-content a {
+            color: #afd0ff;
+        }
+
+        #page-content a:hover {
+            opacity: .75;
+        }
+
+        #page-content a:active, #page-content a:focus {
+            opacity: .5;
+        }
+
+        .tooltip.show {
+            opacity: 1;
+        }
+
+        .tooltip-inner {
+            background: #151515;
+            box-shadow: 3px 4px 10px #ffffff26;
+        }
+
+        .alert {
+            filter: invert(1) hue-rotate(180deg);
+        }
+
+        .member-link {
+            color: white !important;
+            text-decoration: none !important;
+        }
+
+        .system-action {
+            border-radius: 10px;
+            color: white !important;
+            text-decoration: none !important;
+            cursor: pointer;
+        }
+
+        .system-action:hover {
+            background:rgba(255, 255, 255, .1);
+        }
+
+        .table-dark {
+            --bs-table-bg: #000000;
+        }
+
+        .comparison {
+            display: grid;
+            grid-template-columns: 3fr repeat(2, 2fr) repeat(5, 1fr);
+        }
+
+        .comparison-header {
+            border-bottom: 2px solid rgba(255, 255, 255, .25);
+            font-weight: bold;
+        }
+
+        .comparison-item {
+            padding: 5px 10px;
+            text-align: center;
+        }
+
+        .comparison-item-clickable:hover {
+            background-color: rgba(255, 255, 255, .1);
+        }
+
+        .comparison-item-clickable:active, .comparison-item-clickable:focus {
+            background-color: rgba(255, 255, 255, .25);
+        }
+
+        @media (min-width: 1400px) {
+            .comparison-header-l0 {
+                display: inline;
+            }
+            .comparison-header-l1 {
+                display: none;
+            }
+            .comparison-header-l2 {
+                display: none;
+            }
+            .comparison-header-l3 {
+                display: none;
+            }
+            .comparison-header-l4 {
+                display: none;
+            }
+            .comparison-header-l5 {
+                display: none;
+            }
+            .comparison-name-full {
+                display: inline;
+            }
+            .comparison-name-small {
+                display: none;
+            }
+            .comparison-colors {
+                display: inline;
+            }
+            .comparison-relations-count {
+                display: none;
+            }
+            .comparison-relations-full {
+                display: inline;
+            }
+        }
+
+        @media (max-width: 1399px) {
+            .comparison-header-l0 {
+                display: none;
+            }
+            .comparison-header-l1 {
+                display: inline;
+            }
+            .comparison-header-l2 {
+                display: none;
+            }
+            .comparison-header-l3 {
+                display: none;
+            }
+            .comparison-header-l4 {
+                display: none;
+            }
+            .comparison-header-l5 {
+                display: none;
+            }
+            .comparison-name-full {
+                display: inline;
+            }
+            .comparison-name-small {
+                display: none;
+            }
+            .comparison-colors {
+                display: inline;
+            }
+            .comparison-relations-count {
+                display: none;
+            }
+            .comparison-relations-full {
+                display: inline;
+            }
+        }
+
+        @media (max-width: 1199px) {
+            .comparison-header-l0 {
+                display: none;
+            }
+            .comparison-header-l1 {
+                display: none;
+            }
+            .comparison-header-l2 {
+                display: initial;
+            }
+            .comparison-header-l3 {
+                display: none;
+            }
+            .comparison-header-l4 {
+                display: none;
+            }
+            .comparison-header-l5 {
+                display: none;
+            }
+            .comparison-name-full {
+                display: none;
+            }
+            .comparison-name-small {
+                display: inline;
+            }
+            .comparison-colors {
+                display: inline;
+            }
+            .comparison-relations-count {
+                display: inline;
+            }
+            .comparison-relations-full {
+                display: none;
+            }
+        }
+
+        @media (max-width: 991px) {
+            .comparison-header-l0 {
+                display: none;
+            }
+            .comparison-header-l1 {
+                display: none;
+            }
+            .comparison-header-l2 {
+                display: none;
+            }
+            .comparison-header-l3 {
+                display: initial;
+            }
+            .comparison-header-l4 {
+                display: none;
+            }
+            .comparison-header-l5 {
+                display: none;
+            }
+            .comparison-name-full {
+                display: none;
+            }
+            .comparison-name-small {
+                display: inline;
+            }
+            .comparison-colors {
+                display: none !important;
+            }
+            .comparison-relations-count {
+                display: inline;
+            }
+            .comparison-relations-full {
+                display: none;
+            }
+        }
+
+        @media (max-width: 767px) {
+            .comparison-header-l0 {
+                display: none;
+            }
+            .comparison-header-l1 {
+                display: none;
+            }
+            .comparison-header-l2 {
+                display: none;
+            }
+            .comparison-header-l3 {
+                display: none;
+            }
+            .comparison-header-l4 {
+                display: initial;
+            }
+            .comparison-header-l5 {
+                display: none;
+            }
+            .comparison-name-full {
+                display: none;
+            }
+            .comparison-name-small {
+                display: none;
+            }
+            .comparison-colors {
+                display: none !important;
+            }
+            .comparison-relations-count {
+                display: inline;
+            }
+            .comparison-relations-full {
+                display: none;
+            }
+        }
+
+        @media (max-width: 575px) {
+            .comparison-header-l0 {
+                display: none;
+            }
+            .comparison-header-l1 {
+                display: none;
+            }
+            .comparison-header-l2 {
+                display: none;
+            }
+            .comparison-header-l3 {
+                display: none;
+            }
+            .comparison-header-l4 {
+                display: none;
+            }
+            .comparison-header-l5 {
+                display: initial;
+            }
+            .comparison-name-full {
+                display: none;
+            }
+            .comparison-name-small {
+                display: none;
+            }
+            .comparison-colors {
+                display: none !important;
+            }
+            .comparison {
+                grid-template-columns: repeat(3, 2fr) repeat(5, 1fr) !important;
+            }
+            .comparison-relations-count {
+                display: inline;
+            }
+            .comparison-relations-full {
+                display: none;
+            }
+        }
+
+        .tree-first-separator {
+            height: 14px !important;
+            top: 0 !important;
+        }
+
+        .tree-l0-separator {
+            display: inline-block;
+            width: 20px;
+            margin-left: 35px;
+            border-bottom: 1px solid white;
+            border-left: 1px solid white;
+            height: 26px;
+            position: relative;
+            top: -12px;
+        }
+
+        .tree-l1 .tree-l0-separator {
+            border-bottom: none !important;
+        }
+
+        .tree-l1-separator {
+            display: inline-block;
+            width: 20px;
+            margin-left: 35px;
+            border-bottom: 1px solid white;
+            border-left: 1px solid white;
+            height: 26px;
+            position: relative;
+            top: -12px;
+            left: -10px;
+        }
+
+        .tree-l1 .tree-l0-separator {
+            width: 30px;
+        }
+
+        .tree-l1 .tree-inner {
+            position: relative;
+            left: -10px;
+        }
+
+        .tree-inner {
+            display: inline-block;
+        }
+    </style>
+</head>
+<body>
+    <nav class="navbar navbar-expand-md bg-dark navbar-dark">
+        <div class="container-fluid">
+            <a class="navbar-brand" href="/"><img src="/assets/uploads/logo.jpg" alt="" style="width:32px;vertical-align: middle;margin-right:5px;"> <span style="vertical-align: middle;">Cuties and Plurality</span><a>
+            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#collapsibleNavbar">
+                <span class="navbar-toggler-icon"></span>
+            </button>
+            <div class="collapse navbar-collapse" id="collapsibleNavbar">
+                <ul class="navbar-nav">
+                    <li class="nav-item dropdown">
+                        <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown">
+                            <img src="<?= $isLoggedIn ? "/assets/icons/loggedin.svg" : "/assets/icons/global.svg" ?>" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
+                            <span style="vertical-align: middle;">Global</span>
+                        </a>
+                        <ul class="dropdown-menu">
+                            <?php if ($isLoggedIn): ?>
+                            <li><a class="dropdown-item" href="/emergency">
+                                <img src="/assets/icons/emergency.svg" alt="" style="width:24px;vertical-align: middle;">
+                                <span class="text-danger" style="vertical-align: middle;">Emergency Alert</span>
+                            </a></li>
+                            <li><hr class="dropdown-divider"></li>
+                            <?php endif; ?>
+                            <li><a class="dropdown-item" href="/">
+                                <img src="/assets/icons/home.svg" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
+                                <span style="vertical-align: middle;">Home</span>
+                            </a></li>
+                            <li><a class="dropdown-item" href="/disclaimers">
+                                <img src="/assets/icons/disclaimers.svg" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
+                                <span style="vertical-align: middle;">Disclaimers</span>
+                            </a></li>
+                            <li><a class="dropdown-item" href="/relations">
+                                <img src="/assets/icons/relations.svg" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
+                                <span style="vertical-align: middle;">Relations</span>
+                            </a></li>
+                            <li><a class="dropdown-item" href="/terminology">
+                                <img src="/assets/icons/terminology.svg" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
+                                <span style="vertical-align: middle;">Terminology</span>
+                            </a></li>
+                            <li><hr class="dropdown-divider"></li>
+                            <li><h5 class="dropdown-header">Tools</h5></li>
+                            <li><a class="dropdown-item" href="/parser">
+                                <img src="/assets/icons/parser.svg" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
+                                <span style="vertical-align: middle;">Message Parser</span>
+                            </a></li>
+                            <li><a class="dropdown-item" href="/prefix">
+                                <img src="/assets/icons/prefix.svg" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
+                                <span style="vertical-align: middle;">Prefix Generator</span>
+                            </a></li>
+                            <li><hr class="dropdown-divider"></li>
+                            <li><h5 class="dropdown-header">Administrator</h5></li>
+                            <?php if ($isLoggedIn): ?>
+                            <li><a class="dropdown-item" href="/fronting">
+                                <img src="/assets/icons/fronting.svg" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
+                                <span style="vertical-align: middle;">Front Planner</span>
+                            </a></li>
+                            <li><a class="dropdown-item" href="/score">
+                                <img src="/assets/icons/score.svg" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
+                                <span style="vertical-align: middle;">Score System Testing</span>
+                            </a></li>
+                            <li><a class="dropdown-item" href="/logout">
+                                <img src="/assets/icons/logout.svg" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
+                                <span style="vertical-align: middle;">Logout</span>
+                            </a></li>
+                            <?php else: ?>
+                            <li><a class="dropdown-item" href="/login">
+                                <img src="/assets/icons/login.svg" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
+                                <span style="vertical-align: middle;">Login</span>
+                            </a></li>
+                            <?php endif; ?>
+                        </ul>
+                    </li>
+                    <?php if (!isset($emergencyHeader) || !$emergencyHeader): ?>
+                    <li class="nav-item dropdown">
+                        <a class="nav-link dropdown-toggle" href="/cloudburst" role="button" data-bs-toggle="dropdown">
+                            <img src="/assets/uploads/cloudburst.png" alt="" style="width:24px;vertical-align: middle;">
+                            <span style="vertical-align: middle;">Cloudburst System</span>
+                        </a>
+                        <ul class="dropdown-menu">
+                            <li><a class="dropdown-item" href="/cloudburst">
+                                <img src="/assets/icons/about.svg" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
+                                <span style="vertical-align: middle;">About us</span>
+                            </a></li>
+                            <li><hr class="dropdown-divider"></li>
+                            <li><h5 class="dropdown-header">Members (<?= count(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/ynmuc-members.json"), true)) - 1 ?>)</h5></li>
+                            <?php foreach (scoreOrder(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/ynmuc-members.json"), true), "ynmuc") as $member): if ($member['name'] !== "unknown"): ?>
+                                <li><a class="dropdown-item" href="/cloudburst/<?= $member['name'] ?>">
+                                    <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" alt="" style="width:24px;vertical-align: middle;">
+                                    <span style="vertical-align: middle;"><?= $member['display_name'] ?? $member['name'] ?></span>
+                                </a></li>
+                            <?php endif; endforeach; ?>
+                        </ul>
+                    </li>
+                    <li class="nav-item dropdown">
+                        <a class="nav-link dropdown-toggle" href="/raindrops" role="button" data-bs-toggle="dropdown">
+                            <img src="/assets/uploads/raindrops.png" alt="" style="width:24px;vertical-align: middle;">
+                            <span style="vertical-align: middle;">Raindrops System</span>
+                        </a>
+                        <ul class="dropdown-menu">
+                            <li><a class="dropdown-item" href="/raindrops">
+                                <img src="/assets/icons/about.svg" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
+                                <span style="vertical-align: middle;">About us</span>
+                            </a></li>
+                            <li><hr class="dropdown-divider"></li>
+                            <li><h5 class="dropdown-header">Members (<?= count(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/gdapd-members.json"), true)) - 1 ?>)</h5></li>
+                            <?php foreach (scoreOrder(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/gdapd-members.json"), true), "gdapd") as $member): if ($member['name'] !== "unknown"): ?>
+                                <li><a class="dropdown-item" href="/raindrops/<?= $member['name'] ?>">
+                                    <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" alt="" style="width:24px;vertical-align: middle;">
+                                    <span style="vertical-align: middle;"><?= $member['display_name'] ?? $member['name'] ?></span>
+                                </a></li>
+                            <?php endif; endforeach; ?>
+                        </ul>
+                    </li>
+                    <?php endif; ?>
+                </ul>
+            </div>
+        </div>
+    </nav>
\ No newline at end of file
-- 
cgit