diff options
Diffstat (limited to 'includes/banner.php')
-rw-r--r-- | includes/banner.php | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/includes/banner.php b/includes/banner.php new file mode 100644 index 0000000..b5088df --- /dev/null +++ b/includes/banner.php @@ -0,0 +1,222 @@ +<?php + +global $memberData; +global $memberCommonName; +global $memberID; +global $systemCommonName; +global $systemID; +global $system; + +$subsystems = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-subsystems.json"), true) ?? []; + +function getMember(string $id) { + global $systemID; + + $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 memberPartOfSubsystem(array $member) { + global $subsystems; + $is = false; + + foreach ($subsystems as $subsystem) { + if (in_array($member["id"], $subsystem["members"])) { + $is = true; + } + } + + return $is; +} + +function getSubsystemFromMember(array $member) { + global $subsystems; + $ss = false; + + foreach ($subsystems as $subsystem) { + if (in_array($member["id"], $subsystem["members"])) { + $ss = $subsystem; + } + } + + return $ss; +} + +?> + +<style> + .bg-light, .bg-light * { + color: black !important; + } +</style> +<div id="system-info" style="border:1px solid #<?= $memberData["color"] ?>;background:rgba(255, 255, 255, .1);border-radius:10px;display:grid;grid-template-columns: 128px 1fr;"> + <div style="margin:10px;width:100%;display:flex;align-items: center;justify-content: center;"> + <img id="member-icon" src="<?= $memberData['avatar_url'] ?>" alt="" style="height:128px;border-radius:5px;"> + </div> + <div style="padding:10px 10px 10px 20px;text-align:center;"> + <h3 style="margin-bottom:0;"> + <?= $memberCommonName ?> + </h3> + <div style="margin-bottom:0.5rem;"> + <?php if ($metadata["host"] ?? false): ?> + <span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Host</b><br>This pony is the one who fronts the most often in their system." class="badge rounded-pill bg-primary">Host</span> + <?php endif; ?> + <?php if ($metadata["fictive"] ?? false): ?> + <span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Fictive</b><br>This pony is based on the personality, look and behavior of a character that is fictional in this world." class="badge rounded-pill bg-info">Fictive</span> + <?php endif; ?> + <?php if (($metadata["little"] ?? 0) === 2): ?> + <span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Little</b><br>This pony is mental younger, and therefore behaves and feels younger than the body is." class="badge rounded-pill bg-success">Little</span> + <?php endif; ?> + <?php if (($metadata["little"] ?? 0) === 1): ?> + <?php if ($metadata["regression"] !== null && $metadata["regression"] !== false): $regression = getMember($metadata["regression"]); ?> + <span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Age regressor</b><br>This pony is capable of regressing their mental age, which causes them to become <?= getMiniName($regression["display_name"] ?? $regression["name"]) ?>, temporarily behaving and feeling younger than the body is." class="badge rounded-pill bg-secondary">Age regresses into <a href="/<?= $system ?>/<?= $regression["name"] ?>"><?= getMiniName($regression["display_name"] ?? $regression["name"]) ?></a></span> + <?php else: ?> + <span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Age regressor</b><br>This pony is capable of regressing their mental age, temporarily behaving and feeling younger than the body is." class="badge rounded-pill bg-secondary">Age regressor</span> + <?php endif; ?> + <?php endif; ?> + <?php if ($metadata["median"] !== null && $metadata["median"] !== false): $source = getMember($metadata["median"]) ?> + <?php if ($metadata["little"] > 0): ?> + <span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Age regressed</b><br>This pony has regressed their mental age, making them <?= getMiniName($memberData["display_name"] ?? $memberData["name"]) ?> instead of <?= getMiniName($source["display_name"] ?? $source["name"]) ?>, temporarily behaving and feeling younger than the body is." class="badge rounded-pill bg-warning">Age regressed from <a href="/<?= $system ?>/<?= $source["name"] ?>"><?= getMiniName($source["display_name"] ?? $source["name"]) ?></a></span> + <?php else: ?> + <span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Facet</b><br>This pony is a facet of <?= getMiniName($source["display_name"] ?? $source["name"]) ?>, meaning they are not totally independent from <?= getMiniName($source["display_name"] ?? $source["name"]) ?>." class="badge rounded-pill bg-light">Facet of <a href="/<?= $system ?>/<?= $source["name"] ?>"><?= getMiniName($source["display_name"] ?? $source["name"]) ?></a></span> + <?php endif; ?> + <?php endif; ?> + <?php if ($metadata["not_talking"] ?? false): ?> + <span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Not talking</b><br>Although they are present in the system, this pony does not want to communicate with other members." class="badge rounded-pill bg-danger">Not talking</span> + <?php endif; ?> + <?php if (!($metadata["fictive"] ?? false) && !($metadata["host"] ?? false) && !($metadata["little"] ?? false) && !($metadata["not_talking"] ?? false)): ?> + + <?php endif; ?> + </div> + <div style="display:grid;grid-template-columns: repeat(<?php if (!$metadata["median"]): ?>5<?php else: ?>4<?php endif; ?>, 1fr);" id="member-card"> + <span> + <b>Prefixes: </b> + <?php $index = 0; foreach ($memberData['proxy_tags'] as $proxy): ?> + <code style="color: white;"><?= $proxy["prefix"] ?><?= $proxy["suffix"] !== "" && $proxy["suffix"] !== null ? "..." . $proxy["suffix"] : "" ?></code><?php if ($index + 2 <= count($memberData["proxy_tags"])) echo(", "); ?> + <?php $index++; endforeach; ?> + </span> + <span> + <b>Pronouns: </b> + <?= $memberData["pronouns"] ?> + </span> + <?php if (!$metadata["median"]): ?> + <span> + <b>Last fronted: </b> + <?php + + $fronters = array_map(function ($item) { + return $item["id"]; + }, json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-fronters.json"), true)["members"]); + + if (in_array($memberID, $fronters)) { + echo("Right now<br>(started <span data-bs-toggle=\"tooltip\" title=\"" . date("D j M Y, G:i:s (e)", strtotime(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-fronters.json"), true)["timestamp"])) . "\">" . trim(timeAgo(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-fronters.json"), true)["timestamp"])) . "</span>)"); + } else { + $switches = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-switches.json"), true); + + $thisMember = array_filter($switches, function ($item) { + global $memberData; + return in_array($memberData["id"], $item["members"]); + }); + $thisMember = array_values($thisMember); + $thisIndex = array_search($thisMember[0], $switches); + + $frontingStart = $thisMember[0]; + $frontingEnd = $switches[$thisIndex - 1]; + + if ($frontingEnd === null) { + echo("A long time ago<br>-"); + } else { + echo('<span data-bs-toggle="tooltip" title="' . date("D j M Y, G:i:s (e)", strtotime($frontingEnd["timestamp"])) . '">' . timeAgo($frontingEnd["timestamp"]) . '</span>'); + + $seconds = (strtotime($frontingEnd["timestamp"]) - strtotime($frontingStart["timestamp"])); + if ($seconds > 60) { + if ($seconds > 3600) { + echo("<br>(for " . round($seconds / 3600) . " hours)"); + } else { + echo("<br>(for " . round($seconds / 60) . " minutes)"); + } + } else { + echo("<br>(for " . $seconds . " seconds)"); + } + } + } + + ?> + </span> + <?php endif; ?> + <span> + <span style="vertical-align: middle;position:relative;top:-5px;"><b>Species: </b></span> + <?php foreach ($metadata["species"] ?? [] as $species): ?> + <img data-bs-toggle="tooltip" title="<?php switch ($species) { + case "earth": + echo "Earth pony"; + break; + + case "alicorn": + echo "Alicorn"; + break; + + case "pegasus": + echo "Pegasus"; + break; + + case "batpony": + echo "Bat pony"; + break; + + case "unicorn": + echo "Unicorn"; + break; + + default: + echo $species; + break; + } ?>" style="width:32px;vertical-align: middle;position:relative;top:-5px;" src="/assets/species/<?= $species ?>.png" alt="<?= $species ?>"> + <?php endforeach; ?> + </span> + <span> + <b>System: </b><a class="member-link" href="/<?= $system ?>"><img style="width:24px;border-radius:5px;" src="/assets/uploads/<?= $system ?>.png"> <?= getMiniName($systemCommonName) ?></a> + <?php if (memberPartOfSubsystem($memberData) && getSubsystemFromMember($memberData)["source_type"] !== "member"): $subsystem = getSubsystemFromMember($memberData); ?> + <br><b>Subsystem: </b><a class="member-link" href="/<?= $system ?>/-/subsystem/<?= $subsystem["source"] ?>"><img style="width:24px;border-radius:5px;" src="/assets/uploads/ss-<?= $subsystem['source'] ?>.png"> <?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-subsystem-$subsystem[source].json") ? json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-subsystem-$subsystem[source].json"), true)["name"] : $subsystem["source"] ?></a> + <?php endif; ?> + </span> + </div> + <div style="display:grid;grid-template-columns: repeat(2, 1fr);margin-top:5px;"> + <?php + + if ($memberData["name"] === "scootaloo") { + if ((int)date('j') % 2 === 0) { + $metadata["marefriends"] = array_reverse($metadata["marefriends"]); + } + } + + ?> + <span> + <b>Marefriends: </b><?= count($metadata["marefriends"]) > 1 ? '<span class="list-separator-mobile"><br></span>' : '' ?> + <?php $index = 0; foreach ($metadata["marefriends"] as $marefriend): $mfSystem = explode("/", $marefriend)[0]; $mfMemberID = explode("/", $marefriend)[1]; $mfMember = array_filter(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$mfSystem-members.json"), true), function ($item) { + global $mfMemberID; + return $item["id"] === $mfMemberID; + }); sort($mfMember); $mfMember = $mfMember[0]; ?> + <a class="member-link" href="/<?= $mfSystem === "gdapd" ? "raindrops" : "cloudburst" ?>/<?= $mfMember["name"] ?>"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $mfMember['name'] . ".png") ? "-" . $mfMember['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($mfMember["display_name"] ?? $mfMember["name"]) ?></a><?php if ($index + 2 <= count($metadata["marefriends"])) echo('<span class="list-separator-desktop">, </span><span class="list-separator-mobile"><br></span>'); ?> + <?php $index++; endforeach; ?> + <?php if (count($metadata["marefriends"]) === 0): ?>-<?php endif; ?> + </span> + <span> + <b>Sisters: </b><?= count($metadata["sisters"]) > 1 ? '<span class="list-separator-mobile"><br></span>' : '' ?> + <?php $index = 0; foreach ($metadata["sisters"] as $marefriend): $mfSystem = explode("/", $marefriend)[0]; $mfMemberID = explode("/", $marefriend)[1]; $mfMember = array_filter(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$mfSystem-members.json"), true), function ($item) { + global $mfMemberID; + return $item["id"] === $mfMemberID; + }); sort($mfMember); $mfMember = $mfMember[0]; ?> + <a class="member-link" href="/<?= $mfSystem === "gdapd" ? "raindrops" : "cloudburst" ?>/<?= $mfMember["name"] ?>"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $mfMember['name'] . ".png") ? "-" . $mfMember['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($mfMember["display_name"] ?? $mfMember["name"]) ?></a><?php if ($index + 2 <= count($metadata["sisters"])) echo('<span class="list-separator-desktop">, </span><span class="list-separator-mobile"><br></span>'); ?> + <?php $index++; endforeach; ?> + <?php if (count($metadata["sisters"]) === 0): ?>-<?php endif; ?> + </span> + </div> + </div> +</div>
\ No newline at end of file |