summaryrefslogtreecommitdiff
path: root/includes/banner.php
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2022-08-10 00:04:25 +0200
committerMinteck <contact@minteck.org>2022-08-10 00:04:25 +0200
commit0417260bf158c5d7b62888dae2e202b0de115a05 (patch)
tree7f54ee56da118813f2d1b3a324d322d0c74fa51b /includes/banner.php
downloadpluralconnect-0417260bf158c5d7b62888dae2e202b0de115a05.tar.gz
pluralconnect-0417260bf158c5d7b62888dae2e202b0de115a05.tar.bz2
pluralconnect-0417260bf158c5d7b62888dae2e202b0de115a05.zip
Initial commit
Diffstat (limited to 'includes/banner.php')
-rw-r--r--includes/banner.php222
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)): ?>
+ &nbsp;
+ <?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