summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
Diffstat (limited to 'includes')
-rw-r--r--includes/banner.php167
-rw-r--r--includes/bitset.php46
-rw-r--r--includes/data.backup/gdapd-content.html1
-rw-r--r--includes/data.backup/gdapd-fronters.json1
-rw-r--r--includes/data.backup/gdapd-general.json1
-rw-r--r--includes/data.backup/gdapd-ghuln-metadata.json17
-rw-r--r--includes/data.backup/gdapd-hpwyq-metadata.json17
-rw-r--r--includes/data.backup/gdapd-khsbb-metadata.json15
-rw-r--r--includes/data.backup/gdapd-lllfw-metadata.json17
-rw-r--r--includes/data.backup/gdapd-members.json1
-rw-r--r--includes/data.backup/gdapd-nabky-content.html1
-rw-r--r--includes/data.backup/gdapd-nabky-metadata.json15
-rw-r--r--includes/data.backup/gdapd-pabmo-content.html1
-rw-r--r--includes/data.backup/gdapd-pabmo-metadata.json17
-rw-r--r--includes/data.backup/gdapd-planner.json1
-rw-r--r--includes/data.backup/gdapd-qbzxm-content.html1
-rw-r--r--includes/data.backup/gdapd-qbzxm-metadata.json17
-rw-r--r--includes/data.backup/gdapd-qraku-metadata.json17
-rw-r--r--includes/data.backup/gdapd-rirgf-content.html1
-rw-r--r--includes/data.backup/gdapd-rirgf-metadata.json15
-rw-r--r--includes/data.backup/gdapd-subsystems.json9
-rw-r--r--includes/data.backup/gdapd-switches.json1
-rw-r--r--includes/data.backup/gdapd-tfbob-content.html1
-rw-r--r--includes/data.backup/gdapd-tfbob-metadata.json17
-rw-r--r--includes/data.backup/gdapd-zajrk-metadata.json17
-rw-r--r--includes/data.backup/gdapd-ztfjz-metadata.json17
-rw-r--r--includes/data.backup/migrate.js94
-rw-r--r--includes/data.backup/refresh.json1
-rw-r--r--includes/data.backup/ynmuc-content.html1
-rw-r--r--includes/data.backup/ynmuc-erefx-content.html1
-rw-r--r--includes/data.backup/ynmuc-erefx-metadata.json19
-rw-r--r--includes/data.backup/ynmuc-erknz-metadata.json17
-rw-r--r--includes/data.backup/ynmuc-fronters.json1
-rw-r--r--includes/data.backup/ynmuc-general.json1
-rw-r--r--includes/data.backup/ynmuc-gevde-metadata.json19
-rw-r--r--includes/data.backup/ynmuc-gfhsr-content.html1
-rw-r--r--includes/data.backup/ynmuc-gfhsr-metadata.json15
-rw-r--r--includes/data.backup/ynmuc-jnbae-metadata.json17
-rw-r--r--includes/data.backup/ynmuc-kkhbw-content.html1
-rw-r--r--includes/data.backup/ynmuc-kkhbw-metadata.json18
-rw-r--r--includes/data.backup/ynmuc-members.json1
-rw-r--r--includes/data.backup/ynmuc-mglyq-content.html1
-rw-r--r--includes/data.backup/ynmuc-mglyq-metadata.json17
-rw-r--r--includes/data.backup/ynmuc-planner.json1
-rw-r--r--includes/data.backup/ynmuc-sehke-metadata.json15
-rw-r--r--includes/data.backup/ynmuc-subsystem-sparkles.html1
-rw-r--r--includes/data.backup/ynmuc-subsystem-sparkles.json3
-rw-r--r--includes/data.backup/ynmuc-subsystems.json18
-rw-r--r--includes/data.backup/ynmuc-switches.json1
-rw-r--r--includes/data.backup/ynmuc-tmgiu-metadata.json17
-rw-r--r--includes/data.backup/ynmuc-vncoa-metadata.json15
-rw-r--r--includes/data.backup/ynmuc-vvsxf-content.html1
-rw-r--r--includes/data.backup/ynmuc-vvsxf-metadata.json17
-rw-r--r--includes/data.backup/ynmuc-xbvwt-content.html1
-rw-r--r--includes/data.backup/ynmuc-xbvwt-metadata.json19
-rw-r--r--includes/data.backup/ynmuc-xcjhj-metadata.json17
-rw-r--r--includes/data.backup/ynmuc-zhtzs-content.html1
-rw-r--r--includes/data.backup/ynmuc-zhtzs-metadata.json17
-rw-r--r--includes/data.backup/ynmuc-zzise-content.html1
-rw-r--r--includes/data.backup/ynmuc-zzise-metadata.json18
-rw-r--r--includes/data.backup2/gdapd-content.html1
-rw-r--r--includes/data.backup2/gdapd-fronters.json1
-rw-r--r--includes/data.backup2/gdapd-general.json1
-rw-r--r--includes/data.backup2/gdapd-ghuln-metadata.json12
-rw-r--r--includes/data.backup2/gdapd-hpwyq-metadata.json9
-rw-r--r--includes/data.backup2/gdapd-khsbb-metadata.json7
-rw-r--r--includes/data.backup2/gdapd-lllfw-metadata.json9
-rw-r--r--includes/data.backup2/gdapd-members.json1
-rw-r--r--includes/data.backup2/gdapd-mhnqy-metadata.json7
-rw-r--r--includes/data.backup2/gdapd-nabky-content.html1
-rw-r--r--includes/data.backup2/gdapd-nabky-metadata.json7
-rw-r--r--includes/data.backup2/gdapd-pabmo-content.html1
-rw-r--r--includes/data.backup2/gdapd-pabmo-metadata.json9
-rw-r--r--includes/data.backup2/gdapd-planner.json1
-rw-r--r--includes/data.backup2/gdapd-qbzxm-content.html1
-rw-r--r--includes/data.backup2/gdapd-qbzxm-metadata.json9
-rw-r--r--includes/data.backup2/gdapd-qraku-metadata.json9
-rw-r--r--includes/data.backup2/gdapd-rirgf-content.html1
-rw-r--r--includes/data.backup2/gdapd-rirgf-metadata.json16
-rw-r--r--includes/data.backup2/gdapd-subsystems.json9
-rw-r--r--includes/data.backup2/gdapd-switches.json1
-rw-r--r--includes/data.backup2/gdapd-tfbob-content.html1
-rw-r--r--includes/data.backup2/gdapd-tfbob-metadata.json9
-rw-r--r--includes/data.backup2/gdapd-zajrk-metadata.json9
-rw-r--r--includes/data.backup2/gdapd-ztfjz-metadata.json9
-rw-r--r--includes/data.backup2/images/pf-gdapd-ghuln.webpbin5624 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-gdapd-hpwyq.webpbin3714 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-gdapd-khsbb.webpbin4354 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-gdapd-lllfw.webpbin5284 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-gdapd-pabmo.webpbin3854 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-gdapd-qbzxm.webpbin4122 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-gdapd-qraku.webpbin3946 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-gdapd-rirgf.webpbin4244 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-gdapd-tfbob.webpbin3904 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-gdapd-zajrk.webpbin3692 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-gdapd-zdtsg.webpbin2584 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-gdapd-ztfjz.webpbin3640 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-ynmuc-erefx.webpbin3540 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-ynmuc-erknz.webpbin13402 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-ynmuc-gevde.webpbin2778 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-ynmuc-gfhsr.webpbin1542 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-ynmuc-jnbae.webpbin4900 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-ynmuc-kkhbw.webpbin5768 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-ynmuc-mglyq.webpbin2344 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-ynmuc-rdstg.webpbin11036 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-ynmuc-rpjok.webpbin2292 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-ynmuc-sehke.webpbin2174 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-ynmuc-tmgiu.webpbin2746 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-ynmuc-vncoa.webpbin2170 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-ynmuc-vvsxf.webpbin1696 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-ynmuc-xbvwt.webpbin2142 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-ynmuc-xcjhj.webpbin2272 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-ynmuc-zhtzs.webpbin2800 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pf-ynmuc-zzise.webpbin1982 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-gdapd-ghuln.pngbin4717 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-gdapd-hpwyq.pngbin6408 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-gdapd-khsbb.pngbin6671 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-gdapd-lllfw.pngbin5281 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-gdapd-pabmo.pngbin5910 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-gdapd-qbzxm.pngbin5451 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-gdapd-qraku.pngbin6698 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-gdapd-rirgf.pngbin5270 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-gdapd-tfbob.pngbin6116 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-gdapd-zajrk.pngbin5675 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-gdapd-zdtsg.pngbin2572 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-gdapd-ztfjz.pngbin6446 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-ynmuc-erefx.pngbin6840 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-ynmuc-erknz.pngbin6208 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-ynmuc-gevde.pngbin5717 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-ynmuc-gfhsr.pngbin5628 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-ynmuc-jnbae.pngbin5782 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-ynmuc-kkhbw.pngbin5323 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-ynmuc-mglyq.pngbin6080 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-ynmuc-rdstg.pngbin2572 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-ynmuc-rpjok.pngbin2572 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-ynmuc-sehke.pngbin5541 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-ynmuc-tmgiu.pngbin4758 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-ynmuc-vncoa.pngbin6770 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-ynmuc-vvsxf.pngbin5949 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-ynmuc-xbvwt.pngbin5117 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-ynmuc-xcjhj.pngbin5948 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-ynmuc-zhtzs.pngbin6114 -> 0 bytes
-rw-r--r--includes/data.backup2/images/pt-ynmuc-zzise.pngbin5842 -> 0 bytes
-rwxr-xr-xincludes/data.backup2/migrate.js94
-rw-r--r--includes/data.backup2/refresh.json1
-rw-r--r--includes/data.backup2/ynmuc-content.html1
-rw-r--r--includes/data.backup2/ynmuc-erefx-content.html1
-rw-r--r--includes/data.backup2/ynmuc-erefx-metadata.json11
-rw-r--r--includes/data.backup2/ynmuc-erknz-metadata.json9
-rw-r--r--includes/data.backup2/ynmuc-fronters.json1
-rw-r--r--includes/data.backup2/ynmuc-general.json1
-rw-r--r--includes/data.backup2/ynmuc-gevde-metadata.json11
-rw-r--r--includes/data.backup2/ynmuc-gfhsr-content.html1
-rw-r--r--includes/data.backup2/ynmuc-gfhsr-metadata.json7
-rw-r--r--includes/data.backup2/ynmuc-jnbae-metadata.json9
-rw-r--r--includes/data.backup2/ynmuc-kkhbw-content.html1
-rw-r--r--includes/data.backup2/ynmuc-kkhbw-metadata.json10
-rw-r--r--includes/data.backup2/ynmuc-members.json1
-rw-r--r--includes/data.backup2/ynmuc-mglyq-content.html1
-rw-r--r--includes/data.backup2/ynmuc-mglyq-metadata.json9
-rw-r--r--includes/data.backup2/ynmuc-planner.json1
-rw-r--r--includes/data.backup2/ynmuc-rpjok-metadata.json9
-rw-r--r--includes/data.backup2/ynmuc-sehke-metadata.json7
-rw-r--r--includes/data.backup2/ynmuc-subsystem-sparkles.html1
-rw-r--r--includes/data.backup2/ynmuc-subsystem-sparkles.json3
-rw-r--r--includes/data.backup2/ynmuc-subsystems.json18
-rw-r--r--includes/data.backup2/ynmuc-switches.json1
-rw-r--r--includes/data.backup2/ynmuc-tmgiu-metadata.json12
-rw-r--r--includes/data.backup2/ynmuc-vncoa-metadata.json7
-rw-r--r--includes/data.backup2/ynmuc-vvsxf-content.html1
-rw-r--r--includes/data.backup2/ynmuc-vvsxf-metadata.json9
-rw-r--r--includes/data.backup2/ynmuc-xbvwt-content.html1
-rw-r--r--includes/data.backup2/ynmuc-xbvwt-metadata.json10
-rw-r--r--includes/data.backup2/ynmuc-xcjhj-metadata.json9
-rw-r--r--includes/data.backup2/ynmuc-xxxxx-metadata.json7
-rw-r--r--includes/data.backup2/ynmuc-zhtzs-content.html1
-rw-r--r--includes/data.backup2/ynmuc-zhtzs-metadata.json9
-rw-r--r--includes/data.backup2/ynmuc-zzise-content.html1
-rw-r--r--includes/data.backup2/ynmuc-zzise-metadata.json10
-rw-r--r--includes/emergency.php3
-rw-r--r--includes/functions.php202
-rw-r--r--includes/header.php329
-rw-r--r--includes/member.php172
-rw-r--r--includes/member/hierarchy.php207
-rw-r--r--includes/member/tree.php8
-rw-r--r--includes/planner.php32
-rw-r--r--includes/pleasure.php114
-rw-r--r--includes/pronouns.php56
-rw-r--r--includes/refresh.php12
-rw-r--r--includes/score.php6
-rw-r--r--includes/session.php16
-rw-r--r--includes/short.php47
-rw-r--r--includes/subsysbanner.php4
-rw-r--r--includes/sysbanner.php13
-rw-r--r--includes/system.php42
-rw-r--r--includes/system/compare.php54
-rw-r--r--includes/system/history.php40
-rw-r--r--includes/system/species.php18
-rw-r--r--includes/system/tree.php8
199 files changed, 1223 insertions, 1406 deletions
diff --git a/includes/banner.php b/includes/banner.php
index 48bba83..6305857 100644
--- a/includes/banner.php
+++ b/includes/banner.php
@@ -1,5 +1,6 @@
<?php
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $isLoggedIn;
require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/pronouns.php";
$travelling = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/travelling.json"), true);
@@ -102,16 +103,21 @@ function _header_getSubsystemFromMember(array $member) {
return $ss;
}
-function getMemberBannerData(string $id, string $system) {
+function getMemberBannerData(string $id, string $system, bool $french = false) {
global $subsystems;
global $travelling;
$subsystems = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$system-subsystems.json"), true) ?? [];
$member = getSystemMember($system, $id);
- $metadata = parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$system-$id-metadata.json"), true));
-
- $prn = getMemberPronouns($member['pronouns']);
+ $metadata = file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$system-$id-metadata.json") ? parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$system-$id-metadata.json"), true)) : parseMetadata([
+ "bitset" => 4196352,
+ "regression" => null,
+ "median" => null,
+ "marefriends" => [],
+ "sisters" => [],
+ "caretakers" => []
+ ]);
$prefixes = [];
foreach ($member['proxy_tags'] as $proxy) {
@@ -167,14 +173,24 @@ function getMemberBannerData(string $id, string $system) {
'timestamp' => strtotime($frontingEnd["timestamp"]),
'duration' => [
'seconds' => $seconds,
- 'pretty' => $seconds . " seconds"
+ 'pretty' => $seconds . ($french ? " secondes" : " seconds")
]
];
- if ($seconds > 60) {
- if ($seconds > 3600) {
- $lastFronted['duration']['pretty'] = round($seconds / 3600) . " hours";
- } else {
- $lastFronted['duration']['pretty'] = round($seconds / 60) . " minutes";
+ if ($french) {
+ if ($seconds > 60) {
+ if ($seconds > 3600) {
+ $lastFronted['duration']['pretty'] = round($seconds / 3600) . " heures";
+ } else {
+ $lastFronted['duration']['pretty'] = round($seconds / 60) . " minutes";
+ }
+ }
+ } else {
+ if ($seconds > 60) {
+ if ($seconds > 3600) {
+ $lastFronted['duration']['pretty'] = round($seconds / 3600) . " hours";
+ } else {
+ $lastFronted['duration']['pretty'] = round($seconds / 60) . " minutes";
+ }
}
}
}
@@ -183,21 +199,34 @@ function getMemberBannerData(string $id, string $system) {
$speciesList = [];
foreach ($metadata["species"] ?? [] as $species) {
- $name = match ($species) {
- "earth" => $metadata["robot"] ? "Robot earth pony" : "Earth pony",
- "alicorn" => $metadata["robot"] ? "Robot alicorn" : "Alicorn",
- "crystal" => $metadata["robot"] ? "Robot crystal pony" : "Crystal pony",
- "pegasus" => $metadata["robot"] ? "Robot pegasus" : "Pegasus",
- "batpony" => $metadata["robot"] ? "Robot bat pony" : "Bat pony",
- "unicorn" => $metadata["robot"] ? "Robot unicorn" : "Unicorn",
- default => $species . "_" . $metadata["robot"]
- };
+ if ($french) {
+ $name = match ($species) {
+ "earth" => $metadata["robot"] ? "Robot poney terrestre" : (!$metadata["plush"] ? "Poney terrestre" : "Poney terrestre en peluche"),
+ "alicorn" => $metadata["robot"] ? "Robot alicorne" : (!$metadata["plush"] ? "Alicorne" : "Alicorne en peluche"),
+ "crystal" => $metadata["robot"] ? "Robot poney de crystal" : (!$metadata["plush"] ? "Poney de crystal" : "Poney de crystal en peluche"),
+ "pegasus" => $metadata["robot"] ? "Robot pégase" : (!$metadata["plush"] ? "Pégase" : "Pégase en peluche"),
+ "batpony" => $metadata["robot"] ? "Robot Poney chauve souris" : (!$metadata["plush"] ? "Poney chauve souris" : "Poney chauve souris en peluche"),
+ "unicorn" => $metadata["robot"] ? "Robot licorne" : (!$metadata["plush"] ? "Licorne" : "Licorne en peluche"),
+ default => $species . "_" . $metadata["robot"]
+ };
+ } else {
+ $name = match ($species) {
+ "earth" => $metadata["robot"] ? "Robot earth pony" : (!$metadata["plush"] ? "Earth pony" : "Earth pony plush"),
+ "alicorn" => $metadata["robot"] ? "Robot alicorn" : (!$metadata["plush"] ? "Alicorn" : "Alicorn plush"),
+ "crystal" => $metadata["robot"] ? "Robot crystal pony" : (!$metadata["plush"] ? "Crystal pony" : "Crystal pony plush"),
+ "pegasus" => $metadata["robot"] ? "Robot pegasus" : (!$metadata["plush"] ? "Pegasus" : "Pegasus plush"),
+ "batpony" => $metadata["robot"] ? "Robot bat pony" : (!$metadata["plush"] ? "Bat pony" : "Bat pony plush"),
+ "unicorn" => $metadata["robot"] ? "Robot unicorn" : (!$metadata["plush"] ? "Unicorn" : "Unicorn plush"),
+ default => $species . "_" . $metadata["robot"]
+ };
+ }
$speciesList[] = [
"id" => $species,
"name" => $name,
"robot" => $metadata["robot"],
- "icon" => $species . ($metadata["robot"] ? "-robot" : "") . ".png"
+ "plush" => $metadata["plush"],
+ "icon" => $species . ($metadata["robot"] ? "-robot" : ($metadata["plush"] ? "-plush" : "")) . ".png"
];
}
@@ -239,7 +268,7 @@ function getMemberBannerData(string $id, string $system) {
$marefriends[] = [
"id" => $marefriend,
- "link" => "/" . ($mfSystem === "gdapd" ? "raindrops" : "cloudburst") . "/" . ($mfMember["name"]),
+ "link" => "/" . ($mfMember["name"]),
"icon" => "pt" . (file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $mfMember['name'] . ".png") ? "-" . $mfMember['name'] : "") . ".png",
"name" => getMiniName($mfMember["display_name"] ?? $mfMember["name"]),
"full_name" => $mfMember["display_name"] ?? $mfMember["name"]
@@ -258,7 +287,7 @@ function getMemberBannerData(string $id, string $system) {
$sisters[] = [
"id" => $marefriend,
- "link" => "/" . ($mfSystem === "gdapd" ? "raindrops" : "cloudburst") . "/" . ($mfMember["name"]),
+ "link" => "/" . ($mfMember["name"]),
"icon" => "pt" . (file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $mfMember['name'] . ".png") ? "-" . $mfMember['name'] : "") . ".png",
"name" => getMiniName($mfMember["display_name"] ?? $mfMember["name"]),
"full_name" => $mfMember["display_name"] ?? $mfMember["name"]
@@ -280,7 +309,7 @@ function getMemberBannerData(string $id, string $system) {
$caretakers[] = [
"id" => $marefriend,
- "link" => "/" . ($mfSystem === "gdapd" ? "raindrops" : "cloudburst") . "/" . ($mfMember["name"]),
+ "link" => "/" . ($mfMember["name"]),
"icon" => "pt" . (file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $mfMember['name'] . ".png") ? "-" . $mfMember['name'] : "") . ".png",
"name" => getMiniName($mfMember["display_name"] ?? $mfMember["name"]),
"full_name" => $mfMember["display_name"] ?? $mfMember["name"]
@@ -295,16 +324,44 @@ function getMemberBannerData(string $id, string $system) {
$badges[] = [
"id" => "host",
"color" => "primary",
- "html" => '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Host</b><br>' . ucfirst($prn["subjective"]) . ' ' . ($prn["third"] ? "is" : "are") . ' the one who fronts the most often in ' . $prn["possessive_det"] . ' system." class="badge rounded-pill bg-primary">Host</span>'
+ "html" => (
+ $french
+ ?
+ '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Hôte</b><br>' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' ' . (getMemberPronouns($member['pronouns'])["third"] ? "is" : "are") . ' the one who fronts the most often in ' . getMemberPronouns($member['pronouns'])["possessive_det"] . ' system." class="badge rounded-pill bg-primary">Hôte</span>'
+ :
+ '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Host</b><br>' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' ' . (getMemberPronouns($member['pronouns'])["third"] ? "is" : "are") . ' the one who fronts the most often in ' . getMemberPronouns($member['pronouns'])["possessive_det"] . ' system." class="badge rounded-pill bg-primary">Host</span>'
+ )
];
}
}
+ if (($metadata["age_spells"] ?? false) && !$french) {
+ $badges[] = [
+ "id" => "age_spells",
+ "color" => "primary",
+ "html" => '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Affected by age spells</b><br>' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' can feel younger than ' . getMemberPronouns($member['pronouns'])["subjective"] . ' actually ' . (getMemberPronouns($member['pronouns'])["third"] ? "is" : "are") . ' when somepony else casts an age spell on ' . getMemberPronouns($member['pronouns'])["object"] . '." class="badge rounded-pill" style="background-color: #6f42c1;">Affected by age spells</span>'
+ ];
+ }
+
if ($metadata["fictive"] ?? false) {
$badges[] = [
"id" => "fictive",
"color" => "info",
- "html" => '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Fictive</b><br>' . ucfirst($prn["subjective"]) . ' ' . ($prn["third"] ? "is" : "are") . ' based on the personality, look and behavior of a character that is fictional in this world." class="badge rounded-pill bg-info">Fictive</span>'
+ "html" => (
+ $french
+ ?
+ '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Fictive</b><br>' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' ' . (getMemberPronouns($member['pronouns'])["third"] ? "is" : "are") . ' based on the personality, look and behavior of a character that is fictional in this world." class="badge rounded-pill bg-info">Fictive</span>'
+ :
+ '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Fictive</b><br>' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' ' . (getMemberPronouns($member['pronouns'])["third"] ? "is" : "are") . ' based on the personality, look and behavior of a character that is fictional in this world." class="badge rounded-pill bg-info">Fictive</span>'
+ )
+ ];
+ }
+
+ if ($member["name"] === "fusion") {
+ $badges[] = [
+ "id" => "fusion",
+ "color" => "d63384",
+ "html" => '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Fusion</b><br>She is the result of multiple ponies purposefully merging in a way that makes them impossible to tell apart." class="badge rounded-pill" style="background-color:#d63384;">Fusion</span>'
];
}
@@ -312,7 +369,13 @@ function getMemberBannerData(string $id, string $system) {
$badges[] = [
"id" => "protector",
"color" => "black",
- "html" => '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Protector</b><br>' . ucfirst($prn["subjective"]) . ' ' . ($prn["third"] ? "is" : "are") . ' a protector in the system and will front when somepony cannot handle it anymore." class="badge rounded-pill bg-black">Protector</span>'
+ "html" => (
+ $french
+ ?
+ '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>' . (getMemberPronouns($member['pronouns'])["gender"] === "female" ? "Protectrice" : (getMemberPronouns($member['pronouns'])["gender"] === "male" ? "Protecteur" : "Protecteur·ice")) . '</b><br>' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' ' . (getMemberPronouns($member['pronouns'])["third"] ? "is" : "are") . ' a protector in the system and will front when somepony cannot handle it anymore." class="badge rounded-pill bg-black">' . (getMemberPronouns($member['pronouns'])["gender"] === "female" ? "Protectrice" : (getMemberPronouns($member['pronouns'])["gender"] === "male" ? "Protecteur" : "Protecteur·ice")) . '</span>'
+ :
+ '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Protector</b><br>' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' ' . (getMemberPronouns($member['pronouns'])["third"] ? "is" : "are") . ' a protector in the system and will front when somepony cannot handle it anymore." class="badge rounded-pill bg-black">Protector</span>'
+ )
];
}
@@ -320,7 +383,13 @@ function getMemberBannerData(string $id, string $system) {
$badges[] = [
"id" => "little",
"color" => "success",
- "html" => '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Little</b><br>' . ucfirst($prn["subjective"]) . ' ' . ($prn["third"] ? "is" : "are") . ' mentally younger, and therefore behaves and feels younger than the body is." class="badge rounded-pill bg-success">Little</span>'
+ "html" => (
+ $french
+ ?
+ '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Petit' . (getMemberPronouns($member['pronouns'])["gender"] === "female" ? "e" : (getMemberPronouns($member['pronouns'])["gender"] === "male" ? "" : "·e")) . '</b><br>' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' ' . (getMemberPronouns($member['pronouns'])["third"] ? "is" : "are") . ' mentally younger, and therefore behaves and feels younger than the body is." class="badge rounded-pill bg-success">Petit' . (getMemberPronouns($member['pronouns'])["gender"] === "female" ? "e" : (getMemberPronouns($member['pronouns'])["gender"] === "male" ? "" : "·e")) . '</span>'
+ :
+ '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Little</b><br>' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' ' . (getMemberPronouns($member['pronouns'])["third"] ? "is" : "are") . ' mentally younger, and therefore behaves and feels younger than the body is." class="badge rounded-pill bg-success">Little</span>'
+ )
];
}
@@ -328,7 +397,13 @@ function getMemberBannerData(string $id, string $system) {
$badges[] = [
"id" => "younger",
"color" => "dark",
- "html" => '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Younger</b><br>' . ucfirst($prn["subjective"]) . ' ' . ($prn["third"] ? "is" : "are") . ' younger than the body, but not young enough to be classified as a little." class="badge rounded-pill bg-dark">Younger</span>'
+ "html" => (
+ $french
+ ?
+ '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Plus jeune</b><br>' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' ' . (getMemberPronouns($member['pronouns'])["third"] ? "is" : "are") . ' younger than the body, but not young enough to be classified as a little." class="badge rounded-pill bg-dark">Plus jeune</span>'
+ :
+ '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Younger</b><br>' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' ' . (getMemberPronouns($member['pronouns'])["third"] ? "is" : "are") . ' younger than the body, but not young enough to be classified as a little." class="badge rounded-pill bg-dark">Younger</span>'
+ )
];
}
@@ -338,13 +413,25 @@ function getMemberBannerData(string $id, string $system) {
$badges[] = [
"id" => "regressor_median",
"color" => "secondary",
- "html" => '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Age regressor</b><br>' . ucfirst($prn["subjective"]) . ' ' . ($prn["third"] ? "is" : "are") . ' capable of regressing ' . $prn["possessive_det"] . ' mental age, which causes ' . $prn["object"] . ' 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 === "gdapd" ? "raindrops" : "cloudburst") . '/' . $regression["name"] . '">'. (getMiniName($regression["display_name"] ?? $regression["name"])) . '</a></span>'
+ "html" => (
+ $french
+ ?
+ '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Régresseur d\'âge</b><br>' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' ' . (getMemberPronouns($member['pronouns'])["third"] ? "is" : "are") . ' capable of regressing ' . getMemberPronouns($member['pronouns'])["possessive_det"] . ' mental age, which causes ' . getMemberPronouns($member['pronouns'])["object"] . ' to become ' . (getMiniName($regression["display_name"] ?? $regression["name"])) . ', temporarily behaving and feeling younger than the body is." class="badge rounded-pill bg-secondary">Régresse en âge en <a href="/' . $regression["name"] . '">'. (getMiniName($regression["display_name"] ?? $regression["name"])) . '</a></span>'
+ :
+ '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Age regressor</b><br>' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' ' . (getMemberPronouns($member['pronouns'])["third"] ? "is" : "are") . ' capable of regressing ' . getMemberPronouns($member['pronouns'])["possessive_det"] . ' mental age, which causes ' . getMemberPronouns($member['pronouns'])["object"] . ' 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="/' . $regression["name"] . '">'. (getMiniName($regression["display_name"] ?? $regression["name"])) . '</a></span>'
+ )
];
} else {
$badges[] = [
"id" => "regressor",
"color" => "secondary",
- "html" => '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Age regressor</b><br>' . ucfirst($prn["subjective"]) . ' ' . ($prn["third"] ? "is" : "are") . ' capable of regressing ' . $prn["possessive_det"] . ' mental age, temporarily behaving and feeling younger than the body is." class="badge rounded-pill bg-secondary">Age regressor</span>'
+ "html" => (
+ $french
+ ?
+ '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Régresseur d\'âge</b><br>' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' ' . (getMemberPronouns($member['pronouns'])["third"] ? "is" : "are") . ' capable of regressing ' . getMemberPronouns($member['pronouns'])["possessive_det"] . ' mental age, temporarily behaving and feeling younger than the body is." class="badge rounded-pill bg-secondary">Régresseur d\'âge</span>'
+ :
+ '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Age regressor</b><br>' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' ' . (getMemberPronouns($member['pronouns'])["third"] ? "is" : "are") . ' capable of regressing ' . getMemberPronouns($member['pronouns'])["possessive_det"] . ' mental age, temporarily behaving and feeling younger than the body is." class="badge rounded-pill bg-secondary">Age regressor</span>'
+ )
];
}
}
@@ -355,13 +442,25 @@ function getMemberBannerData(string $id, string $system) {
$badges[] = [
"id" => "regressed",
"color" => "warning",
- "html" => '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Age regressed</b><br>' . ucfirst($prn["subjective"]) . ' has regressed ' . $prn["possessive_det"] . ' mental age, making ' . $prn["object"] . ' ' . getMiniName($member["display_name"] ?? $member["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 === "gdapd" ? "raindrops" : "cloudburst") . '/' . $source["name"] . '">' . (getMiniName($source["display_name"] ?? $source["name"])) . '</a></span>'
+ "html" => (
+ $french
+ ?
+ '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Régressée en âge</b><br>' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' has regressed ' . getMemberPronouns($member['pronouns'])["possessive_det"] . ' mental age, making ' . getMemberPronouns($member['pronouns'])["object"] . ' ' . getMiniName($member["display_name"] ?? $member["name"]) . ' instead of ' . (getMiniName($source["display_name"] ?? $source["name"])) . ', temporarily behaving and feeling younger than the body is." class="badge rounded-pill bg-warning">Régressé en âge de <a href="/' . $source["name"] . '">' . (getMiniName($source["display_name"] ?? $source["name"])) . '</a></span>'
+ :
+ '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Age regressed</b><br>' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' has regressed ' . getMemberPronouns($member['pronouns'])["possessive_det"] . ' mental age, making ' . getMemberPronouns($member['pronouns'])["object"] . ' ' . getMiniName($member["display_name"] ?? $member["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="/' . $source["name"] . '">' . (getMiniName($source["display_name"] ?? $source["name"])) . '</a></span>'
+ )
];
} else {
$badges[] = [
"id" => "facet",
"color" => "light",
- "html" => '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Facet</b><br>' . ucfirst($prn["subjective"]) . ' is a facet of ' . getMiniName($source["display_name"] ?? $source["name"]) . ', meaning ' . $prn["subjective"] . ' ' . ($prn["third"] ? "is" : "are") . ' not totally independent of ' . getMiniName($source["display_name"] ?? $source["name"]) . '." class="badge rounded-pill bg-light">Facet of <a href="/' . ($system === "gdapd" ? "raindrops" : "cloudburst") . '/' . $source["name"] . '">' . getMiniName($source["display_name"] ?? $source["name"]) . '</a></span>'
+ "html" => (
+ $french
+ ?
+ '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Facette</b><br>' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' is a facet of ' . getMiniName($source["display_name"] ?? $source["name"]) . ', meaning ' . getMemberPronouns($member['pronouns'])["subjective"] . ' ' . (getMemberPronouns($member['pronouns'])["third"] ? "is" : "are") . ' not totally independent of ' . getMiniName($source["display_name"] ?? $source["name"]) . '." class="badge rounded-pill bg-light">Facette de <a href="/' . $source["name"] . '">' . getMiniName($source["display_name"] ?? $source["name"]) . '</a></span>'
+ :
+ '<span data-bs-toggle="tooltip" data-bs-html="true" title="<b>Facet</b><br>' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' is a facet of ' . getMiniName($source["display_name"] ?? $source["name"]) . ', meaning ' . getMemberPronouns($member['pronouns'])["subjective"] . ' ' . (getMemberPronouns($member['pronouns'])["third"] ? "is" : "are") . ' not totally independent of ' . getMiniName($source["display_name"] ?? $source["name"]) . '." class="badge rounded-pill bg-light">Facet of <a href="/' . $source["name"] . '">' . getMiniName($source["display_name"] ?? $source["name"]) . '</a></span>'
+ )
];
}
}
@@ -378,8 +477,8 @@ function getMemberBannerData(string $id, string $system) {
'name' => $member["display_name"] ?? $member["name"],
'badges' => $badges,
'prefixes' => $prefixes,
- 'pronouns' => getTooltipsFromMark($member["pronouns"]) ?? "<span data-bs-toggle='tooltip' title='Pronouns not specified' class='text-muted'>she/her</span>",
- 'pronouns_usage' => $prn,
+ 'pronouns' => getTooltipsFromMark($member["pronouns"], $french) ?? "<span data-bs-toggle='tooltip' title='Pronouns not specified' class='text-muted'>she/her</span>",
+ 'pronouns_usage' => getMemberPronouns($member['pronouns']),
'last_fronted' => $lastFronted,
'species' => $speciesList,
'system' => $systemData,
diff --git a/includes/bitset.php b/includes/bitset.php
index 272325a..6483669 100644
--- a/includes/bitset.php
+++ b/includes/bitset.php
@@ -1,18 +1,24 @@
<?php
function parseBitset ($bitset) {
- $bin = str_repeat("0", 24 - strlen(decbin($bitset))) . decbin($bitset);
+ $bin = str_repeat("0", 48 - strlen(decbin($bitset))) . decbin($bitset);
- $sharedMemory = bindec(substr($bin, 0, 2));
- $median = substr($bin, 2, 1) !== "0";
- $little = bindec(substr($bin, 3, 2));
- $protector = substr($bin, 5, 1) !== "0";
- $fictive = substr($bin, 6, 1) !== "0";
- $notTalking = substr($bin, 7, 1) !== "0";
- $host = substr($bin, 8, 1) !== "0";
- $robot = substr($bin, 21, 1) !== "0";
- $species1 = substr($bin, 9, 4);
- $species2 = substr($bin, 13, 4);
+ $sharedMemory = bindec(substr($bin, 8 + 16, 2));
+ $median = substr($bin, 10 + 16, 1) !== "0";
+ $little = bindec(substr($bin, 11 + 16, 2));
+ $food = bindec(substr($bin, 16, 2));
+ $magic = bindec(substr($bin, 2 + 16, 3));
+ $sensitivity = bindec(substr($bin, 5 + 16, 3));
+ $protector = substr($bin, 13 + 16, 1) !== "0";
+ $fictive = substr($bin, 14 + 16, 1) !== "0";
+ $notTalking = substr($bin, 15 + 16, 1) !== "0";
+ $host = substr($bin, 16 + 16, 1) !== "0";
+ $robot = substr($bin, 29 + 16, 1) !== "0";
+ $plush = substr($bin, 30 + 16, 1) !== "0";
+ $age = substr($bin, 31 + 16, 1) !== "0";
+ $species1 = substr($bin, 17 + 16, 4);
+ $species2 = substr($bin, 21 + 16, 4);
+ $species3 = substr($bin, 25 + 16, 4);
$species1 = match ($species1) {
"0001" => "earth",
@@ -34,6 +40,16 @@ function parseBitset ($bitset) {
default => null,
};
+ $species3 = match ($species3) {
+ "0001" => "earth",
+ "0010" => "unicorn",
+ "0011" => "pegasus",
+ "0100" => "alicorn",
+ "0101" => "batpony",
+ "0110" => "crystal",
+ default => null,
+ };
+
return [
'shared_memory' => $sharedMemory,
'median' => $median,
@@ -43,9 +59,15 @@ function parseBitset ($bitset) {
'not_talking' => $notTalking,
'host' => $host,
'robot' => $robot,
+ 'magic' => $magic,
+ 'sensitivity' => $sensitivity,
+ 'food' => $food,
+ 'plush' => $plush,
+ 'age_spells' => $age,
'species' => array_filter([
$species1,
- $species2
+ $species2,
+ $species3
], function ($i) {
return isset($i);
})
diff --git a/includes/data.backup/gdapd-content.html b/includes/data.backup/gdapd-content.html
deleted file mode 100644
index 47ab5c6..0000000
--- a/includes/data.backup/gdapd-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>A description would be inserted here by some member of the Raindrops System.</p> \ No newline at end of file
diff --git a/includes/data.backup/gdapd-fronters.json b/includes/data.backup/gdapd-fronters.json
deleted file mode 100644
index d49deb7..0000000
--- a/includes/data.backup/gdapd-fronters.json
+++ /dev/null
@@ -1 +0,0 @@
-{"id":"0eb51883-833d-4a0c-8b3f-9baa17738d20","timestamp":"2022-08-07T21:40:14.401648Z","members":[{"id":"rirgf","uuid":"be0dbae7-11c8-4629-a610-815d71d2131b","name":"scootaloo","display_name":"Scoots/Mia","color":"fea439","birthday":null,"pronouns":"she/pony","avatar_url":"https://cdn.discordapp.com/attachments/1001209923213996072/1004449382181122078/final.png","banner":null,"description":null,"created":"2022-04-08T16:43:16.440878Z","keep_proxy":false,"proxy_tags":[{"prefix":"s.","suffix":null}],"privacy":null}]} \ No newline at end of file
diff --git a/includes/data.backup/gdapd-general.json b/includes/data.backup/gdapd-general.json
deleted file mode 100644
index 21f6d7f..0000000
--- a/includes/data.backup/gdapd-general.json
+++ /dev/null
@@ -1 +0,0 @@
-{"id":"gdapd","uuid":"7d9f543e-f742-40f6-9d07-86c3f2983124","name":"Raindrops System","description":"**\"gonna be-gonna be-gonna be my day!\"**\nWe have absolutely no clue what type of system we are (and honestly we don't want to know), we just know it's plurality!\n(description stolen from our friends in the Cloudburst System)","tag":"(Raindrops System)","pronouns":null,"avatar_url":"https://cdn.discordapp.com/attachments/969995660063563807/989632412067696702/system.png","banner":null,"color":null,"created":"2022-04-08T16:43:05.309423Z","privacy":null} \ No newline at end of file
diff --git a/includes/data.backup/gdapd-ghuln-metadata.json b/includes/data.backup/gdapd-ghuln-metadata.json
deleted file mode 100644
index d611a44..0000000
--- a/includes/data.backup/gdapd-ghuln-metadata.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "shared_memory": 1,
- "median": "rirgf",
- "regression": null,
- "protector": false,
- "fictive": true,
- "little": 2,
- "not_talking": false,
- "host": false,
- "species": [
- "pegasus"
- ],
- "marefriends": [
- "ynmuc/tmgiu"
- ],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup/gdapd-hpwyq-metadata.json b/includes/data.backup/gdapd-hpwyq-metadata.json
deleted file mode 100644
index cc8f4f6..0000000
--- a/includes/data.backup/gdapd-hpwyq-metadata.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "shared_memory": 2,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": false,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "crystal"
- ],
- "marefriends": [
- "ynmuc/kkhbw"
- ],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup/gdapd-khsbb-metadata.json b/includes/data.backup/gdapd-khsbb-metadata.json
deleted file mode 100644
index b0cf1a2..0000000
--- a/includes/data.backup/gdapd-khsbb-metadata.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "shared_memory": 0,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": true,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "earth"
- ],
- "marefriends": [],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup/gdapd-lllfw-metadata.json b/includes/data.backup/gdapd-lllfw-metadata.json
deleted file mode 100644
index 12eeca0..0000000
--- a/includes/data.backup/gdapd-lllfw-metadata.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "shared_memory": 0,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": true,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "pegasus"
- ],
- "marefriends": [
- "ynmuc/zzise"
- ],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup/gdapd-members.json b/includes/data.backup/gdapd-members.json
deleted file mode 100644
index bceedfa..0000000
--- a/includes/data.backup/gdapd-members.json
+++ /dev/null
@@ -1 +0,0 @@
-[{"id":"ghuln","uuid":"c70080fb-8753-4a9d-a812-f960666a77ab","name":"smolscoots","display_name":"Filly Scoots","color":"bf5e94","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/1001209923213996072/1005906858076282972/4020373__safe_artist-colon-kqaii_character-colon-scootaloo_species-colon-pegasus_species-colon-pony_g4_cherry_cute_cutealoo_drink_eyeclippingthroughhair_eyeb.jpg","banner":null,"description":null,"created":"2022-08-06T19:21:20.641634Z","keep_proxy":false,"proxy_tags":[{"prefix":"fi.","suffix":null}],"privacy":null},{"id":"ztfjz","uuid":"5ca268af-06ef-42af-9613-3e24c3552d72","name":"stuffie","display_name":"Stuffie","color":"9069d9","birthday":null,"pronouns":"it/its","avatar_url":"https://cdn.discordapp.com/attachments/1001209923213996072/1004527634832703548/stuffie.png","banner":null,"description":null,"created":"2022-08-03T23:10:01.420647Z","keep_proxy":false,"proxy_tags":[{"prefix":"f.","suffix":null}],"privacy":null},{"id":"lllfw","uuid":"477c7f1b-547f-476d-91f5-90cf16eeea10","name":"zipp","display_name":"Zipp Storm","color":"feedfe","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/1001209923213996072/1003661213676339281/4020729__safe_artist-colon-ninnydraws_character-colon-zippstorm_species-colon-pegasus_species-colon-pony_g5_abstractbackground_adorazipp_blushing_cloud_colore.png","banner":null,"description":null,"created":"2022-04-11T20:56:10.488905Z","keep_proxy":false,"proxy_tags":[{"prefix":"z.","suffix":null}],"privacy":null},{"id":"qraku","uuid":"6d178626-866d-4cd4-96c9-99120dd3f927","name":"starrynight","display_name":"Starry Night","color":"8fa2ff","birthday":null,"pronouns":"she/pony","avatar_url":"https://cdn.discordapp.com/attachments/1001054399843541035/1002349883153457254/aa.png","banner":null,"description":null,"created":"2022-07-28T22:59:28.759014Z","keep_proxy":false,"proxy_tags":[{"prefix":"st.","suffix":null}],"privacy":null},{"id":"tfbob","uuid":"836fb0f7-35ce-4c74-927d-a578fc4f9cd3","name":"violet","display_name":"Violet Dawn","color":"e7e27e","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/969995660063563807/1000755118356054137/PT_Violet_copy.png","banner":null,"description":null,"created":"2022-07-24T13:18:23.34571Z","keep_proxy":false,"proxy_tags":[{"prefix":"v.","suffix":null}],"privacy":null},{"id":"qbzxm","uuid":"4f9b04df-0789-4729-bca3-c37c79d92f16","name":"minty","display_name":"Minty","color":"a4febe","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/871135099947741227/965236837847273482/1Minty_in_Sundae_Sundae_Sundae_MLPS5_copy.png","banner":null,"description":null,"created":"2022-04-08T16:43:20.621455Z","keep_proxy":false,"proxy_tags":[{"prefix":"m.","suffix":null}],"privacy":null},{"id":"pabmo","uuid":"602683be-8135-4a00-ae2b-239fe46c6bfc","name":"babs","display_name":"Babs Seed","color":"d69d46","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/983706729659387924/987267468181532672/babs.png","banner":null,"description":null,"created":"2022-06-17T08:00:44.14581Z","keep_proxy":false,"proxy_tags":[{"prefix":"b.","suffix":null}],"privacy":null},{"id":"nabky","uuid":"b8b13183-8d8d-4440-8bb1-bddcec34b4ff","name":"lyra","display_name":"Lyra","color":"99ffdf","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/871135099947741227/965237015408955432/1The_ponies_are_jumping_on_rooftops_S2E18_copy.png","banner":null,"description":null,"created":"2022-04-09T06:58:04.501701Z","keep_proxy":false,"proxy_tags":[{"prefix":"l.","suffix":null}],"privacy":null},{"id":"zdtsg","uuid":"f4d41b23-deb4-4501-b193-768fe5e56337","name":"unknown","display_name":"Unknown","color":"cccccc","birthday":null,"pronouns":"best to ask","avatar_url":"https://cdn.discordapp.com/attachments/996402620975562905/1001041785134518433/pony-town-Unknown_pony-stand-16x_copy.png","banner":null,"description":null,"created":"2022-07-21T20:55:06.06549Z","keep_proxy":false,"proxy_tags":[{"prefix":"{","suffix":"}"}],"privacy":null},{"id":"rirgf","uuid":"be0dbae7-11c8-4629-a610-815d71d2131b","name":"scootaloo","display_name":"Scoots/Mia","color":"fea439","birthday":null,"pronouns":"she/pony","avatar_url":"https://cdn.discordapp.com/attachments/1001209923213996072/1004449382181122078/final.png","banner":null,"description":null,"created":"2022-04-08T16:43:16.440878Z","keep_proxy":false,"proxy_tags":[{"prefix":"s.","suffix":null}],"privacy":null},{"id":"zajrk","uuid":"5ddf123d-40ba-49fb-81b9-8d77728dbb3a","name":"mossystorm","display_name":"Mossy Storm","color":"9eff95","birthday":null,"pronouns":"she/they","avatar_url":"https://cdn.discordapp.com/attachments/969995660063563807/997577513066831933/mossy.png","banner":null,"description":null,"created":"2022-07-15T18:55:35.694303Z","keep_proxy":false,"proxy_tags":[{"prefix":"t.","suffix":null}],"privacy":null}] \ No newline at end of file
diff --git a/includes/data.backup/gdapd-nabky-content.html b/includes/data.backup/gdapd-nabky-content.html
deleted file mode 100644
index 8df6b9c..0000000
--- a/includes/data.backup/gdapd-nabky-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p><span style="color:rgb(255,255,255);">even though i'm here and chilling, it's very draining for my headmates to communicate with me, so please try to avoid talking with me. thanks! (also i don't like fronting)</span></p> \ No newline at end of file
diff --git a/includes/data.backup/gdapd-nabky-metadata.json b/includes/data.backup/gdapd-nabky-metadata.json
deleted file mode 100644
index b625c8a..0000000
--- a/includes/data.backup/gdapd-nabky-metadata.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "shared_memory": 2,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": false,
- "little": 0,
- "not_talking": true,
- "host": false,
- "species": [
- "unicorn"
- ],
- "marefriends": [],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup/gdapd-pabmo-content.html b/includes/data.backup/gdapd-pabmo-content.html
deleted file mode 100644
index 6796cec..0000000
--- a/includes/data.backup/gdapd-pabmo-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p><span style="color:rgb(255,255,255);">hi!!! i like to call scoots mom because this is what she is, and i love sweetie belle cos she is cute &lt;3</span></p> \ No newline at end of file
diff --git a/includes/data.backup/gdapd-pabmo-metadata.json b/includes/data.backup/gdapd-pabmo-metadata.json
deleted file mode 100644
index 71b6b88..0000000
--- a/includes/data.backup/gdapd-pabmo-metadata.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "shared_memory": 1,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": true,
- "little": 2,
- "not_talking": false,
- "host": false,
- "species": [
- "earth"
- ],
- "marefriends": [
- "ynmuc/gevde"
- ],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup/gdapd-planner.json b/includes/data.backup/gdapd-planner.json
deleted file mode 100644
index a79adba..0000000
--- a/includes/data.backup/gdapd-planner.json
+++ /dev/null
@@ -1 +0,0 @@
-{"2022-08-08":["rirgf"],"2022-08-09":["pabmo","qbzxm","ztfjz","lllfw"],"2022-08-10":[],"2022-08-11":[],"2022-08-12":[],"2022-08-13":[],"2022-08-14":[]} \ No newline at end of file
diff --git a/includes/data.backup/gdapd-qbzxm-content.html b/includes/data.backup/gdapd-qbzxm-content.html
deleted file mode 100644
index 90e39f1..0000000
--- a/includes/data.backup/gdapd-qbzxm-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>Hello there, I'm Minty (not a fictive though)! I'm a member in the Raindrops System.</p><p>I... don't really have much to say here, I guess I can say I'm the... second host? Like I'm the one to front the most often after Scoots.</p><p>See ya!</p> \ No newline at end of file
diff --git a/includes/data.backup/gdapd-qbzxm-metadata.json b/includes/data.backup/gdapd-qbzxm-metadata.json
deleted file mode 100644
index 574370e..0000000
--- a/includes/data.backup/gdapd-qbzxm-metadata.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "shared_memory": 2,
- "median": false,
- "regression": null,
- "protector": true,
- "fictive": false,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "earth"
- ],
- "marefriends": [
- "ynmuc/erknz"
- ],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup/gdapd-qraku-metadata.json b/includes/data.backup/gdapd-qraku-metadata.json
deleted file mode 100644
index f55873f..0000000
--- a/includes/data.backup/gdapd-qraku-metadata.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "shared_memory": 2,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": false,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "unicorn"
- ],
- "marefriends": [
- "ynmuc/xcjhj"
- ],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup/gdapd-rirgf-content.html b/includes/data.backup/gdapd-rirgf-content.html
deleted file mode 100644
index 5d41c45..0000000
--- a/includes/data.backup/gdapd-rirgf-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>Hey there!</p><p>My name is Scootaloo, and I am the host of the Raindrops System. We became plural "by accident" after I had to deal with high stress. <a href="/raindrops/minty">Minty</a> formed first and then others came; and now we're living happily! <a href="/page/raindrops/babs">Babs</a> is our little last one and she is cute.</p><p>Besides that, I don't really have much to say... Oh yeah, I'm also an alicorn; I became one after <a href="/page/cloudburst/sunnystarscout">Sunny</a> turned me into one!</p><p>Scootaloo scoot scoot scoot scootaloo</p> \ No newline at end of file
diff --git a/includes/data.backup/gdapd-rirgf-metadata.json b/includes/data.backup/gdapd-rirgf-metadata.json
deleted file mode 100644
index 3fa70c5..0000000
--- a/includes/data.backup/gdapd-rirgf-metadata.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "bitset": 9085312,
- "regression": "ghuln",
- "marefriends": [
- "ynmuc/kkhbw",
- "ynmuc/xbvwt"
- ],
- "sisters": [
- "ynmuc/erefx",
- "ynmuc/zhtzs",
- "ynmuc/gevde",
- "ynmuc/jnbae"
- ],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup/gdapd-subsystems.json b/includes/data.backup/gdapd-subsystems.json
deleted file mode 100644
index d640e4a..0000000
--- a/includes/data.backup/gdapd-subsystems.json
+++ /dev/null
@@ -1,9 +0,0 @@
-[
- {
- "source": "rirgf",
- "source_type": "member",
- "members": [
- "ghuln"
- ]
- }
-] \ No newline at end of file
diff --git a/includes/data.backup/gdapd-switches.json b/includes/data.backup/gdapd-switches.json
deleted file mode 100644
index 6544d1e..0000000
--- a/includes/data.backup/gdapd-switches.json
+++ /dev/null
@@ -1 +0,0 @@
-[{"id":"0eb51883-833d-4a0c-8b3f-9baa17738d20","timestamp":"2022-08-07T21:40:14.401648Z","members":["rirgf"]},{"id":"cf244a4f-c224-47a2-b0f2-8c94252f002a","timestamp":"2022-08-07T17:48:24.086037Z","members":["qraku"]},{"id":"3faf8e32-8270-418f-bdf4-5d309df1dc93","timestamp":"2022-08-06T17:29:22.598734Z","members":["rirgf"]},{"id":"65729cea-2351-45ed-a892-fe3719824b9b","timestamp":"2022-08-06T11:50:54.921437Z","members":["zajrk"]},{"id":"ad3b3d51-417c-4d7f-bbb0-3d788ea357ad","timestamp":"2022-08-05T21:07:14.043973Z","members":["tfbob"]},{"id":"f79729b4-1d7c-49fe-b4fa-f0a7dd39b53c","timestamp":"2022-08-05T20:48:10.001822Z","members":["qbzxm"]},{"id":"82321da0-ffa7-4635-b3d2-0b5f1ec9d9ce","timestamp":"2022-08-04T22:37:33.586985Z","members":["rirgf"]},{"id":"67c7eee0-0bfa-40f4-bac8-cfae90fcaaf0","timestamp":"2022-08-04T18:43:23.315562Z","members":["qbzxm"]},{"id":"3b25583f-1b1f-4ad3-ae93-407576994f92","timestamp":"2022-08-04T10:05:14.051056Z","members":["rirgf"]},{"id":"bc8d3507-17d1-4df7-8845-81f9a4843b45","timestamp":"2022-08-03T22:17:42.734142Z","members":["ztfjz"]},{"id":"4964e024-57a3-4b3f-9aef-e83fbdad0607","timestamp":"2022-08-01T20:11:28.55833Z","members":["rirgf"]},{"id":"fed1552f-e599-4ffe-b07b-907004ac4ab1","timestamp":"2022-08-01T20:04:25.509838Z","members":["pabmo"]},{"id":"d5b3828d-56e5-49ad-bd88-5029f5d7b22b","timestamp":"2022-08-01T19:43:48.588965Z","members":["rirgf"]},{"id":"ce44d6af-f0ae-4cb8-96a9-fe098eb46c6e","timestamp":"2022-08-01T19:01:29.115782Z","members":["qbzxm"]},{"id":"a6f6c503-8bb7-425e-a4e7-8866a79aee7b","timestamp":"2022-08-01T14:05:00.315012Z","members":["rirgf"]},{"id":"27845666-2a76-4d13-8a9d-5c17710fa370","timestamp":"2022-08-01T12:26:15.568718Z","members":["lllfw"]},{"id":"52ce7c22-a545-47ed-922f-8963c11a5ea2","timestamp":"2022-07-31T21:19:59.722328Z","members":["rirgf"]},{"id":"4272500e-7642-4d3d-8358-5ac3974f4fff","timestamp":"2022-07-31T17:06:55.285503Z","members":["qbzxm"]},{"id":"c4763a2f-b9a1-4b50-b2a9-071c38d72f02","timestamp":"2022-07-31T08:05:43.313585Z","members":["rirgf"]},{"id":"21ac816a-e8b1-426f-93ad-fc0df3c0530b","timestamp":"2022-07-30T20:22:25.228871Z","members":["qbzxm"]},{"id":"25445dd3-8ac7-404c-a52e-dad17da18ede","timestamp":"2022-07-29T20:14:19.761376Z","members":["qraku"]},{"id":"7040be4e-6f03-4138-99fe-16056fe5e576","timestamp":"2022-07-29T09:09:09.176402Z","members":["rirgf"]},{"id":"ef79772b-349c-4cc3-bbde-368a6ac2550c","timestamp":"2022-07-28T22:59:36.510106Z","members":["qraku"]},{"id":"fc93240f-d6f2-4bab-a069-e0c9981d2785","timestamp":"2022-07-28T21:52:05.87279Z","members":["zdtsg"]},{"id":"3126221d-1144-46ab-9c46-6e291b529556","timestamp":"2022-07-28T19:55:12.081418Z","members":["rirgf"]},{"id":"d4f080c6-4b1f-4089-9b89-88cf22d0f353","timestamp":"2022-07-28T18:06:22.938226Z","members":["tfbob"]},{"id":"43d22b42-7c2b-446e-a3d1-b957b7d9c712","timestamp":"2022-07-28T05:25:56.910286Z","members":["rirgf"]},{"id":"1715e122-4131-4085-bec2-6e2c0f149940","timestamp":"2022-07-27T21:42:13.259365Z","members":["pabmo"]},{"id":"f0b37bca-16c3-4698-b4be-7ec4afff2dc5","timestamp":"2022-07-27T18:46:36.560704Z","members":["rirgf"]},{"id":"c75db3f3-634a-4505-957b-cb423be0ad13","timestamp":"2022-07-27T16:12:22.243247Z","members":["zajrk"]},{"id":"b6c23549-5bc1-4e90-8fa4-48da5fc3b20b","timestamp":"2022-07-27T10:09:31.651745Z","members":["qbzxm"]},{"id":"20cee1ba-0a68-4c48-8485-849e2dc4e157","timestamp":"2022-07-26T21:04:51.450343Z","members":["rirgf"]},{"id":"1757ad08-90a6-4e82-b63d-afdfa3742c6e","timestamp":"2022-07-26T17:30:36.587593Z","members":["qbzxm"]},{"id":"ef14dae6-9818-4311-8dc7-1d0254a231db","timestamp":"2022-07-26T15:57:02.524728Z","members":["rirgf"]},{"id":"b090b4d3-562b-42fe-973d-f8962622ce41","timestamp":"2022-07-26T14:39:29.438447Z","members":["tfbob"]},{"id":"32b9da79-5f26-4649-bc20-19095a179167","timestamp":"2022-07-25T20:59:30.709838Z","members":["rirgf"]},{"id":"d1a3b61b-243c-4584-a5bb-9d8c00975282","timestamp":"2022-07-25T20:32:25.953745Z","members":["qbzxm"]},{"id":"397c4c5b-bee1-4554-958f-d3e2f6134a36","timestamp":"2022-07-24T17:43:00.397207Z","members":["rirgf"]},{"id":"f13f4738-e8fe-46c2-bd5b-bb131eaa7c10","timestamp":"2022-07-24T14:32:38.054365Z","members":["tfbob"]},{"id":"45668f5d-a891-478b-ac2b-7d31ce73421c","timestamp":"2022-07-24T08:58:33.529167Z","members":["rirgf"]},{"id":"0b7f4875-72fa-4243-a17b-604148103fe7","timestamp":"2022-07-23T21:45:15.230386Z","members":["qbzxm"]},{"id":"844bdef9-2b39-4d75-b001-aa4721f2ff1e","timestamp":"2022-07-23T21:34:44.271635Z","members":["pabmo"]},{"id":"985e06b3-3a97-4e7d-8e41-3c7d0ac06ffa","timestamp":"2022-07-23T18:18:21.309123Z","members":["rirgf"]},{"id":"1541719c-0f41-49e8-a609-483cf382b35d","timestamp":"2022-07-23T14:50:21.26306Z","members":["qbzxm"]},{"id":"512fa59d-765a-439f-a6db-8c866ccf0c6a","timestamp":"2022-07-22T15:46:19.2312Z","members":["rirgf"]},{"id":"f6b66e60-c856-41d4-8496-59975da4423d","timestamp":"2022-07-22T15:34:21.162526Z","members":["qbzxm"]},{"id":"84e8dbdf-b918-46e9-b4a3-bcdb7ee33b03","timestamp":"2022-07-21T13:52:07.216638Z","members":["rirgf"]},{"id":"e2b8e446-3e9b-4bb1-be22-ceb3258ceb8a","timestamp":"2022-07-21T12:03:32.175019Z","members":["pabmo"]},{"id":"c6192b28-0294-4e35-81cf-e9639ea3f559","timestamp":"2022-07-20T14:44:15.411925Z","members":["rirgf"]},{"id":"f88592a9-14b7-4889-9d9e-b93a21c62f53","timestamp":"2022-07-20T14:07:50.524272Z","members":["pabmo"]},{"id":"4399ab86-9f74-4ad0-8627-c3be32cf737c","timestamp":"2022-07-17T17:07:18.349492Z","members":["rirgf"]},{"id":"3f7b4427-a02b-4deb-9db9-e9da7d1b8328","timestamp":"2022-07-17T16:18:33.470761Z","members":["qbzxm"]},{"id":"71ce6e4a-929d-4ecd-b91b-c3d39a9543bd","timestamp":"2022-07-16T15:18:26.473768Z","members":["rirgf"]},{"id":"3b6b0887-c419-4f9a-913e-0ac0ecef6373","timestamp":"2022-07-16T13:42:24.106996Z","members":["zajrk"]},{"id":"58a0e1fa-20c0-492b-a8fc-ebbf67c460a9","timestamp":"2022-07-15T19:03:54.617821Z","members":["rirgf"]},{"id":"fc6b0777-ca66-42c6-8c7a-ae4d2036a5ca","timestamp":"2022-07-14T21:00:19.67511Z","members":["qbzxm"]},{"id":"6b871057-5004-4b71-9be2-4d2e700738a6","timestamp":"2022-07-13T09:59:26.547608Z","members":["rirgf"]},{"id":"1a8736fd-b23f-40c9-90d2-8d6a23470baf","timestamp":"2022-07-13T09:32:43.799837Z","members":["lllfw"]},{"id":"dca1c1a2-83e5-4f51-9b89-fc4d11929089","timestamp":"2022-07-07T20:04:12.645966Z","members":["rirgf"]},{"id":"8aa28015-1047-448b-b0b7-16e7fc32c969","timestamp":"2022-07-06T20:14:51.040455Z","members":["qbzxm"]},{"id":"eeb4cfac-14c1-4207-a477-82d3307de2f5","timestamp":"2022-05-01T10:41:26.557008Z","members":["rirgf"]},{"id":"6fef8d73-dccb-40b6-9ace-4463da383a94","timestamp":"2022-04-16T08:42:25.46511Z","members":[]},{"id":"16bbd909-af89-4454-ac7a-3a8209a624e2","timestamp":"2022-04-16T08:41:28.285794Z","members":["qbzxm"]}] \ No newline at end of file
diff --git a/includes/data.backup/gdapd-tfbob-content.html b/includes/data.backup/gdapd-tfbob-content.html
deleted file mode 100644
index 275ba1d..0000000
--- a/includes/data.backup/gdapd-tfbob-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>Henlo! I am Violet Dawn, and I am a bat pony!</p><p>I really like all sorts of fruits (they're so tasty) but I hate light and loud/high pitched sounds. Besides that, I don't really have much to say; also I love Sky Dream.</p><p>eeeeeeeeee~!</p> \ No newline at end of file
diff --git a/includes/data.backup/gdapd-tfbob-metadata.json b/includes/data.backup/gdapd-tfbob-metadata.json
deleted file mode 100644
index 0cc12cd..0000000
--- a/includes/data.backup/gdapd-tfbob-metadata.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "shared_memory": 2,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": false,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "batpony"
- ],
- "marefriends": [
- "ynmuc/zzise"
- ],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup/gdapd-zajrk-metadata.json b/includes/data.backup/gdapd-zajrk-metadata.json
deleted file mode 100644
index 1f1aa56..0000000
--- a/includes/data.backup/gdapd-zajrk-metadata.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "shared_memory": 2,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": false,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "pegasus"
- ],
- "marefriends": [
- "ynmuc/mglyq"
- ],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup/gdapd-ztfjz-metadata.json b/includes/data.backup/gdapd-ztfjz-metadata.json
deleted file mode 100644
index 41617f3..0000000
--- a/includes/data.backup/gdapd-ztfjz-metadata.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "shared_memory": 2,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": false,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "unicorn"
- ],
- "marefriends": [],
- "sisters": [
- "ynmuc/vvsxf"
- ]
-} \ No newline at end of file
diff --git a/includes/data.backup/migrate.js b/includes/data.backup/migrate.js
deleted file mode 100644
index 716096f..0000000
--- a/includes/data.backup/migrate.js
+++ /dev/null
@@ -1,94 +0,0 @@
-const fs = require('fs');
-
-for (let file of fs.readdirSync(".").filter(i => i.endsWith("-metadata.json"))) {
- let size = fs.readFileSync(file).toString().length;
- let json = JSON.parse(fs.readFileSync(file).toString());
- console.log("-- " + file + " --");
-
- if (!json['bitset']) {
- console.log("Migrating file...");
- let p1r = "0".repeat(2 - json['shared_memory'].toString(2).length) + json['shared_memory'].toString(2);
- let p2r = json['median'] ? "1" : "0";
- let p3r = "0".repeat(2 - json['little'].toString(2).length) + json['little'].toString(2);
- let p4r = json['protector'] ? "1" : "0";
- let p5r = json['fictive'] ? "1" : "0";
- let p6r = json['not_talking'] ? "1" : "0";
- let p7r = json['host'] ? "1" : "0";
- let p8a = json['species'][0];
- let p9a = json['species'][1];
-
- let p8r = "0000";
- switch (p8a) {
- case "earth":
- p8r = "0001";
- break;
-
- case "unicorn":
- p8r = "0010";
- break;
-
- case "pegasus":
- p8r = "0011";
- break;
-
- case "alicorn":
- p8r = "0100";
- break;
-
- case "batpony":
- p8r = "0101";
- break;
-
- case "crystal":
- p8r = "0110";
- break;
- }
-
- let p9r = "0000";
- switch (p9a) {
- case "earth":
- p9r = "0001";
- break;
-
- case "unicorn":
- p9r = "0010";
- break;
-
- case "pegasus":
- p9r = "0011";
- break;
-
- case "alicorn":
- p9r = "0100";
- break;
-
- case "batpony":
- p9r = "0101";
- break;
-
- case "crystal":
- p9r = "0110";
- break;
- }
-
- console.log("Generated bitset: " + p1r + p2r + p3r + p4r + p5r + p6r + p7r + p8r + p9r + "0000000");
-
- let ret = {
- bitset: parseInt(p1r + p2r + p3r + p4r + p5r + p6r + p7r + p8r + p9r + "0000000", 2),
- regression: json['regression'] ?? null,
- marefriends: json['marefriends'] ?? [],
- sisters: json['sisters'] ?? [],
- caretakers: json['caretakers'] ?? []
- }
-
- console.log("Saving...");
- fs.writeFileSync(file, JSON.stringify(ret, null, 2));
- let now = JSON.stringify(ret, null, 2).length;
-
- console.log("Saved space: " + (size - now) + " bytes, " + (((size - now) / size) * 100).toFixed(2) + "%");
- } else {
- console.log("File has already been migrated, ignoring.");
- }
-
- console.log("");
-} \ No newline at end of file
diff --git a/includes/data.backup/refresh.json b/includes/data.backup/refresh.json
deleted file mode 100644
index 7eb983a..0000000
--- a/includes/data.backup/refresh.json
+++ /dev/null
@@ -1 +0,0 @@
-{"timestamp":1659968112,"duration":10} \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-content.html b/includes/data.backup/ynmuc-content.html
deleted file mode 100644
index 7c84b7f..0000000
--- a/includes/data.backup/ynmuc-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>A description would be inserted here by some member of the Cloudburst System system.</p> \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-erefx-content.html b/includes/data.backup/ynmuc-erefx-content.html
deleted file mode 100644
index 585463f..0000000
--- a/includes/data.backup/ynmuc-erefx-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p><a href="/raindrops/scootaloo">Scoots</a><span style="color:rgb(255,255,255);">' sister. Definitely not written by Scoots /s</span></p> \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-erefx-metadata.json b/includes/data.backup/ynmuc-erefx-metadata.json
deleted file mode 100644
index e87109e..0000000
--- a/includes/data.backup/ynmuc-erefx-metadata.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "shared_memory": 0,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": true,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "unicorn"
- ],
- "marefriends": [
- "ynmuc/xbvwt"
- ],
- "sisters": [
- "gdapd/rirgf"
- ]
-} \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-erknz-metadata.json b/includes/data.backup/ynmuc-erknz-metadata.json
deleted file mode 100644
index e3507ef..0000000
--- a/includes/data.backup/ynmuc-erknz-metadata.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "shared_memory": 2,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": false,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "unicorn"
- ],
- "marefriends": [
- "gdapd/qbzxm"
- ],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-fronters.json b/includes/data.backup/ynmuc-fronters.json
deleted file mode 100644
index 31c8c1e..0000000
--- a/includes/data.backup/ynmuc-fronters.json
+++ /dev/null
@@ -1 +0,0 @@
-{"id":"d9bdd6d6-2794-4f4e-8835-db33290d7903","timestamp":"2022-08-08T08:46:10.402919Z","members":[{"id":"jnbae","uuid":"7adba16f-e0fe-4b4b-b5a2-658d1d73581f","name":"mistycloud","display_name":"Misty Cloud","color":"7083de","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/969995660063563807/999794243113603103/misty.png","banner":null,"description":null,"created":"2022-06-22T07:49:16.85348Z","keep_proxy":false,"proxy_tags":[{"prefix":"c.","suffix":null}],"privacy":null}]} \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-general.json b/includes/data.backup/ynmuc-general.json
deleted file mode 100644
index a0229be..0000000
--- a/includes/data.backup/ynmuc-general.json
+++ /dev/null
@@ -1 +0,0 @@
-{"id":"ynmuc","uuid":"ade46823-206b-4b0c-ad3c-caae934a5f3b","name":"Cloudburst System","description":"**\"gonna be-gonna be-gonna be my day!\"**\nwe have absolutely no clue what type of system we are, we just know it's plurality!","tag":"| Cloudburst System","pronouns":null,"avatar_url":"https://cdn.discordapp.com/attachments/923518648059047957/923647860396929035/servericon.png","banner":null,"color":null,"created":"2019-12-01T20:21:59.755765Z","privacy":null} \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-gevde-metadata.json b/includes/data.backup/ynmuc-gevde-metadata.json
deleted file mode 100644
index 53960e6..0000000
--- a/includes/data.backup/ynmuc-gevde-metadata.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "shared_memory": 1,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": true,
- "little": 2,
- "not_talking": false,
- "host": false,
- "species": [
- "unicorn"
- ],
- "marefriends": [
- "gdapd/pabmo"
- ],
- "sisters": [
- "gdapd/rirgf"
- ]
-} \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-gfhsr-content.html b/includes/data.backup/ynmuc-gfhsr-content.html
deleted file mode 100644
index 5abc149..0000000
--- a/includes/data.backup/ynmuc-gfhsr-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>hello... i'm fluttershy... as my name suggests i'm quite shy at first but once i get my bearings and we've talked for a bit i open up a bit more...</p><p>thanks for reading my page</p> \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-gfhsr-metadata.json b/includes/data.backup/ynmuc-gfhsr-metadata.json
deleted file mode 100644
index a21d651..0000000
--- a/includes/data.backup/ynmuc-gfhsr-metadata.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "shared_memory": 2,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": true,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "pegasus"
- ],
- "marefriends": [],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-jnbae-metadata.json b/includes/data.backup/ynmuc-jnbae-metadata.json
deleted file mode 100644
index 2ae4ef9..0000000
--- a/includes/data.backup/ynmuc-jnbae-metadata.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "shared_memory": 2,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": false,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "pegasus"
- ],
- "marefriends": [],
- "sisters": [
- "gdapd/rirgf"
- ]
-} \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-kkhbw-content.html b/includes/data.backup/ynmuc-kkhbw-content.html
deleted file mode 100644
index 0f6c62a..0000000
--- a/includes/data.backup/ynmuc-kkhbw-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>Hello!</p><p>I'm Twi, or Leah. Whichever you prefer honestly!</p><p>I'm the host for the <a href="https://ponies.equestria.horse/Cloudburst:About">Cloudburst System</a>...</p><p>I was not the original host, we don't know who they were but I guess they're gone now...</p><p>Honestly I'm <i>already</i> out of ideas on what to put here .c.</p> \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-kkhbw-metadata.json b/includes/data.backup/ynmuc-kkhbw-metadata.json
deleted file mode 100644
index 37a9ec0..0000000
--- a/includes/data.backup/ynmuc-kkhbw-metadata.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "shared_memory": 2,
- "median": false,
- "regression": "tmgiu",
- "protector": false,
- "fictive": true,
- "little": 1,
- "not_talking": false,
- "host": true,
- "species": [
- "pegasus"
- ],
- "marefriends": [
- "gdapd/rirgf",
- "gdapd/hpwyq"
- ],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-members.json b/includes/data.backup/ynmuc-members.json
deleted file mode 100644
index 999e82c..0000000
--- a/includes/data.backup/ynmuc-members.json
+++ /dev/null
@@ -1 +0,0 @@
-[{"id":"rdstg","uuid":"5236c613-18e9-429f-91f4-dd96cc7c76f4","name":"unknown","display_name":"Twilight (Unknown)","color":"b2b2b2","birthday":null,"pronouns":"best to ask","avatar_url":"https://cdn.discordapp.com/attachments/872535986943426670/896673942872420372/unknown.png","banner":null,"description":"Hello! I'm likely not entirely sure who I am, but I'm using Twilight Sparkle as a temporary identity to stay calm and not panic while I figure out what's going on.\n\nI can either be an existing headmate who can't work out they're fronting, a blend of multiple headmates who can't work out who we are, or a new pony trying to figure themselves out. If you're unsure, feel free to ask!","created":"2021-10-07T10:07:27.811956Z","keep_proxy":false,"proxy_tags":[{"prefix":"{","suffix":"}"}],"privacy":null},{"id":"vncoa","uuid":"98604b5b-568d-46d3-aa9e-17a3a7c70d3a","name":"mintygrape","display_name":"Minty Grape","color":"92429a","birthday":null,"pronouns":"they/them","avatar_url":"https://cdn.discordapp.com/attachments/825369511971913781/902177701836754994/Screenshot_20211025-134914_Chrome.jpg","banner":null,"description":null,"created":"2021-10-25T12:49:48.211953Z","keep_proxy":false,"proxy_tags":[{"prefix":"m.","suffix":null}],"privacy":null},{"id":"gfhsr","uuid":"36c0f97d-bb15-45f3-a4d4-d23ad41f0e6f","name":"fluttershy","display_name":"Fluttershy","color":"faf5ab","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/825369511971913778/909143419652300810/2096296.png","banner":null,"description":null,"created":"2021-09-28T14:53:17.008534Z","keep_proxy":false,"proxy_tags":[{"prefix":"f.","suffix":null}],"privacy":null},{"id":"erefx","uuid":"6deaba57-be2b-4d45-9799-28a72bda38c1","name":"izzymoonbow","display_name":"Izzy Moonbow","color":"2176aa","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/923518648059047957/972591390037004328/20220507_211034.jpg","banner":null,"description":null,"created":"2022-04-10T20:36:09.022697Z","keep_proxy":false,"proxy_tags":[{"prefix":"i.","suffix":null}],"privacy":null},{"id":"zhtzs","uuid":"5d092fbc-e3ce-4bb1-9b59-679e38413f4b","name":"pipppetals","display_name":"Pipp Petals","color":"ea95d5","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/923518648059047957/1000175246374097026/FYOE0KoWYAc88hx.jpg","banner":null,"description":null,"created":"2022-06-17T20:36:02.751829Z","keep_proxy":false,"proxy_tags":[{"prefix":"pi.","suffix":null},{"prefix":"π.","suffix":null}],"privacy":null},{"id":"vvsxf","uuid":"d37ad25f-cb72-4697-a2d0-b4bf0cef52ee","name":"plushie","display_name":"Plushie","color":"9073ff","birthday":null,"pronouns":"it/its","avatar_url":"https://cdn.discordapp.com/attachments/923518648059047957/932592506854588436/20220117_110920.jpg","banner":null,"description":null,"created":"2021-09-25T21:50:25.790235Z","keep_proxy":false,"proxy_tags":[{"prefix":"p.","suffix":null}],"privacy":null},{"id":"mglyq","uuid":"d25282c7-e7c1-4052-bc38-1cc6ebd07c10","name":"velvet","display_name":"Velvet Cascade","color":"466cdb","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/825369511971913778/917772337447858196/20211207_083155.jpg","banner":null,"description":null,"created":"2021-11-04T19:10:48.370778Z","keep_proxy":false,"proxy_tags":[{"prefix":"v.","suffix":null}],"privacy":null},{"id":"zzise","uuid":"198d3961-2408-40b2-8f59-30a8665693a5","name":"skydream","display_name":"Sky Dream","color":"a0f0ff","birthday":null,"pronouns":"she/it","avatar_url":"https://cdn.discordapp.com/attachments/923518648059047957/932945518156464168/20220118_103210.jpg","banner":null,"description":null,"created":"2021-10-13T23:07:23.135639Z","keep_proxy":false,"proxy_tags":[{"prefix":"d.","suffix":null}],"privacy":null},{"id":"xcjhj","uuid":"e7e3a371-fa5f-49ce-8deb-86f089579310","name":"blueberrycloud","display_name":"Blueberry Cloud","color":"fffbae","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/923518648059047957/998365934303580181/unknown.png","banner":null,"description":null,"created":"2022-07-17T23:06:38.533806Z","keep_proxy":false,"proxy_tags":[{"prefix":"b.","suffix":null}],"privacy":null},{"id":"erknz","uuid":"dd9ba9db-08f2-4518-aa90-a479f6e60b7e","name":"lavender","display_name":"Lavender","color":"e99fe4","birthday":null,"pronouns":"she/pony","avatar_url":"https://cdn.discordapp.com/attachments/872535986943426670/896674044701724723/lavender.png","banner":null,"description":null,"created":"2021-10-06T19:29:17.195373Z","keep_proxy":false,"proxy_tags":[{"prefix":"l.","suffix":null}],"privacy":null},{"id":"gevde","uuid":"91f6e79e-36a1-4fd6-8cd9-62e8522661aa","name":"sweetiebelle","display_name":"Sweetie Belle","color":"efeded","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/825369511796539412/923255682227122226/20211222_164348.png","banner":null,"description":null,"created":"2021-12-22T16:42:59.140195Z","keep_proxy":false,"proxy_tags":[{"prefix":"sb.","suffix":null}],"privacy":null},{"id":"kkhbw","uuid":"6fde8569-27e1-4c4d-b305-66aa62915168","name":"twilight","display_name":"Twi/Leah","color":"cc9cdf","birthday":null,"pronouns":"she/pony","avatar_url":"https://cdn.discordapp.com/attachments/1001209923213996072/1002285835565150360/pfp.png","banner":null,"description":null,"created":"2021-09-25T22:25:41.356595Z","keep_proxy":false,"proxy_tags":[{"prefix":"t.","suffix":null}],"privacy":null},{"id":"jnbae","uuid":"7adba16f-e0fe-4b4b-b5a2-658d1d73581f","name":"mistycloud","display_name":"Misty Cloud","color":"7083de","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/969995660063563807/999794243113603103/misty.png","banner":null,"description":null,"created":"2022-06-22T07:49:16.85348Z","keep_proxy":false,"proxy_tags":[{"prefix":"c.","suffix":null}],"privacy":null},{"id":"xbvwt","uuid":"ef94e497-2b6c-4f8a-9533-0b0a125874e1","name":"sunnystarscout","display_name":"Sunny Starscout","color":"f3a493","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/923518648059047957/962383825185419304/20220409_170931.jpg","banner":null,"description":null,"created":"2022-04-09T15:33:50.487224Z","keep_proxy":false,"proxy_tags":[{"prefix":"s.","suffix":null}],"privacy":null},{"id":"tmgiu","uuid":"0b7e9bc7-7555-49ec-b2f5-cb4175f5f6f4","name":"smoltwi","display_name":"Filly Twi","color":"e0c3eb","birthday":null,"pronouns":null,"avatar_url":"https://cdn.discordapp.com/attachments/1001209923213996072/1005754097267388517/20220807_092727.png","banner":null,"description":null,"created":"2022-08-07T08:21:20.865853Z","keep_proxy":false,"proxy_tags":[{"prefix":"st.","suffix":null}],"privacy":null}] \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-mglyq-content.html b/includes/data.backup/ynmuc-mglyq-content.html
deleted file mode 100644
index 068c227..0000000
--- a/includes/data.backup/ynmuc-mglyq-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p><span style="color:rgb(255,255,255);">heya! i'm velvet cascade. i'm an earth pony in the </span><a href="/cloudburst">Cloudburst System</a><span style="color:rgb(255,255,255);">. i like farming and gardening in general! i especially like setting up intricate displays to showcase flower designs on </span><a href="https://pony.town/">Pony Town</a><span style="color:rgb(255,255,255);"> (and hopefully one day, in real life!)</span></p> \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-mglyq-metadata.json b/includes/data.backup/ynmuc-mglyq-metadata.json
deleted file mode 100644
index 0960683..0000000
--- a/includes/data.backup/ynmuc-mglyq-metadata.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "shared_memory": 2,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": false,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "earth"
- ],
- "marefriends": [
- "gdapd/zajrk"
- ],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-planner.json b/includes/data.backup/ynmuc-planner.json
deleted file mode 100644
index 47523b3..0000000
--- a/includes/data.backup/ynmuc-planner.json
+++ /dev/null
@@ -1 +0,0 @@
-{"2022-08-08":["jnbae","kkhbw","xbvwt"],"2022-08-09":["vncoa","zhtzs","zzise","gevde"],"2022-08-10":[],"2022-08-11":[],"2022-08-12":[],"2022-08-13":[],"2022-08-14":[]} \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-sehke-metadata.json b/includes/data.backup/ynmuc-sehke-metadata.json
deleted file mode 100644
index 9f6b4a4..0000000
--- a/includes/data.backup/ynmuc-sehke-metadata.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "shared_memory": 2,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": false,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "earth"
- ],
- "marefriends": [],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-subsystem-sparkles.html b/includes/data.backup/ynmuc-subsystem-sparkles.html
deleted file mode 100644
index dbcf6fc..0000000
--- a/includes/data.backup/ynmuc-subsystem-sparkles.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>A description would be inserted here by some member of the Sparkles subsystem.</p> \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-subsystem-sparkles.json b/includes/data.backup/ynmuc-subsystem-sparkles.json
deleted file mode 100644
index 0f21fbd..0000000
--- a/includes/data.backup/ynmuc-subsystem-sparkles.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "name": "The Sparkles"
-} \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-subsystems.json b/includes/data.backup/ynmuc-subsystems.json
deleted file mode 100644
index 7bfb72e..0000000
--- a/includes/data.backup/ynmuc-subsystems.json
+++ /dev/null
@@ -1,18 +0,0 @@
-[
- {
- "source": "kkhbw",
- "source_type": "member",
- "members": [
- "tmgiu"
- ]
- },
- {
- "source": "sparkles",
- "source_type": "trait",
- "members": [
- "xbvwt",
- "erefx",
- "zhtzs"
- ]
- }
-] \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-switches.json b/includes/data.backup/ynmuc-switches.json
deleted file mode 100644
index 4d9db54..0000000
--- a/includes/data.backup/ynmuc-switches.json
+++ /dev/null
@@ -1 +0,0 @@
-[{"id":"d9bdd6d6-2794-4f4e-8835-db33290d7903","timestamp":"2022-08-08T08:46:10.402919Z","members":["jnbae"]},{"id":"128a2b8f-fe62-435c-a259-fc6e88be4740","timestamp":"2022-08-07T21:31:57.32411Z","members":["erefx"]},{"id":"d0f6aa63-1551-4a9c-a876-b8b5e4f966d9","timestamp":"2022-08-06T17:20:05.59652Z","members":["kkhbw"]},{"id":"96805b65-1a14-40ba-bb0c-ac1a7a2fe695","timestamp":"2022-08-06T11:28:53.357616Z","members":["mglyq"]},{"id":"6dc862a9-57e4-4e80-9657-ef96d7fa91ff","timestamp":"2022-08-05T17:03:51.0212Z","members":["zzise"]},{"id":"988fb87b-20bd-4f9c-9da5-ed7d1609b5db","timestamp":"2022-08-05T14:04:08.789779Z","members":["kkhbw"]},{"id":"f5d227a8-3ccd-4ff4-bd98-32e4c35671bd","timestamp":"2022-08-05T11:21:53.877057Z","members":["xbvwt"]},{"id":"d5a68fbe-fd0b-431a-ac8d-32933c299ad8","timestamp":"2022-08-03T12:33:47.377523Z","members":["kkhbw"]},{"id":"d91b19dc-b804-4004-89ae-1d18a2c1f1aa","timestamp":"2022-08-03T12:23:29.380125Z","members":["zzise"]},{"id":"75c3191e-59fa-4e25-b71b-c0ec9e1f1d5f","timestamp":"2022-08-02T11:05:20.26185Z","members":["kkhbw"]},{"id":"0f7b8774-bf31-4bf2-91c5-252dcc23973e","timestamp":"2022-08-01T20:52:37.799846Z","members":["xbvwt"]},{"id":"f6d24662-cf4b-4ecd-8264-fb289ca452ba","timestamp":"2022-08-01T15:50:48.57502Z","members":["kkhbw"]},{"id":"ff5cba2e-3ea9-401c-b9a9-b62de179d923","timestamp":"2022-08-01T11:24:16.404169Z","members":["zzise"]},{"id":"9293780d-b502-4f27-a115-36522dbaa3e7","timestamp":"2022-08-01T08:12:30.67668Z","members":["erefx"]},{"id":"5282f87a-ce79-4fca-a770-d5857ff14304","timestamp":"2022-07-31T21:27:03.295077Z","members":["kkhbw"]},{"id":"d100054f-9913-4a9b-86c5-7de60f6dacb0","timestamp":"2022-07-31T16:37:29.451006Z","members":["erknz"]},{"id":"a22e1e7a-93fa-4cd6-9ae7-8a7a3a629347","timestamp":"2022-07-31T07:45:55.285055Z","members":["kkhbw"]},{"id":"762444f5-1c33-4a74-8339-837ab2db6cf5","timestamp":"2022-07-30T18:44:08.38374Z","members":["vvsxf"]},{"id":"3293e085-c941-4064-8638-bee15bf849d0","timestamp":"2022-07-29T19:41:14.095032Z","members":["xcjhj"]},{"id":"f8d87515-1a83-4bcb-9454-5d7fcd1ef462","timestamp":"2022-07-28T14:07:47.151199Z","members":["kkhbw"]},{"id":"cf8da98b-c03a-49e8-a582-e7b6f0c88f25","timestamp":"2022-07-28T12:09:20.713711Z","members":["zzise"]},{"id":"f545f42f-b65f-4a9f-8c1b-34bb8cc1bc74","timestamp":"2022-07-27T18:54:03.359331Z","members":["kkhbw"]},{"id":"a511aa5c-4ed6-43cc-b8cb-9519e22183d1","timestamp":"2022-07-27T16:05:24.568466Z","members":["mglyq"]},{"id":"c67feae6-a4a7-49cb-96d1-cea3adb769f9","timestamp":"2022-07-27T11:06:43.47133Z","members":["jnbae"]},{"id":"dc8c5da0-174b-4cac-80de-5657b2803bc8","timestamp":"2022-07-26T20:57:19.984573Z","members":["kkhbw"]},{"id":"86d2deef-e055-4508-a0ea-313e6c8167e1","timestamp":"2022-07-26T14:58:21.681152Z","members":["zzise"]},{"id":"1e6c442b-014d-4b91-a379-a4163f43920f","timestamp":"2022-07-25T14:36:42.386763Z","members":["kkhbw"]},{"id":"ad3076f7-b51a-44de-b921-0757e7d47bab","timestamp":"2022-07-25T12:10:50.029186Z","members":["vvsxf"]},{"id":"d57d7696-d17a-4a8b-97a7-4612d441fde1","timestamp":"2022-07-24T18:31:35.598319Z","members":["kkhbw"]},{"id":"7af12cfe-2729-4fb9-825c-70cd64edd2c5","timestamp":"2022-07-24T12:38:56.745626Z","members":["zzise"]},{"id":"3000a921-3f20-4714-8573-4dd8125868d5","timestamp":"2022-07-24T11:46:50.66983Z","members":["vncoa"]},{"id":"c3ebc850-c824-4111-af0a-480002fcf065","timestamp":"2022-07-24T08:47:42.514505Z","members":["xbvwt"]},{"id":"c5ba5ee2-8a55-4918-a2dc-fc605fedbfe1","timestamp":"2022-07-23T14:57:11.288643Z","members":["erknz"]},{"id":"8b8cc2e4-68cc-4aec-bebf-7df5362e3e29","timestamp":"2022-07-23T13:36:15.160833Z","members":["zzise"]},{"id":"32a35653-6599-4e80-91d6-b0d3e6e3e170","timestamp":"2022-07-23T10:28:01.152984Z","members":["gfhsr"]},{"id":"cb17c0c9-c838-4ab1-998f-33cae191a52d","timestamp":"2022-07-21T13:53:03.172427Z","members":["kkhbw"]},{"id":"72e2646c-9361-4ae5-801d-51850b3c8143","timestamp":"2022-07-21T11:31:28.867135Z","members":["gevde"]},{"id":"79414944-2583-4e8e-81cf-11f04a46f81e","timestamp":"2022-07-20T20:35:36.162672Z","members":["zhtzs"]},{"id":"6ec067a3-bd21-4518-bc78-e134f77d2d14","timestamp":"2022-07-20T19:20:53.063531Z","members":["kkhbw"]},{"id":"70b06bb2-b01c-4788-b6a8-03314efe31fd","timestamp":"2022-07-20T13:46:42.675824Z","members":["gevde"]},{"id":"43286fcd-a098-47e1-a6e7-b6d5b5636732","timestamp":"2022-07-19T13:09:43.494648Z","members":["kkhbw"]},{"id":"27b6789c-1609-4d7c-8b66-cf0e68039cfa","timestamp":"2022-07-18T21:42:03.331665Z","members":["xbvwt"]},{"id":"a7cc7729-5e2e-44e6-b501-f8546c8a8ff8","timestamp":"2022-07-17T11:49:44.64922Z","members":["kkhbw"]},{"id":"50e76dbd-6855-4fcd-96e7-b213c3f285db","timestamp":"2022-07-16T19:37:20.60917Z","members":["vvsxf"]},{"id":"a981e819-839a-482d-ac3c-74478c867f44","timestamp":"2022-07-16T15:18:58.16575Z","members":["gfhsr"]},{"id":"fa0283b4-31fe-498f-b74f-a1612794a7ca","timestamp":"2022-07-16T09:21:47.01158Z","members":["mglyq"]},{"id":"7ec121a0-fa14-4c57-8ed2-fb56a09fb22b","timestamp":"2022-07-14T15:07:58.989759Z","members":["kkhbw"]},{"id":"cba1d4ff-7e83-4edd-b982-327177b4c655","timestamp":"2022-07-14T12:03:15.028238Z","members":["jnbae"]},{"id":"3fa8f4f0-8602-48e8-b8cd-9599ba27fcee","timestamp":"2022-07-14T09:29:01.28779Z","members":["gevde"]},{"id":"d4d1c284-0782-4251-9f7f-076d34ef5a3c","timestamp":"2022-07-13T13:04:04.902073Z","members":["kkhbw"]},{"id":"7c01a511-4354-4c6b-a104-14cd3989dfb6","timestamp":"2022-07-13T09:12:43.526116Z","members":["zzise"]},{"id":"dd3f423a-b96c-44ff-b0cc-7e4f6245cdd7","timestamp":"2022-07-12T21:55:41.538956Z","members":["kkhbw"]},{"id":"2d97bab7-4763-45b1-a677-7ef08cc5d2cb","timestamp":"2022-07-12T21:21:53.21364Z","members":["gevde"]},{"id":"7cb51d48-c3e3-4263-9f29-3bff23ac10a2","timestamp":"2022-07-12T11:26:52.991209Z","members":["kkhbw"]},{"id":"141b4704-4c7e-4917-946c-c4da8772b1f2","timestamp":"2022-07-12T08:39:41.032698Z","members":["erefx"]},{"id":"006b9de1-f932-43b0-890e-74949f888c03","timestamp":"2022-07-11T10:15:03.359372Z","members":["kkhbw"]},{"id":"17533ce0-7cdd-475c-bde3-5a9a4dfa207d","timestamp":"2022-07-10T21:25:04.944671Z","members":["xbvwt"]},{"id":"a94dbc79-4b88-4260-802f-025cbee5b87f","timestamp":"2022-07-09T16:29:14.271285Z","members":["kkhbw"]},{"id":"f4dc5275-675e-494f-90dd-b841687ff6ce","timestamp":"2022-07-09T11:33:00.936258Z","members":["zzise"]},{"id":"50f7800d-6cb2-49c1-a2e5-4e1324f21257","timestamp":"2022-07-07T15:22:20.21751Z","members":["kkhbw"]},{"id":"c5832aee-2fee-4541-a472-4a0c70c92c95","timestamp":"2022-07-07T08:21:26.060082Z","members":["erknz"]},{"id":"6f3994c5-55dd-408b-bb8f-ca33a2a7591c","timestamp":"2022-07-06T15:33:21.676895Z","members":["kkhbw"]},{"id":"c7712e6d-ff01-4aa4-9f0b-d512da395728","timestamp":"2022-07-06T09:02:21.109125Z","members":["vncoa"]},{"id":"7c706268-a8fd-45f5-a874-65745f016530","timestamp":"2022-07-05T15:00:00Z","members":["kkhbw"]},{"id":"ac130bb7-6797-47b8-9cea-37e0c3139d85","timestamp":"2022-07-05T07:31:28.323064Z","members":["vvsxf"]},{"id":"7a821888-f308-4b96-b77f-f19b9d34dbc2","timestamp":"2022-07-04T14:13:56.805013Z","members":["xbvwt"]},{"id":"05b8b6f3-7e8c-4d8c-b0d9-6decbd039e6d","timestamp":"2022-07-04T10:20:25.079436Z","members":["gfhsr"]},{"id":"83b06fac-98a2-4176-ab82-301300c8c89c","timestamp":"2022-07-03T10:14:49.183852Z","members":["kkhbw"]},{"id":"0fbcb1fa-e655-4d6c-b62b-7a50f37e9f7f","timestamp":"2022-07-02T20:39:29.011589Z","members":["erefx"]},{"id":"5a94547f-3088-49c7-ae16-ca3807109ecc","timestamp":"2022-07-02T13:20:05.497265Z","members":["kkhbw"]},{"id":"626ba9c5-6b39-406d-8637-6c342b4e263d","timestamp":"2022-07-02T10:52:21.830141Z","members":["gfhsr"]},{"id":"c6751376-d751-44ed-ac84-e761928b3bf2","timestamp":"2022-07-01T14:04:06.755324Z","members":["kkhbw"]},{"id":"22778489-4c56-4234-9f99-265aa46cd321","timestamp":"2022-07-01T10:08:14.509735Z","members":["zzise"]},{"id":"f67cc64a-3d28-4a36-9732-7d9359b2af42","timestamp":"2022-06-30T15:15:47.979457Z","members":["kkhbw"]},{"id":"90fa20b7-3d2b-4a02-b5e9-8a8a8e662469","timestamp":"2022-06-30T13:46:21.38271Z","members":["xbvwt"]},{"id":"20cfadd5-6b49-4754-9435-38883c5eed97","timestamp":"2022-06-30T09:42:01.969439Z","members":["vncoa"]},{"id":"36e1ad94-0887-47f0-adc6-32e8b4e7bb4d","timestamp":"2022-06-29T17:10:16.665544Z","members":["kkhbw"]},{"id":"aadb35ef-3fe1-4829-aa7a-5bcac8eb5d56","timestamp":"2022-06-29T12:41:36.685784Z","members":["jnbae"]},{"id":"9604cbf6-bf0e-4ba9-9e22-3352f390696e","timestamp":"2022-06-29T07:11:22.788588Z","members":["kkhbw"]},{"id":"918c8a5e-c093-48bb-af12-c35023b5e251","timestamp":"2022-06-28T19:17:36.294863Z","members":["xbvwt"]},{"id":"a1b86f12-ce33-4a95-ad0c-8799843bab16","timestamp":"2022-06-28T13:11:22.235496Z","members":["zhtzs"]},{"id":"d9e08db6-06cf-4ab7-af32-7b7c36e41f6e","timestamp":"2022-06-27T19:38:17.481836Z","members":["zzise"]},{"id":"4128fb46-1bdd-4915-aa0e-5f2d158affd5","timestamp":"2022-06-27T07:16:37.642028Z","members":["erknz"]},{"id":"8fa74862-3c60-4f08-ada5-15084ed43d10","timestamp":"2022-06-26T07:22:25.213651Z","members":["kkhbw"]},{"id":"da8d4483-58e7-4170-a088-8f6e37c95d87","timestamp":"2022-06-25T19:50:29.457044Z","members":["xbvwt"]},{"id":"0b3be5d1-b940-44d1-984a-edbff0edcc47","timestamp":"2022-06-25T16:20:43.824165Z","members":["kkhbw"]},{"id":"313e8c22-d88b-41b8-ba0b-0f214235be32","timestamp":"2022-06-25T09:53:39.588763Z","members":["zzise"]},{"id":"9dd1059a-6fd6-458c-ac18-e9534005bb8a","timestamp":"2022-06-24T16:36:02.580696Z","members":["kkhbw"]},{"id":"4d3414f1-6b74-4cdc-95f4-fffbe00db1a8","timestamp":"2022-06-24T09:11:14.900455Z","members":["gfhsr"]},{"id":"102dfa76-6fbd-42d5-bf9e-caa4e9bd1770","timestamp":"2022-06-23T15:02:17.056449Z","members":["kkhbw"]},{"id":"b64f485d-3e57-435d-a266-feec2f2d6922","timestamp":"2022-06-23T10:02:58.079289Z","members":["mglyq"]},{"id":"fcbe3e9a-1f7b-4b5b-b3aa-1d7d8311390d","timestamp":"2022-06-22T19:37:45.051851Z","members":["kkhbw"]},{"id":"fb01a31c-ba19-41c1-b407-912bdbf067f2","timestamp":"2022-06-22T07:21:10.425505Z","members":["zzise"]},{"id":"fbd8a99a-0531-48c7-85b8-f276302c7940","timestamp":"2022-06-20T15:14:06.523445Z","members":["kkhbw"]},{"id":"79237241-71b5-41c6-99af-9ee87814cba8","timestamp":"2022-06-20T07:20:58.570692Z","members":["vncoa"]},{"id":"b4caf679-89a6-4649-a78a-9270bc14aed2","timestamp":"2022-06-19T08:33:59.231122Z","members":["kkhbw"]},{"id":"80406c11-8690-47a5-bc64-4a74f0357f0f","timestamp":"2022-06-18T15:51:55.481343Z","members":["zzise"]},{"id":"841297b0-deac-47a3-bf2a-7640209995e4","timestamp":"2022-06-18T15:22:29.328761Z","members":["zhtzs"]},{"id":"a8e13251-4f49-496b-9b84-c6735b4cffb2","timestamp":"2022-06-18T09:11:09.456998Z","members":["gfhsr"]},{"id":"642d0eff-3d2d-4771-b5df-bec9aa810fb5","timestamp":"2022-06-16T14:09:11.530831Z","members":["kkhbw"]}] \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-tmgiu-metadata.json b/includes/data.backup/ynmuc-tmgiu-metadata.json
deleted file mode 100644
index 467f8ce..0000000
--- a/includes/data.backup/ynmuc-tmgiu-metadata.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "shared_memory": 1,
- "median": "kkhbw",
- "regression": null,
- "protector": false,
- "fictive": true,
- "little": 2,
- "not_talking": false,
- "host": false,
- "species": [
- "pegasus"
- ],
- "marefriends": [
- "gdapd/ghuln"
- ],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-vncoa-metadata.json b/includes/data.backup/ynmuc-vncoa-metadata.json
deleted file mode 100644
index 9f6b4a4..0000000
--- a/includes/data.backup/ynmuc-vncoa-metadata.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "shared_memory": 2,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": false,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "earth"
- ],
- "marefriends": [],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-vvsxf-content.html b/includes/data.backup/ynmuc-vvsxf-content.html
deleted file mode 100644
index a8ee483..0000000
--- a/includes/data.backup/ynmuc-vvsxf-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>hello! i'm plushie, as my name suggests i am a literal plushie</p><p>yeah that's really it honestly</p> \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-vvsxf-metadata.json b/includes/data.backup/ynmuc-vvsxf-metadata.json
deleted file mode 100644
index 84a033c..0000000
--- a/includes/data.backup/ynmuc-vvsxf-metadata.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "shared_memory": 2,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": false,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "pegasus"
- ],
- "marefriends": [],
- "sisters": [
- "gdapd/ztfjz"
- ]
-} \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-xbvwt-content.html b/includes/data.backup/ynmuc-xbvwt-content.html
deleted file mode 100644
index f3188ad..0000000
--- a/includes/data.backup/ynmuc-xbvwt-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>Hello! I'm Sunny Starscout! I'm both an Alicorn and an Earth Pony, It's hard to control when I am an Alicorn but I'm slowly working it out!</p><p>I'm in relationships with both <a href="/cloudburst/izzymoonbow">Izzy Moonbow</a> and <a href="/page/raindrops/scootaloo">Scoots/Mia</a>!</p> \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-xbvwt-metadata.json b/includes/data.backup/ynmuc-xbvwt-metadata.json
deleted file mode 100644
index d578181..0000000
--- a/includes/data.backup/ynmuc-xbvwt-metadata.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "shared_memory": 0,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": true,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "earth",
- "alicorn"
- ],
- "marefriends": [
- "ynmuc/erefx",
- "gdapd/rirgf"
- ],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-xcjhj-metadata.json b/includes/data.backup/ynmuc-xcjhj-metadata.json
deleted file mode 100644
index 628dd56..0000000
--- a/includes/data.backup/ynmuc-xcjhj-metadata.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "shared_memory": 2,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": false,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "unicorn"
- ],
- "marefriends": [
- "gdapd/qraku"
- ],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-zhtzs-content.html b/includes/data.backup/ynmuc-zhtzs-content.html
deleted file mode 100644
index 8f5bce7..0000000
--- a/includes/data.backup/ynmuc-zhtzs-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>Heya! My name is Pipp Petals. I'm a social media influencer and a princess (a two in one package)!</p><p>I recently got pulled into this... place I guess? I'm still working out how stuff works here. Luckily Sunny, Izzy, and Zipp are here as well!</p><p>I currently have a twitter account set up, if you want to you can follow me at @CB_PippPetals!</p><p>I don't really know what else to write right now, but if I think of anything I'll put it here!</p> \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-zhtzs-metadata.json b/includes/data.backup/ynmuc-zhtzs-metadata.json
deleted file mode 100644
index d65ab81..0000000
--- a/includes/data.backup/ynmuc-zhtzs-metadata.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "shared_memory": 0,
- "median": false,
- "regression": null,
- "protector": false,
- "fictive": true,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "pegasus"
- ],
- "marefriends": [],
- "sisters": [
- "gdapd/rirgf"
- ]
-} \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-zzise-content.html b/includes/data.backup/ynmuc-zzise-content.html
deleted file mode 100644
index c10d824..0000000
--- a/includes/data.backup/ynmuc-zzise-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>heya! i'm sky dream. i'm a batpony mare who loves to go on bike rides and hike mountains!</p><p>i guess you could call me the protector of the cloudburst system, i front whenever the pony at front can't handle it anymore, but i also front whenever i personally want to do something!</p> \ No newline at end of file
diff --git a/includes/data.backup/ynmuc-zzise-metadata.json b/includes/data.backup/ynmuc-zzise-metadata.json
deleted file mode 100644
index a508528..0000000
--- a/includes/data.backup/ynmuc-zzise-metadata.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "shared_memory": 2,
- "median": false,
- "regression": null,
- "protector": true,
- "fictive": false,
- "little": 0,
- "not_talking": false,
- "host": false,
- "species": [
- "batpony"
- ],
- "marefriends": [
- "gdapd/tfbob",
- "gdapd/lllfw"
- ],
- "sisters": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-content.html b/includes/data.backup2/gdapd-content.html
deleted file mode 100644
index 47ab5c6..0000000
--- a/includes/data.backup2/gdapd-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>A description would be inserted here by some member of the Raindrops System.</p> \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-fronters.json b/includes/data.backup2/gdapd-fronters.json
deleted file mode 100644
index 3284f2e..0000000
--- a/includes/data.backup2/gdapd-fronters.json
+++ /dev/null
@@ -1 +0,0 @@
-{"id":"92b68e73-f4f3-4eb9-8569-1baeb1ff9d01","timestamp":"2022-08-17T10:59:47.560683Z","members":[{"id":"zajrk","uuid":"5ddf123d-40ba-49fb-81b9-8d77728dbb3a","name":"mossystorm","display_name":"Mossy Storm","color":"9eff95","birthday":null,"pronouns":"she/they","avatar_url":"https://cdn.discordapp.com/attachments/969995660063563807/997577513066831933/mossy.png","banner":null,"description":null,"created":"2022-07-15T18:55:35.694303Z","keep_proxy":false,"proxy_tags":[{"prefix":"t.","suffix":null}],"privacy":null}]} \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-general.json b/includes/data.backup2/gdapd-general.json
deleted file mode 100644
index 21f6d7f..0000000
--- a/includes/data.backup2/gdapd-general.json
+++ /dev/null
@@ -1 +0,0 @@
-{"id":"gdapd","uuid":"7d9f543e-f742-40f6-9d07-86c3f2983124","name":"Raindrops System","description":"**\"gonna be-gonna be-gonna be my day!\"**\nWe have absolutely no clue what type of system we are (and honestly we don't want to know), we just know it's plurality!\n(description stolen from our friends in the Cloudburst System)","tag":"(Raindrops System)","pronouns":null,"avatar_url":"https://cdn.discordapp.com/attachments/969995660063563807/989632412067696702/system.png","banner":null,"color":null,"created":"2022-04-08T16:43:05.309423Z","privacy":null} \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-ghuln-metadata.json b/includes/data.backup2/gdapd-ghuln-metadata.json
deleted file mode 100644
index 42dfe79..0000000
--- a/includes/data.backup2/gdapd-ghuln-metadata.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "bitset": 7477248,
- "median": "rirgf",
- "regression": null,
- "marefriends": [
- "ynmuc/tmgiu"
- ],
- "sisters": [],
- "caretakers": [
- "ynmuc/kkhbw"
- ]
-} \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-hpwyq-metadata.json b/includes/data.backup2/gdapd-hpwyq-metadata.json
deleted file mode 100644
index f8106da..0000000
--- a/includes/data.backup2/gdapd-hpwyq-metadata.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "bitset": 8400896,
- "regression": null,
- "marefriends": [
- "ynmuc/kkhbw"
- ],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-khsbb-metadata.json b/includes/data.backup2/gdapd-khsbb-metadata.json
deleted file mode 100644
index 4818dec..0000000
--- a/includes/data.backup2/gdapd-khsbb-metadata.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "bitset": 133120,
- "regression": null,
- "marefriends": [],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-lllfw-metadata.json b/includes/data.backup2/gdapd-lllfw-metadata.json
deleted file mode 100644
index 496547d..0000000
--- a/includes/data.backup2/gdapd-lllfw-metadata.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "bitset": 137216,
- "regression": null,
- "marefriends": [
- "ynmuc/zzise"
- ],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-members.json b/includes/data.backup2/gdapd-members.json
deleted file mode 100644
index 4c8f076..0000000
--- a/includes/data.backup2/gdapd-members.json
+++ /dev/null
@@ -1 +0,0 @@
-[{"id":"ghuln","uuid":"c70080fb-8753-4a9d-a812-f960666a77ab","name":"smolscoots","display_name":"Filly Scoots","color":"bf5e94","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/1001209923213996072/1005906858076282972/4020373__safe_artist-colon-kqaii_character-colon-scootaloo_species-colon-pegasus_species-colon-pony_g4_cherry_cute_cutealoo_drink_eyeclippingthroughhair_eyeb.jpg","banner":null,"description":null,"created":"2022-08-06T19:21:20.641634Z","keep_proxy":false,"proxy_tags":[{"prefix":"fi.","suffix":null}],"privacy":null},{"id":"ztfjz","uuid":"5ca268af-06ef-42af-9613-3e24c3552d72","name":"stuffie","display_name":"Stuffie","color":"9069d9","birthday":null,"pronouns":"it/its","avatar_url":"https://cdn.discordapp.com/attachments/1001209923213996072/1004527634832703548/stuffie.png","banner":null,"description":null,"created":"2022-08-03T23:10:01.420647Z","keep_proxy":false,"proxy_tags":[{"prefix":"f.","suffix":null}],"privacy":null},{"id":"lllfw","uuid":"477c7f1b-547f-476d-91f5-90cf16eeea10","name":"zipp","display_name":"Zipp Storm","color":"feedfe","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/1001209923213996072/1003661213676339281/4020729__safe_artist-colon-ninnydraws_character-colon-zippstorm_species-colon-pegasus_species-colon-pony_g5_abstractbackground_adorazipp_blushing_cloud_colore.png","banner":null,"description":null,"created":"2022-04-11T20:56:10.488905Z","keep_proxy":false,"proxy_tags":[{"prefix":"z.","suffix":null}],"privacy":null},{"id":"qraku","uuid":"6d178626-866d-4cd4-96c9-99120dd3f927","name":"starrynight","display_name":"Starry Night","color":"8fa2ff","birthday":null,"pronouns":"she/pony","avatar_url":"https://cdn.discordapp.com/attachments/1001054399843541035/1002349883153457254/aa.png","banner":null,"description":null,"created":"2022-07-28T22:59:28.759014Z","keep_proxy":false,"proxy_tags":[{"prefix":"st.","suffix":null}],"privacy":null},{"id":"hpwyq","uuid":"494e0197-5120-4945-95db-5a7bbcb943f8","name":"frost","display_name":"Frost Crystals","color":"8dd4f4","birthday":null,"pronouns":"she/it","avatar_url":"https://cdn.discordapp.com/attachments/1001209923213996072/1006687046175309904/pony-town-Frost_Crystals-stand-16x_copy.png","banner":null,"description":null,"created":"2022-08-09T22:09:03.803667Z","keep_proxy":false,"proxy_tags":[{"prefix":"c.","suffix":null}],"privacy":null},{"id":"tfbob","uuid":"836fb0f7-35ce-4c74-927d-a578fc4f9cd3","name":"violet","display_name":"Violet Dawn","color":"e7e27e","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/969995660063563807/1000755118356054137/PT_Violet_copy.png","banner":null,"description":"Sitll not a mango","created":"2022-07-24T13:18:23.34571Z","keep_proxy":false,"proxy_tags":[{"prefix":"v.","suffix":null}],"privacy":null},{"id":"qbzxm","uuid":"4f9b04df-0789-4729-bca3-c37c79d92f16","name":"minty","display_name":"Minty","color":"a4febe","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/871135099947741227/965236837847273482/1Minty_in_Sundae_Sundae_Sundae_MLPS5_copy.png","banner":null,"description":null,"created":"2022-04-08T16:43:20.621455Z","keep_proxy":false,"proxy_tags":[{"prefix":"m.","suffix":null}],"privacy":null},{"id":"pabmo","uuid":"602683be-8135-4a00-ae2b-239fe46c6bfc","name":"babs","display_name":"Babs Seed","color":"d69d46","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/983706729659387924/987267468181532672/babs.png","banner":null,"description":null,"created":"2022-06-17T08:00:44.14581Z","keep_proxy":false,"proxy_tags":[{"prefix":"b.","suffix":null}],"privacy":null},{"id":"zdtsg","uuid":"f4d41b23-deb4-4501-b193-768fe5e56337","name":"unknown","display_name":"Unknown","color":"cccccc","birthday":null,"pronouns":"best to ask","avatar_url":"https://cdn.discordapp.com/attachments/996402620975562905/1001041785134518433/pony-town-Unknown_pony-stand-16x_copy.png","banner":null,"description":null,"created":"2022-07-21T20:55:06.06549Z","keep_proxy":false,"proxy_tags":[{"prefix":"{","suffix":"}"}],"privacy":null},{"id":"rirgf","uuid":"be0dbae7-11c8-4629-a610-815d71d2131b","name":"scootaloo","display_name":"Scoots/Mia","color":"fea439","birthday":null,"pronouns":"she/pony","avatar_url":"https://cdn.discordapp.com/attachments/1001209923213996072/1004449382181122078/final.png","banner":null,"description":null,"created":"2022-04-08T16:43:16.440878Z","keep_proxy":false,"proxy_tags":[{"prefix":"s.","suffix":null}],"privacy":null},{"id":"zajrk","uuid":"5ddf123d-40ba-49fb-81b9-8d77728dbb3a","name":"mossystorm","display_name":"Mossy Storm","color":"9eff95","birthday":null,"pronouns":"she/they","avatar_url":"https://cdn.discordapp.com/attachments/969995660063563807/997577513066831933/mossy.png","banner":null,"description":null,"created":"2022-07-15T18:55:35.694303Z","keep_proxy":false,"proxy_tags":[{"prefix":"t.","suffix":null}],"privacy":null},{"id":"khsbb","uuid":"0e107292-40a3-40ce-8158-7bc4657d409d","name":"poseybloom","display_name":"Posey Bloom","color":"fff09b","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/923518648059047957/1007954700932481065/khsbb.png","banner":null,"description":null,"created":"2022-08-13T10:08:50.330629Z","keep_proxy":false,"proxy_tags":[{"prefix":"po.","suffix":null}],"privacy":null}] \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-mhnqy-metadata.json b/includes/data.backup2/gdapd-mhnqy-metadata.json
deleted file mode 100644
index a9f69ae..0000000
--- a/includes/data.backup2/gdapd-mhnqy-metadata.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "bitset": 8392704,
- "regression": null,
- "marefriends": [],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-nabky-content.html b/includes/data.backup2/gdapd-nabky-content.html
deleted file mode 100644
index 8df6b9c..0000000
--- a/includes/data.backup2/gdapd-nabky-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p><span style="color:rgb(255,255,255);">even though i'm here and chilling, it's very draining for my headmates to communicate with me, so please try to avoid talking with me. thanks! (also i don't like fronting)</span></p> \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-nabky-metadata.json b/includes/data.backup2/gdapd-nabky-metadata.json
deleted file mode 100644
index d10c153..0000000
--- a/includes/data.backup2/gdapd-nabky-metadata.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "bitset": 8458240,
- "regression": null,
- "marefriends": [],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-pabmo-content.html b/includes/data.backup2/gdapd-pabmo-content.html
deleted file mode 100644
index 6796cec..0000000
--- a/includes/data.backup2/gdapd-pabmo-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p><span style="color:rgb(255,255,255);">hi!!! i like to call scoots mom because this is what she is, and i love sweetie belle cos she is cute &lt;3</span></p> \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-pabmo-metadata.json b/includes/data.backup2/gdapd-pabmo-metadata.json
deleted file mode 100644
index 6c142d2..0000000
--- a/includes/data.backup2/gdapd-pabmo-metadata.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "bitset": 5376000,
- "regression": null,
- "marefriends": [
- "ynmuc/gevde"
- ],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-planner.json b/includes/data.backup2/gdapd-planner.json
deleted file mode 100644
index 18e8fd0..0000000
--- a/includes/data.backup2/gdapd-planner.json
+++ /dev/null
@@ -1 +0,0 @@
-{"2022-08-08":["rirgf"],"2022-08-09":["pabmo","qbzxm","ztfjz","lllfw"],"2022-08-10":[],"2022-08-11":[],"2022-08-12":[],"2022-08-13":[],"2022-08-14":["qraku","rirgf"],"2022-08-15":["rirgf","rirgf","hpwyq","rirgf"],"2022-08-16":["khsbb","rirgf","ztfjz"],"2022-08-17":["zajrk","qbzxm","pabmo"],"2022-08-18":["qbzxm","rirgf","rirgf","rirgf"],"2022-08-19":["ztfjz","rirgf","rirgf"],"2022-08-20":["lllfw","rirgf","tfbob"],"2022-08-21":["rirgf"],"2022-08-22":[],"2022-08-23":[]} \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-qbzxm-content.html b/includes/data.backup2/gdapd-qbzxm-content.html
deleted file mode 100644
index 90e39f1..0000000
--- a/includes/data.backup2/gdapd-qbzxm-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>Hello there, I'm Minty (not a fictive though)! I'm a member in the Raindrops System.</p><p>I... don't really have much to say here, I guess I can say I'm the... second host? Like I'm the one to front the most often after Scoots.</p><p>See ya!</p> \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-qbzxm-metadata.json b/includes/data.backup2/gdapd-qbzxm-metadata.json
deleted file mode 100644
index 9ef7f71..0000000
--- a/includes/data.backup2/gdapd-qbzxm-metadata.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "bitset": 8652800,
- "regression": null,
- "marefriends": [
- "ynmuc/erknz"
- ],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-qraku-metadata.json b/includes/data.backup2/gdapd-qraku-metadata.json
deleted file mode 100644
index 1dc1e03..0000000
--- a/includes/data.backup2/gdapd-qraku-metadata.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "bitset": 8392704,
- "regression": null,
- "marefriends": [
- "ynmuc/xcjhj"
- ],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-rirgf-content.html b/includes/data.backup2/gdapd-rirgf-content.html
deleted file mode 100644
index 5d41c45..0000000
--- a/includes/data.backup2/gdapd-rirgf-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>Hey there!</p><p>My name is Scootaloo, and I am the host of the Raindrops System. We became plural "by accident" after I had to deal with high stress. <a href="/raindrops/minty">Minty</a> formed first and then others came; and now we're living happily! <a href="/page/raindrops/babs">Babs</a> is our little last one and she is cute.</p><p>Besides that, I don't really have much to say... Oh yeah, I'm also an alicorn; I became one after <a href="/page/cloudburst/sunnystarscout">Sunny</a> turned me into one!</p><p>Scootaloo scoot scoot scoot scootaloo</p> \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-rirgf-metadata.json b/includes/data.backup2/gdapd-rirgf-metadata.json
deleted file mode 100644
index 1c40723..0000000
--- a/includes/data.backup2/gdapd-rirgf-metadata.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "bitset": 9085312,
- "regression": "ghuln",
- "marefriends": [
- "ynmuc/kkhbw",
- "ynmuc/xbvwt",
- "ynmuc/rpjok"
- ],
- "sisters": [
- "ynmuc/erefx",
- "ynmuc/zhtzs",
- "ynmuc/gevde",
- "ynmuc/jnbae"
- ],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-subsystems.json b/includes/data.backup2/gdapd-subsystems.json
deleted file mode 100644
index d640e4a..0000000
--- a/includes/data.backup2/gdapd-subsystems.json
+++ /dev/null
@@ -1,9 +0,0 @@
-[
- {
- "source": "rirgf",
- "source_type": "member",
- "members": [
- "ghuln"
- ]
- }
-] \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-switches.json b/includes/data.backup2/gdapd-switches.json
deleted file mode 100644
index 67824c2..0000000
--- a/includes/data.backup2/gdapd-switches.json
+++ /dev/null
@@ -1 +0,0 @@
-[{"id":"92b68e73-f4f3-4eb9-8569-1baeb1ff9d01","timestamp":"2022-08-17T10:59:47.560683Z","members":["zajrk"]},{"id":"af1619d3-e5b8-45b7-a58e-6a8260f35b94","timestamp":"2022-08-16T12:18:33.833164Z","members":["rirgf"]},{"id":"2b5c3634-10ba-4223-be33-7914c407246f","timestamp":"2022-08-16T11:54:59.722157Z","members":["khsbb"]},{"id":"f22b7984-581e-43d4-aea0-710b6292d9a1","timestamp":"2022-08-15T20:52:27.733122Z","members":["rirgf"]},{"id":"66afcc6e-1f02-454c-a55c-e583a6e6da32","timestamp":"2022-08-15T17:16:54.803355Z","members":["hpwyq"]},{"id":"4172dce2-4eb8-4884-97e4-0dfa0c8927f8","timestamp":"2022-08-14T21:59:52.947861Z","members":["rirgf"]},{"id":"4daa988d-3dcb-4f81-ac0a-ab4dcc434a2d","timestamp":"2022-08-14T16:47:43.413005Z","members":["qraku"]},{"id":"5b1418fd-6878-4958-936b-2bd7140b2a45","timestamp":"2022-08-14T10:20:26.479674Z","members":["rirgf"]},{"id":"3b1f7f95-69fc-4a63-8e74-8beeef782b5b","timestamp":"2022-08-13T20:07:02.86133Z","members":["tfbob"]},{"id":"46bedbdf-565f-4d4a-98c9-0dc09c14b2ee","timestamp":"2022-08-13T12:21:48.59001Z","members":["rirgf"]},{"id":"c73b2c9a-4b75-47bf-825b-f190340e78ca","timestamp":"2022-08-13T12:03:28.694944Z","members":["khsbb"]},{"id":"9f3fa117-f58b-439f-b51d-bbe263217a01","timestamp":"2022-08-13T07:14:34.150005Z","members":["rirgf"]},{"id":"dc82613d-a896-4dbc-82c5-a3cf5118b8c4","timestamp":"2022-08-13T00:10:22.653306Z","members":["qbzxm"]},{"id":"0b2e4c39-bdfa-44b5-9379-018efb140425","timestamp":"2022-08-13T00:07:26.817341Z","members":["khsbb"]},{"id":"8f450a22-3512-4787-bf14-75be9c013a1e","timestamp":"2022-08-12T20:14:36.443304Z","members":["rirgf"]},{"id":"6d1b9b32-8f2f-4963-abf1-e1c77b9471cb","timestamp":"2022-08-12T12:09:17.028864Z","members":["hpwyq"]},{"id":"5e045e22-0e9d-4abb-b8dc-1db8faef1fd0","timestamp":"2022-08-11T17:03:34.650879Z","members":["rirgf"]},{"id":"ffc95a36-8f97-449b-a3e2-9f30c7f601a4","timestamp":"2022-08-11T09:17:49.443269Z","members":["zajrk"]},{"id":"fcea043b-0e13-4e2b-ad3e-6c7c035d9109","timestamp":"2022-08-10T19:57:46.185006Z","members":["rirgf"]},{"id":"f76563d4-871c-422c-a432-20e321ff2024","timestamp":"2022-08-10T19:47:20.16938Z","members":["qraku"]},{"id":"ba0d8b16-5fce-42ca-bfad-ce2f04e68b63","timestamp":"2022-08-10T16:37:53.417376Z","members":["qbzxm"]},{"id":"22219c7c-2ef2-4528-9c44-9171c7caa950","timestamp":"2022-08-09T22:31:26.366993Z","members":["rirgf"]},{"id":"b8419e24-aaa0-4798-83cd-d6c76b090275","timestamp":"2022-08-09T21:34:01.139016Z","members":["hpwyq"]},{"id":"54467b10-6576-411f-a046-03c042c51f52","timestamp":"2022-08-09T21:02:53.982968Z","members":["rirgf"]},{"id":"a813785b-81c8-409c-aae0-d3b1d7062697","timestamp":"2022-08-09T19:26:38.337575Z","members":["qbzxm"]},{"id":"692f9d63-1d62-4bbb-aa1d-4bd8092ecba5","timestamp":"2022-08-09T16:33:44.815122Z","members":["ztfjz"]},{"id":"49c84c5c-0852-4a1a-849d-4cf6c7bb5d6d","timestamp":"2022-08-09T11:13:55.456085Z","members":["qbzxm"]},{"id":"78556bb9-8213-46d9-a26d-fb2d9b10d045","timestamp":"2022-08-09T10:27:49.477647Z","members":["pabmo"]},{"id":"d344e270-3dfa-4bf3-8941-23465ff2448d","timestamp":"2022-08-08T19:50:12.6011Z","members":["tfbob"]},{"id":"89d8f84f-ebd9-490d-854e-a906fd7c01de","timestamp":"2022-08-08T18:46:32.842774Z","members":["qbzxm"]},{"id":"0eb51883-833d-4a0c-8b3f-9baa17738d20","timestamp":"2022-08-07T21:40:14.401648Z","members":["rirgf"]},{"id":"cf244a4f-c224-47a2-b0f2-8c94252f002a","timestamp":"2022-08-07T17:48:24.086037Z","members":["qraku"]},{"id":"3faf8e32-8270-418f-bdf4-5d309df1dc93","timestamp":"2022-08-06T17:29:22.598734Z","members":["rirgf"]},{"id":"65729cea-2351-45ed-a892-fe3719824b9b","timestamp":"2022-08-06T11:50:54.921437Z","members":["zajrk"]},{"id":"ad3b3d51-417c-4d7f-bbb0-3d788ea357ad","timestamp":"2022-08-05T21:07:14.043973Z","members":["tfbob"]},{"id":"f79729b4-1d7c-49fe-b4fa-f0a7dd39b53c","timestamp":"2022-08-05T20:48:10.001822Z","members":["qbzxm"]},{"id":"82321da0-ffa7-4635-b3d2-0b5f1ec9d9ce","timestamp":"2022-08-04T22:37:33.586985Z","members":["rirgf"]},{"id":"67c7eee0-0bfa-40f4-bac8-cfae90fcaaf0","timestamp":"2022-08-04T18:43:23.315562Z","members":["qbzxm"]},{"id":"3b25583f-1b1f-4ad3-ae93-407576994f92","timestamp":"2022-08-04T10:05:14.051056Z","members":["rirgf"]},{"id":"bc8d3507-17d1-4df7-8845-81f9a4843b45","timestamp":"2022-08-03T22:17:42.734142Z","members":["ztfjz"]},{"id":"4964e024-57a3-4b3f-9aef-e83fbdad0607","timestamp":"2022-08-01T20:11:28.55833Z","members":["rirgf"]},{"id":"fed1552f-e599-4ffe-b07b-907004ac4ab1","timestamp":"2022-08-01T20:04:25.509838Z","members":["pabmo"]},{"id":"d5b3828d-56e5-49ad-bd88-5029f5d7b22b","timestamp":"2022-08-01T19:43:48.588965Z","members":["rirgf"]},{"id":"ce44d6af-f0ae-4cb8-96a9-fe098eb46c6e","timestamp":"2022-08-01T19:01:29.115782Z","members":["qbzxm"]},{"id":"a6f6c503-8bb7-425e-a4e7-8866a79aee7b","timestamp":"2022-08-01T14:05:00.315012Z","members":["rirgf"]},{"id":"27845666-2a76-4d13-8a9d-5c17710fa370","timestamp":"2022-08-01T12:26:15.568718Z","members":["lllfw"]},{"id":"52ce7c22-a545-47ed-922f-8963c11a5ea2","timestamp":"2022-07-31T21:19:59.722328Z","members":["rirgf"]},{"id":"4272500e-7642-4d3d-8358-5ac3974f4fff","timestamp":"2022-07-31T17:06:55.285503Z","members":["qbzxm"]},{"id":"c4763a2f-b9a1-4b50-b2a9-071c38d72f02","timestamp":"2022-07-31T08:05:43.313585Z","members":["rirgf"]},{"id":"21ac816a-e8b1-426f-93ad-fc0df3c0530b","timestamp":"2022-07-30T20:22:25.228871Z","members":["qbzxm"]},{"id":"25445dd3-8ac7-404c-a52e-dad17da18ede","timestamp":"2022-07-29T20:14:19.761376Z","members":["qraku"]},{"id":"7040be4e-6f03-4138-99fe-16056fe5e576","timestamp":"2022-07-29T09:09:09.176402Z","members":["rirgf"]},{"id":"ef79772b-349c-4cc3-bbde-368a6ac2550c","timestamp":"2022-07-28T22:59:36.510106Z","members":["qraku"]},{"id":"fc93240f-d6f2-4bab-a069-e0c9981d2785","timestamp":"2022-07-28T21:52:05.87279Z","members":["zdtsg"]},{"id":"3126221d-1144-46ab-9c46-6e291b529556","timestamp":"2022-07-28T19:55:12.081418Z","members":["rirgf"]},{"id":"d4f080c6-4b1f-4089-9b89-88cf22d0f353","timestamp":"2022-07-28T18:06:22.938226Z","members":["tfbob"]},{"id":"43d22b42-7c2b-446e-a3d1-b957b7d9c712","timestamp":"2022-07-28T05:25:56.910286Z","members":["rirgf"]},{"id":"1715e122-4131-4085-bec2-6e2c0f149940","timestamp":"2022-07-27T21:42:13.259365Z","members":["pabmo"]},{"id":"f0b37bca-16c3-4698-b4be-7ec4afff2dc5","timestamp":"2022-07-27T18:46:36.560704Z","members":["rirgf"]},{"id":"c75db3f3-634a-4505-957b-cb423be0ad13","timestamp":"2022-07-27T16:12:22.243247Z","members":["zajrk"]},{"id":"b6c23549-5bc1-4e90-8fa4-48da5fc3b20b","timestamp":"2022-07-27T10:09:31.651745Z","members":["qbzxm"]},{"id":"20cee1ba-0a68-4c48-8485-849e2dc4e157","timestamp":"2022-07-26T21:04:51.450343Z","members":["rirgf"]},{"id":"1757ad08-90a6-4e82-b63d-afdfa3742c6e","timestamp":"2022-07-26T17:30:36.587593Z","members":["qbzxm"]},{"id":"ef14dae6-9818-4311-8dc7-1d0254a231db","timestamp":"2022-07-26T15:57:02.524728Z","members":["rirgf"]},{"id":"b090b4d3-562b-42fe-973d-f8962622ce41","timestamp":"2022-07-26T14:39:29.438447Z","members":["tfbob"]},{"id":"32b9da79-5f26-4649-bc20-19095a179167","timestamp":"2022-07-25T20:59:30.709838Z","members":["rirgf"]},{"id":"d1a3b61b-243c-4584-a5bb-9d8c00975282","timestamp":"2022-07-25T20:32:25.953745Z","members":["qbzxm"]},{"id":"397c4c5b-bee1-4554-958f-d3e2f6134a36","timestamp":"2022-07-24T17:43:00.397207Z","members":["rirgf"]},{"id":"f13f4738-e8fe-46c2-bd5b-bb131eaa7c10","timestamp":"2022-07-24T14:32:38.054365Z","members":["tfbob"]},{"id":"45668f5d-a891-478b-ac2b-7d31ce73421c","timestamp":"2022-07-24T08:58:33.529167Z","members":["rirgf"]},{"id":"0b7f4875-72fa-4243-a17b-604148103fe7","timestamp":"2022-07-23T21:45:15.230386Z","members":["qbzxm"]},{"id":"844bdef9-2b39-4d75-b001-aa4721f2ff1e","timestamp":"2022-07-23T21:34:44.271635Z","members":["pabmo"]},{"id":"985e06b3-3a97-4e7d-8e41-3c7d0ac06ffa","timestamp":"2022-07-23T18:18:21.309123Z","members":["rirgf"]},{"id":"1541719c-0f41-49e8-a609-483cf382b35d","timestamp":"2022-07-23T14:50:21.26306Z","members":["qbzxm"]},{"id":"512fa59d-765a-439f-a6db-8c866ccf0c6a","timestamp":"2022-07-22T15:46:19.2312Z","members":["rirgf"]},{"id":"f6b66e60-c856-41d4-8496-59975da4423d","timestamp":"2022-07-22T15:34:21.162526Z","members":["qbzxm"]},{"id":"84e8dbdf-b918-46e9-b4a3-bcdb7ee33b03","timestamp":"2022-07-21T13:52:07.216638Z","members":["rirgf"]},{"id":"e2b8e446-3e9b-4bb1-be22-ceb3258ceb8a","timestamp":"2022-07-21T12:03:32.175019Z","members":["pabmo"]},{"id":"c6192b28-0294-4e35-81cf-e9639ea3f559","timestamp":"2022-07-20T14:44:15.411925Z","members":["rirgf"]},{"id":"f88592a9-14b7-4889-9d9e-b93a21c62f53","timestamp":"2022-07-20T14:07:50.524272Z","members":["pabmo"]},{"id":"4399ab86-9f74-4ad0-8627-c3be32cf737c","timestamp":"2022-07-17T17:07:18.349492Z","members":["rirgf"]},{"id":"3f7b4427-a02b-4deb-9db9-e9da7d1b8328","timestamp":"2022-07-17T16:18:33.470761Z","members":["qbzxm"]},{"id":"71ce6e4a-929d-4ecd-b91b-c3d39a9543bd","timestamp":"2022-07-16T15:18:26.473768Z","members":["rirgf"]},{"id":"3b6b0887-c419-4f9a-913e-0ac0ecef6373","timestamp":"2022-07-16T13:42:24.106996Z","members":["zajrk"]},{"id":"58a0e1fa-20c0-492b-a8fc-ebbf67c460a9","timestamp":"2022-07-15T19:03:54.617821Z","members":["rirgf"]},{"id":"fc6b0777-ca66-42c6-8c7a-ae4d2036a5ca","timestamp":"2022-07-14T21:00:19.67511Z","members":["qbzxm"]},{"id":"6b871057-5004-4b71-9be2-4d2e700738a6","timestamp":"2022-07-13T09:59:26.547608Z","members":["rirgf"]},{"id":"1a8736fd-b23f-40c9-90d2-8d6a23470baf","timestamp":"2022-07-13T09:32:43.799837Z","members":["lllfw"]},{"id":"dca1c1a2-83e5-4f51-9b89-fc4d11929089","timestamp":"2022-07-07T20:04:12.645966Z","members":["rirgf"]},{"id":"8aa28015-1047-448b-b0b7-16e7fc32c969","timestamp":"2022-07-06T20:14:51.040455Z","members":["qbzxm"]},{"id":"eeb4cfac-14c1-4207-a477-82d3307de2f5","timestamp":"2022-05-01T10:41:26.557008Z","members":["rirgf"]},{"id":"6fef8d73-dccb-40b6-9ace-4463da383a94","timestamp":"2022-04-16T08:42:25.46511Z","members":[]},{"id":"16bbd909-af89-4454-ac7a-3a8209a624e2","timestamp":"2022-04-16T08:41:28.285794Z","members":["qbzxm"]}] \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-tfbob-content.html b/includes/data.backup2/gdapd-tfbob-content.html
deleted file mode 100644
index 275ba1d..0000000
--- a/includes/data.backup2/gdapd-tfbob-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>Henlo! I am Violet Dawn, and I am a bat pony!</p><p>I really like all sorts of fruits (they're so tasty) but I hate light and loud/high pitched sounds. Besides that, I don't really have much to say; also I love Sky Dream.</p><p>eeeeeeeeee~!</p> \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-tfbob-metadata.json b/includes/data.backup2/gdapd-tfbob-metadata.json
deleted file mode 100644
index 604d6bd..0000000
--- a/includes/data.backup2/gdapd-tfbob-metadata.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "bitset": 8398848,
- "regression": null,
- "marefriends": [
- "ynmuc/zzise"
- ],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-zajrk-metadata.json b/includes/data.backup2/gdapd-zajrk-metadata.json
deleted file mode 100644
index db9a223..0000000
--- a/includes/data.backup2/gdapd-zajrk-metadata.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "bitset": 8394752,
- "regression": null,
- "marefriends": [
- "ynmuc/mglyq"
- ],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/gdapd-ztfjz-metadata.json b/includes/data.backup2/gdapd-ztfjz-metadata.json
deleted file mode 100644
index da9434c..0000000
--- a/includes/data.backup2/gdapd-ztfjz-metadata.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "bitset": 8392704,
- "regression": null,
- "marefriends": [],
- "sisters": [
- "ynmuc/vvsxf"
- ],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/images/pf-gdapd-ghuln.webp b/includes/data.backup2/images/pf-gdapd-ghuln.webp
deleted file mode 100644
index f060e72..0000000
--- a/includes/data.backup2/images/pf-gdapd-ghuln.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-gdapd-hpwyq.webp b/includes/data.backup2/images/pf-gdapd-hpwyq.webp
deleted file mode 100644
index 690f8a1..0000000
--- a/includes/data.backup2/images/pf-gdapd-hpwyq.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-gdapd-khsbb.webp b/includes/data.backup2/images/pf-gdapd-khsbb.webp
deleted file mode 100644
index 24d22b5..0000000
--- a/includes/data.backup2/images/pf-gdapd-khsbb.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-gdapd-lllfw.webp b/includes/data.backup2/images/pf-gdapd-lllfw.webp
deleted file mode 100644
index 62fac0d..0000000
--- a/includes/data.backup2/images/pf-gdapd-lllfw.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-gdapd-pabmo.webp b/includes/data.backup2/images/pf-gdapd-pabmo.webp
deleted file mode 100644
index d99674a..0000000
--- a/includes/data.backup2/images/pf-gdapd-pabmo.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-gdapd-qbzxm.webp b/includes/data.backup2/images/pf-gdapd-qbzxm.webp
deleted file mode 100644
index 27ad6a7..0000000
--- a/includes/data.backup2/images/pf-gdapd-qbzxm.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-gdapd-qraku.webp b/includes/data.backup2/images/pf-gdapd-qraku.webp
deleted file mode 100644
index 6c37005..0000000
--- a/includes/data.backup2/images/pf-gdapd-qraku.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-gdapd-rirgf.webp b/includes/data.backup2/images/pf-gdapd-rirgf.webp
deleted file mode 100644
index 5fae701..0000000
--- a/includes/data.backup2/images/pf-gdapd-rirgf.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-gdapd-tfbob.webp b/includes/data.backup2/images/pf-gdapd-tfbob.webp
deleted file mode 100644
index 4bcb735..0000000
--- a/includes/data.backup2/images/pf-gdapd-tfbob.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-gdapd-zajrk.webp b/includes/data.backup2/images/pf-gdapd-zajrk.webp
deleted file mode 100644
index 0f6afcd..0000000
--- a/includes/data.backup2/images/pf-gdapd-zajrk.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-gdapd-zdtsg.webp b/includes/data.backup2/images/pf-gdapd-zdtsg.webp
deleted file mode 100644
index 54296f1..0000000
--- a/includes/data.backup2/images/pf-gdapd-zdtsg.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-gdapd-ztfjz.webp b/includes/data.backup2/images/pf-gdapd-ztfjz.webp
deleted file mode 100644
index 98a7703..0000000
--- a/includes/data.backup2/images/pf-gdapd-ztfjz.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-ynmuc-erefx.webp b/includes/data.backup2/images/pf-ynmuc-erefx.webp
deleted file mode 100644
index c0ea6a8..0000000
--- a/includes/data.backup2/images/pf-ynmuc-erefx.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-ynmuc-erknz.webp b/includes/data.backup2/images/pf-ynmuc-erknz.webp
deleted file mode 100644
index 78b6cb2..0000000
--- a/includes/data.backup2/images/pf-ynmuc-erknz.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-ynmuc-gevde.webp b/includes/data.backup2/images/pf-ynmuc-gevde.webp
deleted file mode 100644
index eac7023..0000000
--- a/includes/data.backup2/images/pf-ynmuc-gevde.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-ynmuc-gfhsr.webp b/includes/data.backup2/images/pf-ynmuc-gfhsr.webp
deleted file mode 100644
index a367f0f..0000000
--- a/includes/data.backup2/images/pf-ynmuc-gfhsr.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-ynmuc-jnbae.webp b/includes/data.backup2/images/pf-ynmuc-jnbae.webp
deleted file mode 100644
index 0867587..0000000
--- a/includes/data.backup2/images/pf-ynmuc-jnbae.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-ynmuc-kkhbw.webp b/includes/data.backup2/images/pf-ynmuc-kkhbw.webp
deleted file mode 100644
index 2e710f9..0000000
--- a/includes/data.backup2/images/pf-ynmuc-kkhbw.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-ynmuc-mglyq.webp b/includes/data.backup2/images/pf-ynmuc-mglyq.webp
deleted file mode 100644
index 4e98d51..0000000
--- a/includes/data.backup2/images/pf-ynmuc-mglyq.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-ynmuc-rdstg.webp b/includes/data.backup2/images/pf-ynmuc-rdstg.webp
deleted file mode 100644
index 99164f0..0000000
--- a/includes/data.backup2/images/pf-ynmuc-rdstg.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-ynmuc-rpjok.webp b/includes/data.backup2/images/pf-ynmuc-rpjok.webp
deleted file mode 100644
index 04c0911..0000000
--- a/includes/data.backup2/images/pf-ynmuc-rpjok.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-ynmuc-sehke.webp b/includes/data.backup2/images/pf-ynmuc-sehke.webp
deleted file mode 100644
index 08bfe26..0000000
--- a/includes/data.backup2/images/pf-ynmuc-sehke.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-ynmuc-tmgiu.webp b/includes/data.backup2/images/pf-ynmuc-tmgiu.webp
deleted file mode 100644
index 56dd727..0000000
--- a/includes/data.backup2/images/pf-ynmuc-tmgiu.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-ynmuc-vncoa.webp b/includes/data.backup2/images/pf-ynmuc-vncoa.webp
deleted file mode 100644
index c07edb2..0000000
--- a/includes/data.backup2/images/pf-ynmuc-vncoa.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-ynmuc-vvsxf.webp b/includes/data.backup2/images/pf-ynmuc-vvsxf.webp
deleted file mode 100644
index 2dd1d06..0000000
--- a/includes/data.backup2/images/pf-ynmuc-vvsxf.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-ynmuc-xbvwt.webp b/includes/data.backup2/images/pf-ynmuc-xbvwt.webp
deleted file mode 100644
index e9cec7c..0000000
--- a/includes/data.backup2/images/pf-ynmuc-xbvwt.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-ynmuc-xcjhj.webp b/includes/data.backup2/images/pf-ynmuc-xcjhj.webp
deleted file mode 100644
index 4d7a9c5..0000000
--- a/includes/data.backup2/images/pf-ynmuc-xcjhj.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-ynmuc-zhtzs.webp b/includes/data.backup2/images/pf-ynmuc-zhtzs.webp
deleted file mode 100644
index da9dcb7..0000000
--- a/includes/data.backup2/images/pf-ynmuc-zhtzs.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pf-ynmuc-zzise.webp b/includes/data.backup2/images/pf-ynmuc-zzise.webp
deleted file mode 100644
index 72bb342..0000000
--- a/includes/data.backup2/images/pf-ynmuc-zzise.webp
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-gdapd-ghuln.png b/includes/data.backup2/images/pt-gdapd-ghuln.png
deleted file mode 100644
index e0601bd..0000000
--- a/includes/data.backup2/images/pt-gdapd-ghuln.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-gdapd-hpwyq.png b/includes/data.backup2/images/pt-gdapd-hpwyq.png
deleted file mode 100644
index 348eabd..0000000
--- a/includes/data.backup2/images/pt-gdapd-hpwyq.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-gdapd-khsbb.png b/includes/data.backup2/images/pt-gdapd-khsbb.png
deleted file mode 100644
index 09032f3..0000000
--- a/includes/data.backup2/images/pt-gdapd-khsbb.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-gdapd-lllfw.png b/includes/data.backup2/images/pt-gdapd-lllfw.png
deleted file mode 100644
index 2cda43e..0000000
--- a/includes/data.backup2/images/pt-gdapd-lllfw.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-gdapd-pabmo.png b/includes/data.backup2/images/pt-gdapd-pabmo.png
deleted file mode 100644
index 5a3243e..0000000
--- a/includes/data.backup2/images/pt-gdapd-pabmo.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-gdapd-qbzxm.png b/includes/data.backup2/images/pt-gdapd-qbzxm.png
deleted file mode 100644
index 8589a82..0000000
--- a/includes/data.backup2/images/pt-gdapd-qbzxm.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-gdapd-qraku.png b/includes/data.backup2/images/pt-gdapd-qraku.png
deleted file mode 100644
index b022f28..0000000
--- a/includes/data.backup2/images/pt-gdapd-qraku.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-gdapd-rirgf.png b/includes/data.backup2/images/pt-gdapd-rirgf.png
deleted file mode 100644
index 26071d3..0000000
--- a/includes/data.backup2/images/pt-gdapd-rirgf.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-gdapd-tfbob.png b/includes/data.backup2/images/pt-gdapd-tfbob.png
deleted file mode 100644
index 69beeec..0000000
--- a/includes/data.backup2/images/pt-gdapd-tfbob.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-gdapd-zajrk.png b/includes/data.backup2/images/pt-gdapd-zajrk.png
deleted file mode 100644
index 87fa846..0000000
--- a/includes/data.backup2/images/pt-gdapd-zajrk.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-gdapd-zdtsg.png b/includes/data.backup2/images/pt-gdapd-zdtsg.png
deleted file mode 100644
index 4523069..0000000
--- a/includes/data.backup2/images/pt-gdapd-zdtsg.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-gdapd-ztfjz.png b/includes/data.backup2/images/pt-gdapd-ztfjz.png
deleted file mode 100644
index e547b71..0000000
--- a/includes/data.backup2/images/pt-gdapd-ztfjz.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-ynmuc-erefx.png b/includes/data.backup2/images/pt-ynmuc-erefx.png
deleted file mode 100644
index b0125a0..0000000
--- a/includes/data.backup2/images/pt-ynmuc-erefx.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-ynmuc-erknz.png b/includes/data.backup2/images/pt-ynmuc-erknz.png
deleted file mode 100644
index 1f358d8..0000000
--- a/includes/data.backup2/images/pt-ynmuc-erknz.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-ynmuc-gevde.png b/includes/data.backup2/images/pt-ynmuc-gevde.png
deleted file mode 100644
index ca030b2..0000000
--- a/includes/data.backup2/images/pt-ynmuc-gevde.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-ynmuc-gfhsr.png b/includes/data.backup2/images/pt-ynmuc-gfhsr.png
deleted file mode 100644
index fd483af..0000000
--- a/includes/data.backup2/images/pt-ynmuc-gfhsr.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-ynmuc-jnbae.png b/includes/data.backup2/images/pt-ynmuc-jnbae.png
deleted file mode 100644
index 184837e..0000000
--- a/includes/data.backup2/images/pt-ynmuc-jnbae.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-ynmuc-kkhbw.png b/includes/data.backup2/images/pt-ynmuc-kkhbw.png
deleted file mode 100644
index e1d5dbd..0000000
--- a/includes/data.backup2/images/pt-ynmuc-kkhbw.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-ynmuc-mglyq.png b/includes/data.backup2/images/pt-ynmuc-mglyq.png
deleted file mode 100644
index 8c234aa..0000000
--- a/includes/data.backup2/images/pt-ynmuc-mglyq.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-ynmuc-rdstg.png b/includes/data.backup2/images/pt-ynmuc-rdstg.png
deleted file mode 100644
index 4523069..0000000
--- a/includes/data.backup2/images/pt-ynmuc-rdstg.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-ynmuc-rpjok.png b/includes/data.backup2/images/pt-ynmuc-rpjok.png
deleted file mode 100644
index 4523069..0000000
--- a/includes/data.backup2/images/pt-ynmuc-rpjok.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-ynmuc-sehke.png b/includes/data.backup2/images/pt-ynmuc-sehke.png
deleted file mode 100644
index 18b4ac8..0000000
--- a/includes/data.backup2/images/pt-ynmuc-sehke.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-ynmuc-tmgiu.png b/includes/data.backup2/images/pt-ynmuc-tmgiu.png
deleted file mode 100644
index 7989e21..0000000
--- a/includes/data.backup2/images/pt-ynmuc-tmgiu.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-ynmuc-vncoa.png b/includes/data.backup2/images/pt-ynmuc-vncoa.png
deleted file mode 100644
index 938a248..0000000
--- a/includes/data.backup2/images/pt-ynmuc-vncoa.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-ynmuc-vvsxf.png b/includes/data.backup2/images/pt-ynmuc-vvsxf.png
deleted file mode 100644
index 0d416f7..0000000
--- a/includes/data.backup2/images/pt-ynmuc-vvsxf.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-ynmuc-xbvwt.png b/includes/data.backup2/images/pt-ynmuc-xbvwt.png
deleted file mode 100644
index 23f4d7b..0000000
--- a/includes/data.backup2/images/pt-ynmuc-xbvwt.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-ynmuc-xcjhj.png b/includes/data.backup2/images/pt-ynmuc-xcjhj.png
deleted file mode 100644
index 07a15fe..0000000
--- a/includes/data.backup2/images/pt-ynmuc-xcjhj.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-ynmuc-zhtzs.png b/includes/data.backup2/images/pt-ynmuc-zhtzs.png
deleted file mode 100644
index 475ae03..0000000
--- a/includes/data.backup2/images/pt-ynmuc-zhtzs.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/images/pt-ynmuc-zzise.png b/includes/data.backup2/images/pt-ynmuc-zzise.png
deleted file mode 100644
index 2b0046b..0000000
--- a/includes/data.backup2/images/pt-ynmuc-zzise.png
+++ /dev/null
Binary files differ
diff --git a/includes/data.backup2/migrate.js b/includes/data.backup2/migrate.js
deleted file mode 100755
index 716096f..0000000
--- a/includes/data.backup2/migrate.js
+++ /dev/null
@@ -1,94 +0,0 @@
-const fs = require('fs');
-
-for (let file of fs.readdirSync(".").filter(i => i.endsWith("-metadata.json"))) {
- let size = fs.readFileSync(file).toString().length;
- let json = JSON.parse(fs.readFileSync(file).toString());
- console.log("-- " + file + " --");
-
- if (!json['bitset']) {
- console.log("Migrating file...");
- let p1r = "0".repeat(2 - json['shared_memory'].toString(2).length) + json['shared_memory'].toString(2);
- let p2r = json['median'] ? "1" : "0";
- let p3r = "0".repeat(2 - json['little'].toString(2).length) + json['little'].toString(2);
- let p4r = json['protector'] ? "1" : "0";
- let p5r = json['fictive'] ? "1" : "0";
- let p6r = json['not_talking'] ? "1" : "0";
- let p7r = json['host'] ? "1" : "0";
- let p8a = json['species'][0];
- let p9a = json['species'][1];
-
- let p8r = "0000";
- switch (p8a) {
- case "earth":
- p8r = "0001";
- break;
-
- case "unicorn":
- p8r = "0010";
- break;
-
- case "pegasus":
- p8r = "0011";
- break;
-
- case "alicorn":
- p8r = "0100";
- break;
-
- case "batpony":
- p8r = "0101";
- break;
-
- case "crystal":
- p8r = "0110";
- break;
- }
-
- let p9r = "0000";
- switch (p9a) {
- case "earth":
- p9r = "0001";
- break;
-
- case "unicorn":
- p9r = "0010";
- break;
-
- case "pegasus":
- p9r = "0011";
- break;
-
- case "alicorn":
- p9r = "0100";
- break;
-
- case "batpony":
- p9r = "0101";
- break;
-
- case "crystal":
- p9r = "0110";
- break;
- }
-
- console.log("Generated bitset: " + p1r + p2r + p3r + p4r + p5r + p6r + p7r + p8r + p9r + "0000000");
-
- let ret = {
- bitset: parseInt(p1r + p2r + p3r + p4r + p5r + p6r + p7r + p8r + p9r + "0000000", 2),
- regression: json['regression'] ?? null,
- marefriends: json['marefriends'] ?? [],
- sisters: json['sisters'] ?? [],
- caretakers: json['caretakers'] ?? []
- }
-
- console.log("Saving...");
- fs.writeFileSync(file, JSON.stringify(ret, null, 2));
- let now = JSON.stringify(ret, null, 2).length;
-
- console.log("Saved space: " + (size - now) + " bytes, " + (((size - now) / size) * 100).toFixed(2) + "%");
- } else {
- console.log("File has already been migrated, ignoring.");
- }
-
- console.log("");
-} \ No newline at end of file
diff --git a/includes/data.backup2/refresh.json b/includes/data.backup2/refresh.json
deleted file mode 100644
index ce87852..0000000
--- a/includes/data.backup2/refresh.json
+++ /dev/null
@@ -1 +0,0 @@
-{"timestamp":1660748426,"duration":20} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-content.html b/includes/data.backup2/ynmuc-content.html
deleted file mode 100644
index 7c84b7f..0000000
--- a/includes/data.backup2/ynmuc-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>A description would be inserted here by some member of the Cloudburst System system.</p> \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-erefx-content.html b/includes/data.backup2/ynmuc-erefx-content.html
deleted file mode 100644
index 585463f..0000000
--- a/includes/data.backup2/ynmuc-erefx-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p><a href="/raindrops/scootaloo">Scoots</a><span style="color:rgb(255,255,255);">' sister. Definitely not written by Scoots /s</span></p> \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-erefx-metadata.json b/includes/data.backup2/ynmuc-erefx-metadata.json
deleted file mode 100644
index 030a51b..0000000
--- a/includes/data.backup2/ynmuc-erefx-metadata.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "bitset": 135168,
- "regression": null,
- "marefriends": [
- "ynmuc/xbvwt"
- ],
- "sisters": [
- "gdapd/rirgf"
- ],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-erknz-metadata.json b/includes/data.backup2/ynmuc-erknz-metadata.json
deleted file mode 100644
index 3604147..0000000
--- a/includes/data.backup2/ynmuc-erknz-metadata.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "bitset": 8392704,
- "regression": null,
- "marefriends": [
- "gdapd/qbzxm"
- ],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-fronters.json b/includes/data.backup2/ynmuc-fronters.json
deleted file mode 100644
index fd82c19..0000000
--- a/includes/data.backup2/ynmuc-fronters.json
+++ /dev/null
@@ -1 +0,0 @@
-{"id":"6a4d98e7-e23a-447b-ae37-2ab32f167610","timestamp":"2022-08-17T11:00:26.723947Z","members":[{"id":"mglyq","uuid":"d25282c7-e7c1-4052-bc38-1cc6ebd07c10","name":"velvet","display_name":"Velvet Cascade","color":"466cdb","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/825369511971913778/917772337447858196/20211207_083155.jpg","banner":null,"description":null,"created":"2021-11-04T19:10:48.370778Z","keep_proxy":false,"proxy_tags":[{"prefix":"v.","suffix":null}],"privacy":null}]} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-general.json b/includes/data.backup2/ynmuc-general.json
deleted file mode 100644
index a0229be..0000000
--- a/includes/data.backup2/ynmuc-general.json
+++ /dev/null
@@ -1 +0,0 @@
-{"id":"ynmuc","uuid":"ade46823-206b-4b0c-ad3c-caae934a5f3b","name":"Cloudburst System","description":"**\"gonna be-gonna be-gonna be my day!\"**\nwe have absolutely no clue what type of system we are, we just know it's plurality!","tag":"| Cloudburst System","pronouns":null,"avatar_url":"https://cdn.discordapp.com/attachments/923518648059047957/923647860396929035/servericon.png","banner":null,"color":null,"created":"2019-12-01T20:21:59.755765Z","privacy":null} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-gevde-metadata.json b/includes/data.backup2/ynmuc-gevde-metadata.json
deleted file mode 100644
index 8396901..0000000
--- a/includes/data.backup2/ynmuc-gevde-metadata.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "bitset": 5378048,
- "regression": null,
- "marefriends": [
- "gdapd/pabmo"
- ],
- "sisters": [
- "gdapd/rirgf"
- ],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-gfhsr-content.html b/includes/data.backup2/ynmuc-gfhsr-content.html
deleted file mode 100644
index 5abc149..0000000
--- a/includes/data.backup2/ynmuc-gfhsr-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>hello... i'm fluttershy... as my name suggests i'm quite shy at first but once i get my bearings and we've talked for a bit i open up a bit more...</p><p>thanks for reading my page</p> \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-gfhsr-metadata.json b/includes/data.backup2/ynmuc-gfhsr-metadata.json
deleted file mode 100644
index 35fe7c9..0000000
--- a/includes/data.backup2/ynmuc-gfhsr-metadata.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "bitset": 8525824,
- "regression": null,
- "marefriends": [],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-jnbae-metadata.json b/includes/data.backup2/ynmuc-jnbae-metadata.json
deleted file mode 100644
index 76a6e91..0000000
--- a/includes/data.backup2/ynmuc-jnbae-metadata.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "bitset": 8394752,
- "regression": null,
- "marefriends": [],
- "sisters": [
- "gdapd/rirgf"
- ],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-kkhbw-content.html b/includes/data.backup2/ynmuc-kkhbw-content.html
deleted file mode 100644
index 0f6c62a..0000000
--- a/includes/data.backup2/ynmuc-kkhbw-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>Hello!</p><p>I'm Twi, or Leah. Whichever you prefer honestly!</p><p>I'm the host for the <a href="https://ponies.equestria.horse/Cloudburst:About">Cloudburst System</a>...</p><p>I was not the original host, we don't know who they were but I guess they're gone now...</p><p>Honestly I'm <i>already</i> out of ideas on what to put here .c.</p> \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-kkhbw-metadata.json b/includes/data.backup2/ynmuc-kkhbw-metadata.json
deleted file mode 100644
index 5d52499..0000000
--- a/includes/data.backup2/ynmuc-kkhbw-metadata.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "bitset": 9082880,
- "regression": "tmgiu",
- "marefriends": [
- "gdapd/rirgf",
- "gdapd/hpwyq"
- ],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-members.json b/includes/data.backup2/ynmuc-members.json
deleted file mode 100644
index 126854e..0000000
--- a/includes/data.backup2/ynmuc-members.json
+++ /dev/null
@@ -1 +0,0 @@
-[{"id":"rdstg","uuid":"5236c613-18e9-429f-91f4-dd96cc7c76f4","name":"unknown","display_name":"Twilight (Unknown)","color":"b2b2b2","birthday":null,"pronouns":"best to ask","avatar_url":"https://cdn.discordapp.com/attachments/872535986943426670/896673942872420372/unknown.png","banner":null,"description":"Hello! I'm likely not entirely sure who I am, but I'm using Twilight Sparkle as a temporary identity to stay calm and not panic while I figure out what's going on.\n\nI can either be an existing headmate who can't work out they're fronting, a blend of multiple headmates who can't work out who we are, or a new pony trying to figure themselves out. If you're unsure, feel free to ask!","created":"2021-10-07T10:07:27.811956Z","keep_proxy":false,"proxy_tags":[{"prefix":"{","suffix":"}"}],"privacy":null},{"id":"vncoa","uuid":"98604b5b-568d-46d3-aa9e-17a3a7c70d3a","name":"mintygrape","display_name":"Minty Grape","color":"92429a","birthday":null,"pronouns":"they/them","avatar_url":"https://cdn.discordapp.com/attachments/825369511971913781/902177701836754994/Screenshot_20211025-134914_Chrome.jpg","banner":null,"description":null,"created":"2021-10-25T12:49:48.211953Z","keep_proxy":false,"proxy_tags":[{"prefix":"m.","suffix":null}],"privacy":null},{"id":"sehke","uuid":"123edc54-fe0e-4f31-b678-a04defc79103","name":"windyleaves","display_name":"Windy Leaves","color":"b7ff87","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/923518648059047957/1008311892328075334/signal-2022-08-14-104518_002.png","banner":null,"description":null,"created":"2022-08-14T09:49:46.221087Z","keep_proxy":false,"proxy_tags":[{"prefix":"w.","suffix":null}],"privacy":null},{"id":"gfhsr","uuid":"36c0f97d-bb15-45f3-a4d4-d23ad41f0e6f","name":"fluttershy","display_name":"Fluttershy","color":"faf5ab","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/825369511971913778/909143419652300810/2096296.png","banner":null,"description":null,"created":"2021-09-28T14:53:17.008534Z","keep_proxy":false,"proxy_tags":[{"prefix":"f.","suffix":null}],"privacy":null},{"id":"erefx","uuid":"6deaba57-be2b-4d45-9799-28a72bda38c1","name":"izzymoonbow","display_name":"Izzy Moonbow","color":"2176aa","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/923518648059047957/972591390037004328/20220507_211034.jpg","banner":null,"description":null,"created":"2022-04-10T20:36:09.022697Z","keep_proxy":false,"proxy_tags":[{"prefix":"i.","suffix":null}],"privacy":null},{"id":"zhtzs","uuid":"5d092fbc-e3ce-4bb1-9b59-679e38413f4b","name":"pipppetals","display_name":"Pipp Petals","color":"ea95d5","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/923518648059047957/1000175246374097026/FYOE0KoWYAc88hx.jpg","banner":null,"description":null,"created":"2022-06-17T20:36:02.751829Z","keep_proxy":false,"proxy_tags":[{"prefix":"pi.","suffix":null},{"prefix":"π.","suffix":null}],"privacy":null},{"id":"vvsxf","uuid":"d37ad25f-cb72-4697-a2d0-b4bf0cef52ee","name":"plushie","display_name":"Plushie","color":"9073ff","birthday":null,"pronouns":"it/its","avatar_url":"https://cdn.discordapp.com/attachments/923518648059047957/932592506854588436/20220117_110920.jpg","banner":null,"description":null,"created":"2021-09-25T21:50:25.790235Z","keep_proxy":false,"proxy_tags":[{"prefix":"p.","suffix":null}],"privacy":null},{"id":"zzise","uuid":"198d3961-2408-40b2-8f59-30a8665693a5","name":"skydream","display_name":"Sky Dream","color":"a0f0ff","birthday":null,"pronouns":"she/it","avatar_url":"https://cdn.discordapp.com/attachments/923518648059047957/932945518156464168/20220118_103210.jpg","banner":null,"description":"not mango .c.","created":"2021-10-13T23:07:23.135639Z","keep_proxy":false,"proxy_tags":[{"prefix":"d.","suffix":null}],"privacy":null},{"id":"mglyq","uuid":"d25282c7-e7c1-4052-bc38-1cc6ebd07c10","name":"velvet","display_name":"Velvet Cascade","color":"466cdb","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/825369511971913778/917772337447858196/20211207_083155.jpg","banner":null,"description":null,"created":"2021-11-04T19:10:48.370778Z","keep_proxy":false,"proxy_tags":[{"prefix":"v.","suffix":null}],"privacy":null},{"id":"rpjok","uuid":"d9b47929-e368-410e-b1ed-0cc3cb600b9b","name":"sweetiebot","display_name":"Sweetie Bot","color":"f6b8d2","birthday":null,"pronouns":"she/it","avatar_url":"https://cdn.discordapp.com/attachments/1001209923213996072/1008828825595027537/20220815_210331.png","banner":null,"description":null,"created":"2022-08-15T19:41:26.851628Z","keep_proxy":false,"proxy_tags":[{"prefix":"e.","suffix":null}],"privacy":null},{"id":"xcjhj","uuid":"e7e3a371-fa5f-49ce-8deb-86f089579310","name":"blueberrycloud","display_name":"Blueberry Cloud","color":"fffbae","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/923518648059047957/998365934303580181/unknown.png","banner":null,"description":null,"created":"2022-07-17T23:06:38.533806Z","keep_proxy":false,"proxy_tags":[{"prefix":"b.","suffix":null}],"privacy":null},{"id":"erknz","uuid":"dd9ba9db-08f2-4518-aa90-a479f6e60b7e","name":"lavender","display_name":"Lavender","color":"e99fe4","birthday":null,"pronouns":"she/pony","avatar_url":"https://cdn.discordapp.com/attachments/872535986943426670/896674044701724723/lavender.png","banner":null,"description":null,"created":"2021-10-06T19:29:17.195373Z","keep_proxy":false,"proxy_tags":[{"prefix":"l.","suffix":null}],"privacy":null},{"id":"gevde","uuid":"91f6e79e-36a1-4fd6-8cd9-62e8522661aa","name":"sweetiebelle","display_name":"Sweetie Belle","color":"efeded","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/825369511796539412/923255682227122226/20211222_164348.png","banner":null,"description":null,"created":"2021-12-22T16:42:59.140195Z","keep_proxy":false,"proxy_tags":[{"prefix":"sb.","suffix":null}],"privacy":null},{"id":"jnbae","uuid":"7adba16f-e0fe-4b4b-b5a2-658d1d73581f","name":"mistycloud","display_name":"Misty Cloud","color":"7083de","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/969995660063563807/999794243113603103/misty.png","banner":null,"description":null,"created":"2022-06-22T07:49:16.85348Z","keep_proxy":false,"proxy_tags":[{"prefix":"c.","suffix":null}],"privacy":null},{"id":"kkhbw","uuid":"6fde8569-27e1-4c4d-b305-66aa62915168","name":"twilight","display_name":"Twi/Leah","color":"cc9cdf","birthday":null,"pronouns":"she/pony","avatar_url":"https://cdn.discordapp.com/attachments/1001209923213996072/1002285835565150360/pfp.png","banner":null,"description":null,"created":"2021-09-25T22:25:41.356595Z","keep_proxy":false,"proxy_tags":[{"prefix":"t.","suffix":null}],"privacy":null},{"id":"xbvwt","uuid":"ef94e497-2b6c-4f8a-9533-0b0a125874e1","name":"sunnystarscout","display_name":"Sunny Starscout","color":"f3a493","birthday":null,"pronouns":"she/her","avatar_url":"https://cdn.discordapp.com/attachments/923518648059047957/962383825185419304/20220409_170931.jpg","banner":null,"description":null,"created":"2022-04-09T15:33:50.487224Z","keep_proxy":false,"proxy_tags":[{"prefix":"s.","suffix":null}],"privacy":null},{"id":"tmgiu","uuid":"0b7e9bc7-7555-49ec-b2f5-cb4175f5f6f4","name":"smoltwi","display_name":"Filly Twi","color":"e0c3eb","birthday":null,"pronouns":null,"avatar_url":"https://cdn.discordapp.com/attachments/1001209923213996072/1005754097267388517/20220807_092727.png","banner":null,"description":null,"created":"2022-08-07T08:21:20.865853Z","keep_proxy":false,"proxy_tags":[{"prefix":"st.","suffix":null}],"privacy":null}] \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-mglyq-content.html b/includes/data.backup2/ynmuc-mglyq-content.html
deleted file mode 100644
index 068c227..0000000
--- a/includes/data.backup2/ynmuc-mglyq-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p><span style="color:rgb(255,255,255);">heya! i'm velvet cascade. i'm an earth pony in the </span><a href="/cloudburst">Cloudburst System</a><span style="color:rgb(255,255,255);">. i like farming and gardening in general! i especially like setting up intricate displays to showcase flower designs on </span><a href="https://pony.town/">Pony Town</a><span style="color:rgb(255,255,255);"> (and hopefully one day, in real life!)</span></p> \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-mglyq-metadata.json b/includes/data.backup2/ynmuc-mglyq-metadata.json
deleted file mode 100644
index 43cb2bf..0000000
--- a/includes/data.backup2/ynmuc-mglyq-metadata.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "bitset": 8390656,
- "regression": null,
- "marefriends": [
- "gdapd/zajrk"
- ],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-planner.json b/includes/data.backup2/ynmuc-planner.json
deleted file mode 100644
index a57f899..0000000
--- a/includes/data.backup2/ynmuc-planner.json
+++ /dev/null
@@ -1 +0,0 @@
-{"2022-08-08":["jnbae","kkhbw","xbvwt"],"2022-08-09":["vncoa","zhtzs","zzise","gevde"],"2022-08-10":[],"2022-08-11":[],"2022-08-12":[],"2022-08-13":[],"2022-08-14":["zzise","xbvwt"],"2022-08-15":["xbvwt","kkhbw","kkhbw","kkhbw"],"2022-08-16":["zhtzs","kkhbw","vvsxf"],"2022-08-17":["mglyq","erknz","gevde"],"2022-08-18":["kkhbw","xbvwt","jnbae","erefx"],"2022-08-19":["sehke","kkhbw","gfhsr"],"2022-08-20":["zzise","kkhbw","zzise"],"2022-08-21":["rpjok"],"2022-08-22":[],"2022-08-23":[]} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-rpjok-metadata.json b/includes/data.backup2/ynmuc-rpjok-metadata.json
deleted file mode 100644
index e6c9fb4..0000000
--- a/includes/data.backup2/ynmuc-rpjok-metadata.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "bitset": 10096644,
- "regression": null,
- "marefriends": [
- "gdapd/rirgf"
- ],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-sehke-metadata.json b/includes/data.backup2/ynmuc-sehke-metadata.json
deleted file mode 100644
index 666313a..0000000
--- a/includes/data.backup2/ynmuc-sehke-metadata.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "bitset": 8390656,
- "regression": null,
- "marefriends": [],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-subsystem-sparkles.html b/includes/data.backup2/ynmuc-subsystem-sparkles.html
deleted file mode 100644
index dbcf6fc..0000000
--- a/includes/data.backup2/ynmuc-subsystem-sparkles.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>A description would be inserted here by some member of the Sparkles subsystem.</p> \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-subsystem-sparkles.json b/includes/data.backup2/ynmuc-subsystem-sparkles.json
deleted file mode 100644
index 0f21fbd..0000000
--- a/includes/data.backup2/ynmuc-subsystem-sparkles.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "name": "The Sparkles"
-} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-subsystems.json b/includes/data.backup2/ynmuc-subsystems.json
deleted file mode 100644
index 7bfb72e..0000000
--- a/includes/data.backup2/ynmuc-subsystems.json
+++ /dev/null
@@ -1,18 +0,0 @@
-[
- {
- "source": "kkhbw",
- "source_type": "member",
- "members": [
- "tmgiu"
- ]
- },
- {
- "source": "sparkles",
- "source_type": "trait",
- "members": [
- "xbvwt",
- "erefx",
- "zhtzs"
- ]
- }
-] \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-switches.json b/includes/data.backup2/ynmuc-switches.json
deleted file mode 100644
index 483f554..0000000
--- a/includes/data.backup2/ynmuc-switches.json
+++ /dev/null
@@ -1 +0,0 @@
-[{"id":"6a4d98e7-e23a-447b-ae37-2ab32f167610","timestamp":"2022-08-17T11:00:26.723947Z","members":["mglyq"]},{"id":"661405ad-32ea-4f9e-9113-beccd90246b4","timestamp":"2022-08-16T21:01:46.551775Z","members":["kkhbw"]},{"id":"e41baefe-a8bf-4251-a41b-feef66ed937e","timestamp":"2022-08-16T17:08:35.958957Z","members":["rpjok"]},{"id":"e34d352d-d87a-45a3-a410-5c7b6df4e187","timestamp":"2022-08-16T12:43:00Z","members":["kkhbw"]},{"id":"51927cf9-b9a6-4bd9-a836-6898bf3add14","timestamp":"2022-08-16T11:55:12.937271Z","members":["zhtzs"]},{"id":"3f7f1d96-e470-4ce3-8db8-9a8fd02da783","timestamp":"2022-08-15T10:11:10.949152Z","members":["kkhbw"]},{"id":"0366ba60-5764-469d-9d35-306a03a46067","timestamp":"2022-08-14T22:02:43.044156Z","members":["xbvwt"]},{"id":"34392421-b3d1-4296-b64a-dedc3f6b6b21","timestamp":"2022-08-14T20:36:30.524993Z","members":["zzise"]},{"id":"dfde5190-4841-4f12-9fb1-ed9169a74036","timestamp":"2022-08-14T16:47:31.267802Z","members":["xcjhj"]},{"id":"25c5d180-bd1e-47e9-bbcd-f97841c67a3d","timestamp":"2022-08-13T23:51:13.760211Z","members":["sehke"]},{"id":"a32ca520-9cb6-4a1a-a7a3-0084b580cf22","timestamp":"2022-08-13T20:07:33.14934Z","members":["zzise"]},{"id":"2121b2cd-7620-4aeb-8f44-fc9cbe1958b7","timestamp":"2022-08-11T20:57:11.576129Z","members":["kkhbw"]},{"id":"c957b69e-aad4-4d1f-a8d9-4df49833aabe","timestamp":"2022-08-11T20:35:36.664374Z","members":["xbvwt"]},{"id":"bdc01a53-e3e3-4237-bf2f-fb8812741e84","timestamp":"2022-08-11T17:03:29.455494Z","members":["kkhbw"]},{"id":"5bb21f3d-19ca-43c5-a7de-503613229e12","timestamp":"2022-08-11T09:14:47.987122Z","members":["mglyq"]},{"id":"762d41e9-d6e8-4dd8-b1b0-a8ef3cc9db43","timestamp":"2022-08-10T19:40:55.968452Z","members":["kkhbw"]},{"id":"ff8a44ec-78b0-4afe-aaf8-b48c736923dc","timestamp":"2022-08-10T16:31:35.011505Z","members":["vncoa"]},{"id":"72e24fe3-1e3e-46df-b58f-b345f0daa363","timestamp":"2022-08-09T21:03:16.236358Z","members":["kkhbw"]},{"id":"dc397b6d-e351-4b67-a0e5-98f816166d98","timestamp":"2022-08-09T16:23:05.40537Z","members":["vvsxf"]},{"id":"21525d03-7eb3-4620-944b-dfd7a54818ab","timestamp":"2022-08-09T11:13:43.021017Z","members":["erknz"]},{"id":"9c8dc3a4-7c38-4a48-af76-ffe9c05d6aa7","timestamp":"2022-08-09T09:59:07.339238Z","members":["gevde"]},{"id":"1d2af7a0-363d-481f-8ffc-bdeb25f55f29","timestamp":"2022-08-08T19:31:18.644919Z","members":["zzise"]},{"id":"a47bd0d7-27d8-484b-ae1d-261542da0aa5","timestamp":"2022-08-08T14:39:42.200228Z","members":["kkhbw"]},{"id":"d9bdd6d6-2794-4f4e-8835-db33290d7903","timestamp":"2022-08-08T08:46:10.402919Z","members":["jnbae"]},{"id":"128a2b8f-fe62-435c-a259-fc6e88be4740","timestamp":"2022-08-07T21:31:57.32411Z","members":["erefx"]},{"id":"d0f6aa63-1551-4a9c-a876-b8b5e4f966d9","timestamp":"2022-08-06T17:20:05.59652Z","members":["kkhbw"]},{"id":"96805b65-1a14-40ba-bb0c-ac1a7a2fe695","timestamp":"2022-08-06T11:28:53.357616Z","members":["mglyq"]},{"id":"6dc862a9-57e4-4e80-9657-ef96d7fa91ff","timestamp":"2022-08-05T17:03:51.0212Z","members":["zzise"]},{"id":"988fb87b-20bd-4f9c-9da5-ed7d1609b5db","timestamp":"2022-08-05T14:04:08.789779Z","members":["kkhbw"]},{"id":"f5d227a8-3ccd-4ff4-bd98-32e4c35671bd","timestamp":"2022-08-05T11:21:53.877057Z","members":["xbvwt"]},{"id":"d5a68fbe-fd0b-431a-ac8d-32933c299ad8","timestamp":"2022-08-03T12:33:47.377523Z","members":["kkhbw"]},{"id":"d91b19dc-b804-4004-89ae-1d18a2c1f1aa","timestamp":"2022-08-03T12:23:29.380125Z","members":["zzise"]},{"id":"75c3191e-59fa-4e25-b71b-c0ec9e1f1d5f","timestamp":"2022-08-02T11:05:20.26185Z","members":["kkhbw"]},{"id":"0f7b8774-bf31-4bf2-91c5-252dcc23973e","timestamp":"2022-08-01T20:52:37.799846Z","members":["xbvwt"]},{"id":"f6d24662-cf4b-4ecd-8264-fb289ca452ba","timestamp":"2022-08-01T15:50:48.57502Z","members":["kkhbw"]},{"id":"ff5cba2e-3ea9-401c-b9a9-b62de179d923","timestamp":"2022-08-01T11:24:16.404169Z","members":["zzise"]},{"id":"9293780d-b502-4f27-a115-36522dbaa3e7","timestamp":"2022-08-01T08:12:30.67668Z","members":["erefx"]},{"id":"5282f87a-ce79-4fca-a770-d5857ff14304","timestamp":"2022-07-31T21:27:03.295077Z","members":["kkhbw"]},{"id":"d100054f-9913-4a9b-86c5-7de60f6dacb0","timestamp":"2022-07-31T16:37:29.451006Z","members":["erknz"]},{"id":"a22e1e7a-93fa-4cd6-9ae7-8a7a3a629347","timestamp":"2022-07-31T07:45:55.285055Z","members":["kkhbw"]},{"id":"762444f5-1c33-4a74-8339-837ab2db6cf5","timestamp":"2022-07-30T18:44:08.38374Z","members":["vvsxf"]},{"id":"3293e085-c941-4064-8638-bee15bf849d0","timestamp":"2022-07-29T19:41:14.095032Z","members":["xcjhj"]},{"id":"f8d87515-1a83-4bcb-9454-5d7fcd1ef462","timestamp":"2022-07-28T14:07:47.151199Z","members":["kkhbw"]},{"id":"cf8da98b-c03a-49e8-a582-e7b6f0c88f25","timestamp":"2022-07-28T12:09:20.713711Z","members":["zzise"]},{"id":"f545f42f-b65f-4a9f-8c1b-34bb8cc1bc74","timestamp":"2022-07-27T18:54:03.359331Z","members":["kkhbw"]},{"id":"a511aa5c-4ed6-43cc-b8cb-9519e22183d1","timestamp":"2022-07-27T16:05:24.568466Z","members":["mglyq"]},{"id":"c67feae6-a4a7-49cb-96d1-cea3adb769f9","timestamp":"2022-07-27T11:06:43.47133Z","members":["jnbae"]},{"id":"dc8c5da0-174b-4cac-80de-5657b2803bc8","timestamp":"2022-07-26T20:57:19.984573Z","members":["kkhbw"]},{"id":"86d2deef-e055-4508-a0ea-313e6c8167e1","timestamp":"2022-07-26T14:58:21.681152Z","members":["zzise"]},{"id":"1e6c442b-014d-4b91-a379-a4163f43920f","timestamp":"2022-07-25T14:36:42.386763Z","members":["kkhbw"]},{"id":"ad3076f7-b51a-44de-b921-0757e7d47bab","timestamp":"2022-07-25T12:10:50.029186Z","members":["vvsxf"]},{"id":"d57d7696-d17a-4a8b-97a7-4612d441fde1","timestamp":"2022-07-24T18:31:35.598319Z","members":["kkhbw"]},{"id":"7af12cfe-2729-4fb9-825c-70cd64edd2c5","timestamp":"2022-07-24T12:38:56.745626Z","members":["zzise"]},{"id":"3000a921-3f20-4714-8573-4dd8125868d5","timestamp":"2022-07-24T11:46:50.66983Z","members":["vncoa"]},{"id":"c3ebc850-c824-4111-af0a-480002fcf065","timestamp":"2022-07-24T08:47:42.514505Z","members":["xbvwt"]},{"id":"c5ba5ee2-8a55-4918-a2dc-fc605fedbfe1","timestamp":"2022-07-23T14:57:11.288643Z","members":["erknz"]},{"id":"8b8cc2e4-68cc-4aec-bebf-7df5362e3e29","timestamp":"2022-07-23T13:36:15.160833Z","members":["zzise"]},{"id":"32a35653-6599-4e80-91d6-b0d3e6e3e170","timestamp":"2022-07-23T10:28:01.152984Z","members":["gfhsr"]},{"id":"cb17c0c9-c838-4ab1-998f-33cae191a52d","timestamp":"2022-07-21T13:53:03.172427Z","members":["kkhbw"]},{"id":"72e2646c-9361-4ae5-801d-51850b3c8143","timestamp":"2022-07-21T11:31:28.867135Z","members":["gevde"]},{"id":"79414944-2583-4e8e-81cf-11f04a46f81e","timestamp":"2022-07-20T20:35:36.162672Z","members":["zhtzs"]},{"id":"6ec067a3-bd21-4518-bc78-e134f77d2d14","timestamp":"2022-07-20T19:20:53.063531Z","members":["kkhbw"]},{"id":"70b06bb2-b01c-4788-b6a8-03314efe31fd","timestamp":"2022-07-20T13:46:42.675824Z","members":["gevde"]},{"id":"43286fcd-a098-47e1-a6e7-b6d5b5636732","timestamp":"2022-07-19T13:09:43.494648Z","members":["kkhbw"]},{"id":"27b6789c-1609-4d7c-8b66-cf0e68039cfa","timestamp":"2022-07-18T21:42:03.331665Z","members":["xbvwt"]},{"id":"a7cc7729-5e2e-44e6-b501-f8546c8a8ff8","timestamp":"2022-07-17T11:49:44.64922Z","members":["kkhbw"]},{"id":"50e76dbd-6855-4fcd-96e7-b213c3f285db","timestamp":"2022-07-16T19:37:20.60917Z","members":["vvsxf"]},{"id":"a981e819-839a-482d-ac3c-74478c867f44","timestamp":"2022-07-16T15:18:58.16575Z","members":["gfhsr"]},{"id":"fa0283b4-31fe-498f-b74f-a1612794a7ca","timestamp":"2022-07-16T09:21:47.01158Z","members":["mglyq"]},{"id":"7ec121a0-fa14-4c57-8ed2-fb56a09fb22b","timestamp":"2022-07-14T15:07:58.989759Z","members":["kkhbw"]},{"id":"cba1d4ff-7e83-4edd-b982-327177b4c655","timestamp":"2022-07-14T12:03:15.028238Z","members":["jnbae"]},{"id":"3fa8f4f0-8602-48e8-b8cd-9599ba27fcee","timestamp":"2022-07-14T09:29:01.28779Z","members":["gevde"]},{"id":"d4d1c284-0782-4251-9f7f-076d34ef5a3c","timestamp":"2022-07-13T13:04:04.902073Z","members":["kkhbw"]},{"id":"7c01a511-4354-4c6b-a104-14cd3989dfb6","timestamp":"2022-07-13T09:12:43.526116Z","members":["zzise"]},{"id":"dd3f423a-b96c-44ff-b0cc-7e4f6245cdd7","timestamp":"2022-07-12T21:55:41.538956Z","members":["kkhbw"]},{"id":"2d97bab7-4763-45b1-a677-7ef08cc5d2cb","timestamp":"2022-07-12T21:21:53.21364Z","members":["gevde"]},{"id":"7cb51d48-c3e3-4263-9f29-3bff23ac10a2","timestamp":"2022-07-12T11:26:52.991209Z","members":["kkhbw"]},{"id":"141b4704-4c7e-4917-946c-c4da8772b1f2","timestamp":"2022-07-12T08:39:41.032698Z","members":["erefx"]},{"id":"006b9de1-f932-43b0-890e-74949f888c03","timestamp":"2022-07-11T10:15:03.359372Z","members":["kkhbw"]},{"id":"17533ce0-7cdd-475c-bde3-5a9a4dfa207d","timestamp":"2022-07-10T21:25:04.944671Z","members":["xbvwt"]},{"id":"a94dbc79-4b88-4260-802f-025cbee5b87f","timestamp":"2022-07-09T16:29:14.271285Z","members":["kkhbw"]},{"id":"f4dc5275-675e-494f-90dd-b841687ff6ce","timestamp":"2022-07-09T11:33:00.936258Z","members":["zzise"]},{"id":"50f7800d-6cb2-49c1-a2e5-4e1324f21257","timestamp":"2022-07-07T15:22:20.21751Z","members":["kkhbw"]},{"id":"c5832aee-2fee-4541-a472-4a0c70c92c95","timestamp":"2022-07-07T08:21:26.060082Z","members":["erknz"]},{"id":"6f3994c5-55dd-408b-bb8f-ca33a2a7591c","timestamp":"2022-07-06T15:33:21.676895Z","members":["kkhbw"]},{"id":"c7712e6d-ff01-4aa4-9f0b-d512da395728","timestamp":"2022-07-06T09:02:21.109125Z","members":["vncoa"]},{"id":"7c706268-a8fd-45f5-a874-65745f016530","timestamp":"2022-07-05T15:00:00Z","members":["kkhbw"]},{"id":"ac130bb7-6797-47b8-9cea-37e0c3139d85","timestamp":"2022-07-05T07:31:28.323064Z","members":["vvsxf"]},{"id":"7a821888-f308-4b96-b77f-f19b9d34dbc2","timestamp":"2022-07-04T14:13:56.805013Z","members":["xbvwt"]},{"id":"05b8b6f3-7e8c-4d8c-b0d9-6decbd039e6d","timestamp":"2022-07-04T10:20:25.079436Z","members":["gfhsr"]},{"id":"83b06fac-98a2-4176-ab82-301300c8c89c","timestamp":"2022-07-03T10:14:49.183852Z","members":["kkhbw"]},{"id":"0fbcb1fa-e655-4d6c-b62b-7a50f37e9f7f","timestamp":"2022-07-02T20:39:29.011589Z","members":["erefx"]},{"id":"5a94547f-3088-49c7-ae16-ca3807109ecc","timestamp":"2022-07-02T13:20:05.497265Z","members":["kkhbw"]},{"id":"626ba9c5-6b39-406d-8637-6c342b4e263d","timestamp":"2022-07-02T10:52:21.830141Z","members":["gfhsr"]},{"id":"c6751376-d751-44ed-ac84-e761928b3bf2","timestamp":"2022-07-01T14:04:06.755324Z","members":["kkhbw"]},{"id":"22778489-4c56-4234-9f99-265aa46cd321","timestamp":"2022-07-01T10:08:14.509735Z","members":["zzise"]},{"id":"f67cc64a-3d28-4a36-9732-7d9359b2af42","timestamp":"2022-06-30T15:15:47.979457Z","members":["kkhbw"]},{"id":"90fa20b7-3d2b-4a02-b5e9-8a8a8e662469","timestamp":"2022-06-30T13:46:21.38271Z","members":["xbvwt"]},{"id":"20cfadd5-6b49-4754-9435-38883c5eed97","timestamp":"2022-06-30T09:42:01.969439Z","members":["vncoa"]},{"id":"36e1ad94-0887-47f0-adc6-32e8b4e7bb4d","timestamp":"2022-06-29T17:10:16.665544Z","members":["kkhbw"]}] \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-tmgiu-metadata.json b/includes/data.backup2/ynmuc-tmgiu-metadata.json
deleted file mode 100644
index 5b9fd19..0000000
--- a/includes/data.backup2/ynmuc-tmgiu-metadata.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "bitset": 7477248,
- "median": "kkhbw",
- "regression": null,
- "marefriends": [
- "gdapd/ghuln"
- ],
- "sisters": [],
- "caretakers": [
- "gdapd/rirgf"
- ]
-} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-vncoa-metadata.json b/includes/data.backup2/ynmuc-vncoa-metadata.json
deleted file mode 100644
index 666313a..0000000
--- a/includes/data.backup2/ynmuc-vncoa-metadata.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "bitset": 8390656,
- "regression": null,
- "marefriends": [],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-vvsxf-content.html b/includes/data.backup2/ynmuc-vvsxf-content.html
deleted file mode 100644
index a8ee483..0000000
--- a/includes/data.backup2/ynmuc-vvsxf-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>hello! i'm plushie, as my name suggests i am a literal plushie</p><p>yeah that's really it honestly</p> \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-vvsxf-metadata.json b/includes/data.backup2/ynmuc-vvsxf-metadata.json
deleted file mode 100644
index 866ec06..0000000
--- a/includes/data.backup2/ynmuc-vvsxf-metadata.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "bitset": 8394752,
- "regression": null,
- "marefriends": [],
- "sisters": [
- "gdapd/ztfjz"
- ],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-xbvwt-content.html b/includes/data.backup2/ynmuc-xbvwt-content.html
deleted file mode 100644
index f3188ad..0000000
--- a/includes/data.backup2/ynmuc-xbvwt-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>Hello! I'm Sunny Starscout! I'm both an Alicorn and an Earth Pony, It's hard to control when I am an Alicorn but I'm slowly working it out!</p><p>I'm in relationships with both <a href="/cloudburst/izzymoonbow">Izzy Moonbow</a> and <a href="/page/raindrops/scootaloo">Scoots/Mia</a>!</p> \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-xbvwt-metadata.json b/includes/data.backup2/ynmuc-xbvwt-metadata.json
deleted file mode 100644
index 0255291..0000000
--- a/includes/data.backup2/ynmuc-xbvwt-metadata.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "bitset": 133632,
- "regression": null,
- "marefriends": [
- "ynmuc/erefx",
- "gdapd/rirgf"
- ],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-xcjhj-metadata.json b/includes/data.backup2/ynmuc-xcjhj-metadata.json
deleted file mode 100644
index 5ace650..0000000
--- a/includes/data.backup2/ynmuc-xcjhj-metadata.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "bitset": 8392704,
- "regression": null,
- "marefriends": [
- "gdapd/qraku"
- ],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-xxxxx-metadata.json b/includes/data.backup2/ynmuc-xxxxx-metadata.json
deleted file mode 100644
index cc33585..0000000
--- a/includes/data.backup2/ynmuc-xxxxx-metadata.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "bitset": 8523780,
- "regression": null,
- "marefriends": [],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-zhtzs-content.html b/includes/data.backup2/ynmuc-zhtzs-content.html
deleted file mode 100644
index 8f5bce7..0000000
--- a/includes/data.backup2/ynmuc-zhtzs-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>Heya! My name is Pipp Petals. I'm a social media influencer and a princess (a two in one package)!</p><p>I recently got pulled into this... place I guess? I'm still working out how stuff works here. Luckily Sunny, Izzy, and Zipp are here as well!</p><p>I currently have a twitter account set up, if you want to you can follow me at @CB_PippPetals!</p><p>I don't really know what else to write right now, but if I think of anything I'll put it here!</p> \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-zhtzs-metadata.json b/includes/data.backup2/ynmuc-zhtzs-metadata.json
deleted file mode 100644
index 1cbac39..0000000
--- a/includes/data.backup2/ynmuc-zhtzs-metadata.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "bitset": 137216,
- "regression": null,
- "marefriends": [],
- "sisters": [
- "gdapd/rirgf"
- ],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-zzise-content.html b/includes/data.backup2/ynmuc-zzise-content.html
deleted file mode 100644
index c10d824..0000000
--- a/includes/data.backup2/ynmuc-zzise-content.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>heya! i'm sky dream. i'm a batpony mare who loves to go on bike rides and hike mountains!</p><p>i guess you could call me the protector of the cloudburst system, i front whenever the pony at front can't handle it anymore, but i also front whenever i personally want to do something!</p> \ No newline at end of file
diff --git a/includes/data.backup2/ynmuc-zzise-metadata.json b/includes/data.backup2/ynmuc-zzise-metadata.json
deleted file mode 100644
index ef183a2..0000000
--- a/includes/data.backup2/ynmuc-zzise-metadata.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "bitset": 8660992,
- "regression": null,
- "marefriends": [
- "gdapd/tfbob",
- "gdapd/lllfw"
- ],
- "sisters": [],
- "caretakers": []
-} \ No newline at end of file
diff --git a/includes/emergency.php b/includes/emergency.php
index 454890d..a86e090 100644
--- a/includes/emergency.php
+++ b/includes/emergency.php
@@ -57,9 +57,6 @@
<b>Disclaimer:</b> This emergency alert system MUST NOT be used in life-threatening situations. Although it has been extensively tested in multiple conditions, it may stop working correctly or stop working at all at any time and without warning. If your life is at immediate risk, call your local emergency services.
</p>
<p>
- This service makes use of the ntfy platform, provided by a third party. Do note that their privacy policy applies when delivering the notifications; although they should not contain personal information in any way.
- </p>
- <p>
© <?= date('Y') ?> Equestria.dev
</p>
</div>
diff --git a/includes/functions.php b/includes/functions.php
new file mode 100644
index 0000000..51317ca
--- /dev/null
+++ b/includes/functions.php
@@ -0,0 +1,202 @@
+<?php
+
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/score.php";
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/bitset.php";
+
+if (!function_exists("getMiniName")) {
+ 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;
+ }
+ }
+}
+
+if (!function_exists("getSystemMember")) {
+ 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;
+ }
+}
+
+if (!function_exists("showMembersFromList")) {
+ function showMembersFromList(array $list) {
+ foreach ($list as $member) { if ($member['name'] !== "unknown" && $member['name'] !== "fusion") {
+ echo('<!-- ' . ($member['display_name'] ?? $member['name']) . ' -->
+<a href="/' . $member['name'] . '" style="text-decoration:none !important;filter:none !important;"><div class="hpd-item-card" style="background-color:rgba(255, 255, 255, .1);border:1px solid ' . (isset($member['color']) ? "#" . $member['color'] . "55" : "transparent") . ';outline-color:' . (isset($member['color']) ? "#" . $member['color'] . "55" : "transparent") . ';border-radius:10px;text-align:center;display:flex;align-items:center;justify-content:center;padding:5px;"><div>
+<img alt="" src="' . $member['avatar_url'] . '" style="border-radius:999px;background-color:rgba(0, 0, 0, .25);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['travelling'] ? "+" . ($member['proxy_tags'][0]['prefix'] ?? "&nbsp;") : ($member['proxy_tags'][0]['prefix'] ?? "&nbsp;")) . '</code></div>
+</div></div></a>');
+ }}
+ }
+}
+
+if (!function_exists("showSubsystem")) {
+ 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));
+
+ echo('</div>
+
+</div>');
+ }
+}
+
+if (!function_exists("showSystem")) {
+ function showSystem(string $id, string $name, string $color, bool $hideTitle) {
+ global $travelling;
+
+ $global = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$id-general.json"), true);
+
+ 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: #' . $global['color'] . '55;width: 148px;text-decoration:none;color:white;filter:none !important;" href="/' . ($id === "gdapd" ? "raindrops" : "cloudburst") . '" class="hpd-system">
+<div style="text-align:center;"><img src="/assets/uploads/' . ($id === "gdapd" ? "raindrops" : "cloudburst") . '.png" style="width:64px;"><br>' . $name . '</div>
+</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([...array_map(function ($i) use ($id) {
+ $i["travelling"] = false;
+ $i["system"] = $id;
+ return $i;
+ }, array_filter(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$id-members.json"), true), function ($i) use ($travelling) {
+ return !$travelling[$i['id']]['travelling'];
+ })), ...array_map(function ($i) use ($id) {
+ $i["travelling"] = true;
+ $i["system"] = ($id === "gdapd" ? "ynmuc" : "gdapd");
+ return $i;
+ }, array_filter(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/" . ($id === "gdapd" ? "ynmuc" : "gdapd") . "-members.json"), true), function ($i) use ($travelling) {
+ return $travelling[$i['id']]['travelling'];
+ }))], $id));
+
+ echo('</div>
+
+</div>');
+ }
+}
+
+if (!function_exists("cloudburst")) {
+ function cloudburst(bool $hideTitle): void {
+ showSystem("ynmuc", "Cloudburst System", "#5f08a9a6", $hideTitle);
+ }
+}
+
+if (!function_exists("raindrops")) {
+ function raindrops(bool $hideTitle): void {
+ showSystem("gdapd", "Raindrops System", "#a95f08a6", $hideTitle);
+ }
+}
+
+if (!function_exists("getMember")) {
+ 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;
+ }
+}
+
+if (!function_exists("timeAgo")) {
+ function timeAgo($time): string {
+ if (!is_numeric($time)) {
+ $time = strtotime($time);
+ }
+
+ $periods = ["second", "minute", "hour", "day", "week", "month", "year", "age"];
+ $lengths = array("60", "60", "24", "7", "4.35", "12", "100");
+
+ $now = time();
+
+ $difference = $now - $time;
+ if ($difference <= 10 && $difference >= 0) {
+ return $tense = "now";
+ } elseif ($difference > 0) {
+ $tense = "ago";
+ } else {
+ $tense = "later";
+ }
+
+ for ($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {
+ $difference /= $lengths[$j];
+ }
+
+ $difference = round($difference);
+
+ $period = $periods[$j] . ($difference >1 ? "s" :'');
+ return "{$difference} {$period} {$tense}";
+ }
+}
+
+if (!function_exists("getMemberSystem")) {
+ function getMemberSystem(string $id) {
+ $list = scoreOrderGlobal();
+
+ foreach ($list as $item) {
+ if ($item["id"] === $id) return $item["_system"];
+ }
+ }
+}
+
+if (!function_exists("getMemberFromName")) {
+ function getMemberFromName(string $name) {
+ $list = [...json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/gdapd-members.json"), true), ...json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/ynmuc-members.json"), true)];
+
+ foreach ($list as $item) {
+ if ($item["name"] === $name) return $item;
+ }
+ }
+}
+
+if (!function_exists("resolveMember")) {
+ function resolveMember(mixed $name) {
+ if (is_string($name)) {
+ if (str_ends_with($name, "-travelling")) {
+ return substr($name, 0, strlen($name) - 11);
+ } else {
+ return $name;
+ }
+ } else {
+ return $name;
+ }
+ }
+} \ No newline at end of file
diff --git a/includes/header.php b/includes/header.php
index 59c64b7..8ce8389 100644
--- a/includes/header.php
+++ b/includes/header.php
@@ -1,138 +1,34 @@
<?php global $title;
-function error($errno, $errstr, $file, $line) { ?>
+function error($errno, $errstr, $file, $line) {
+ echo('
<!-- -->">
<div class="alert alert-danger" style="text-align: left;">
- <b>Error <?= $errno ?>:</b> <?= $errstr ?> [<?= $file ?>:<?= $line ?>]
- </div>
-<?php }
+ <b>Error ' . $errno . ':</b> ' . $errstr . ' [' . $file . ':' . $line . ']
+ </div>');
+}
if (isset($_GET['errors'])) {
- set_error_handler("error");
+ ini_set('display_errors', '1');
+ ini_set('display_startup_errors', '1');
+ error_reporting(E_ALL);
+ set_error_handler("error", E_ALL);
}
+global $_MemberName;
+global $_MemberPage;
+global $_SystemName;
+global $_SystemPage;
+global $toplevel;
+
require_once $_SERVER["DOCUMENT_ROOT"] . "/includes/travelling.php"; global $travelling;
require_once $_SERVER["DOCUMENT_ROOT"] . "/includes/score.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/includes/pronouns.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/includes/bitset.php";
-require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $isLoggedIn;
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $isLoggedIn; global $isUserLoggedIn;
require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/banner.php";
require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/rainbow.php";
-
-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:1px solid ' . (isset($member['color']) ? "#" . $member['color'] . "55" : "transparent") . ';outline-color:' . (isset($member['color']) ? "#" . $member['color'] . "55" : "transparent") . ';border-radius:10px;text-align:center;display:flex;align-items:center;justify-content:center;padding:5px;"><div>
-<img alt="" src="' . $member['avatar_url'] . '" style="border-radius:999px;background-color:rgba(0, 0, 0, .25);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['travelling'] ? "+" . ($member['proxy_tags'][0]['prefix'] ?? "&nbsp;") : ($member['proxy_tags'][0]['prefix'] ?? "&nbsp;")) . '</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) {
- global $travelling;
-
- 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">
-<div style="text-align:center;"><img src="/assets/uploads/' . ($id === "gdapd" ? "raindrops" : "cloudburst") . '.png" style="width:64px;"><br>' . $name . '</div>
-</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([...array_map(function ($i) use ($id) {
- $i["travelling"] = false;
- $i["system"] = $id;
- return $i;
- }, array_filter(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$id-members.json"), true), function ($i) use ($travelling) {
- return !$travelling[$i['id']]['travelling'];
- })), ...array_map(function ($i) use ($id) {
- $i["travelling"] = true;
- $i["system"] = ($id === "gdapd" ? "ynmuc" : "gdapd");
- return $i;
- }, array_filter(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/" . ($id === "gdapd" ? "ynmuc" : "gdapd") . "-members.json"), true), function ($i) use ($travelling) {
- return $travelling[$i['id']]['travelling'];
- }))], $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);
-}
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/functions.php";
?>
<!doctype html>
@@ -142,8 +38,28 @@ function raindrops(bool $hideTitle): void {
<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/logo/logo.png" type="image/png">
+ <title><?= $title ? $title . " · " : "" ?>Cold Haze</title>
+ <?php if (isset($_MemberName) && file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $_MemberName . ".png")): ?>
+ <link rel="shortcut icon" href="/assets/uploads/pt-<?= $_MemberName ?>.png" type="image/png">
+ <?php else: ?>
+ <?php if (isset($_MemberPage) && file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/icons/favicon/" . $_MemberPage . ".png")): ?>
+ <link rel="shortcut icon" href="/assets/icons/favicon/<?= $_MemberPage ?>.png" type="image/png">
+ <?php else: ?>
+ <?php if (isset($toplevel) && file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/icons/favicon/" . $toplevel . ".png")): ?>
+ <link rel="shortcut icon" href="/assets/icons/favicon/<?= $toplevel ?>.png" type="image/png">
+ <?php else: ?>
+ <?php if (isset($_SystemPage) && file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/icons/favicon/" . $_SystemPage . ".png")): ?>
+ <link rel="shortcut icon" href="/assets/icons/favicon/<?= $_SystemPage ?>.png" type="image/png">
+ <?php else: ?>
+ <?php if (isset($_SystemName) && file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/" . $_SystemName . ".png") && (!isset($_MemberName) || $_MemberName !== "fusion")): ?>
+ <link rel="shortcut icon" href="/assets/uploads/<?= $_SystemName ?>.png" type="image/png">
+ <?php else: ?>
+ <link rel="shortcut icon" href="/assets/logo/logo.png" type="image/png">
+ <?php endif; ?>
+ <?php endif; ?>
+ <?php endif; ?>
+ <?php endif; ?>
+ <?php endif; ?>
<style>
nav.navbar {
background-color: black !important;
@@ -364,7 +280,7 @@ function raindrops(bool $hideTitle): void {
.comparison {
display: grid;
- grid-template-columns: 3fr repeat(2, 2fr) repeat(5, 1fr);
+ grid-template-columns: 3fr 1.5fr 2fr repeat(4, 1fr);
}
.comparison-header {
@@ -594,7 +510,7 @@ function raindrops(bool $hideTitle): void {
display: none !important;
}
.comparison {
- grid-template-columns: repeat(3, 2fr) repeat(5, 1fr) !important;
+ grid-template-columns: repeat(3, 2fr) repeat(4, 1fr) !important;
}
.comparison-relations-count {
display: inline;
@@ -663,17 +579,76 @@ function raindrops(bool $hideTitle): void {
.rainbow-item:active {
opacity: .5;
}
+
+ peh-muted {
+ --bs-text-opacity: 1;
+ color: #6c757d!important;
+ }
+
+ .dropdown-toggle::after {
+ margin-bottom: -3px;
+ }
+
+ .navbar-nav {
+ width: 100%;
+ }
+
+ .card {
+ background-color: #111;
+ border: 1px solid rgba(255, 255, 255, .125);
+ }
+
+ #member-banner-container > #member-banner > #system-info {
+ border-bottom-right-radius: 0 !important;
+ border-bottom-left-radius: 0 !important;
+ }
+
+ #member-details {
+ background: rgba(255, 255, 255, .1);
+ border: 1px solid transparent;
+ border-top: none;
+ padding: 10px 20px;
+ border-bottom-left-radius: 10px;
+ border-bottom-right-radius: 10px;
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ text-align: center;
+ }
+
+ .navbar-collapse.show {
+ z-index: 999;
+ }
+
+ @media (max-width: 991px) {
+ div#member-details.member-details-loggedIn {
+ grid-template-columns: repeat(2, 1fr) !important;
+ text-align: center;
+ }
+
+ #member-details {
+ grid-template-columns: 1fr !important;
+ text-align: left;
+ }
+ }
+
+ @media (max-width: 767px) {
+ div#member-details.member-details-loggedIn {
+ grid-template-columns: 1fr !important;
+ text-align: left;
+ }
+ }
</style>
</head>
<body>
- <nav class="navbar navbar-expand-<?= $isLoggedIn ? 'lg' : 'md' ?> bg-dark navbar-dark" style="height:60px;">
+ <nav class="navbar navbar-expand-<?= $isLoggedIn ? 'xl' : 'lg' ?> bg-dark navbar-dark" style="height:60px;">
<div class="container-fluid">
- <a class="navbar-brand" href="/"><img src="/assets/logo/logo.png" alt="" style="width:32px;vertical-align: middle;margin-right:5px;"> <span style="vertical-align: middle;">Cuties and Plurality</span><a>
+ <a class="navbar-brand" href="/"><img src="/assets/logo/logo.png" alt="" style="width:32px;vertical-align: middle;margin-right:5px;"> <span style="vertical-align: middle;">Cold Haze</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">
+ <?php if (!isset($demoHeader) || !$demoHeader): ?>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown">
<img src="/assets/icons/global.svg" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
@@ -700,27 +675,12 @@ function raindrops(bool $hideTitle): void {
<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>
+ <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>
+ <span style="vertical-align: middle;">Prefix generator</span>
</a></li>
- <?php if (!$isLoggedIn): ?>
- <li><hr class="dropdown-divider"></li>
- <li><h5 class="dropdown-header">Administrator</h5></li>
- <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 else: ?>
- <li><hr class="dropdown-divider"></li>
- <li><h5 class="dropdown-header">Administrator</h5></li>
- <li><a class="dropdown-item disabled" href="#" style="opacity:.5;">
- <img src="/assets/icons/right.svg" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
- <span style="vertical-align: middle;">See menu</span>
- </a></li>
- <?php endif; ?>
</ul>
</li>
<?php if ($isLoggedIn): ?>
@@ -732,14 +692,29 @@ function raindrops(bool $hideTitle): void {
<ul class="dropdown-menu">
<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>
+ <span class="text-danger" style="vertical-align: middle;"><b>Emergency alert</b></span>
</a></li>
+ <?php
+
+ $frontCloudburst = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/ynmuc-fronters.json"), true)["members"];
+ $frontRaindrops = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/gdapd-fronters.json"), true)["members"];
+
+ if (isset($_GET['pleasure']) || (
+ ((int)date('H') >= 20 || (int)date('H') < 6) &&
+ $frontCloudburst[0]["id"] === "erknz" &&
+ $frontRaindrops[0]["id"] === "qbzxm"
+ )): ?>
+ <li><a class="dropdown-item" href="/-/pleasure" <?= isset($_GET['pleasure']) ? 'style="opacity: .5;"' : '' ?>>
+ <img src="/assets/icons/pleasure.svg" alt="" style="width:24px;vertical-align: middle;">
+ <span class="text-success" style="vertical-align: middle;"><b>Pleasure alert</b></span>
+ </a></li>
+ <?php endif; ?>
<li><hr class="dropdown-divider"></li>
<li><h5 class="dropdown-header">Applications</h5></li>
<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>
+ <span style="vertical-align: middle;">Front planner</span>
</a></li>
<li><a class="dropdown-item" href="/-/together">
<img src="/assets/icons/together.svg" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
@@ -747,18 +722,22 @@ function raindrops(bool $hideTitle): void {
</a></li>
<li><a class="dropdown-item" href="/-/travelling">
<img src="/assets/icons/travel.svg" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
- <span style="vertical-align: middle;">System Travelling</span>
+ <span style="vertical-align: middle;">System travels manager</span>
</a></li>
<li><hr class="dropdown-divider"></li>
<li><h5 class="dropdown-header">Utilities</h5></li>
+ <li><a class="dropdown-item" href="/-/splitting">
+ <img src="/assets/icons/form.svg" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
+ <span style="vertical-align: middle;">Members by splitting date</span>
+ </a></li>
<li><a class="dropdown-item" href="/-/bitset">
<img src="/assets/icons/bitset.svg" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
- <span style="vertical-align: middle;">Bitset Calculator</span>
+ <span style="vertical-align: middle;">Bitset calculator</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>
+ <span style="vertical-align: middle;">Score system testing</span>
</a></li>
<li><hr class="dropdown-divider"></li>
@@ -768,6 +747,13 @@ function raindrops(bool $hideTitle): void {
</a></li>
</ul>
</li>
+ <?php endif; else: ?>
+ <li class="nav-item">
+ <a class="nav-link" href="/" role="button">
+ <img src="/assets/icons/right.svg" class="dropdown-icon" alt="" style="width:24px;vertical-align: middle;">
+ <span style="vertical-align: middle;">Reste du site (en anglais)</span>
+ </a>
+ </li>
<?php endif; ?>
<?php if (!isset($emergencyHeader) || !$emergencyHeader): ?>
<li class="nav-item dropdown">
@@ -789,7 +775,7 @@ function raindrops(bool $hideTitle): void {
if (count($subsystemsNotMember) > 0): ?>
<li><hr class="dropdown-divider"></li>
- <li><h5 class="dropdown-header">Subsystems (<?= count($subsystemsNotMember) ?>)</h5></li>
+ <li><h5 class="dropdown-header">Subsystems</h5></li>
<?php foreach ($subsystemsNotMember as $subsystem): $ssData = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/ynmuc-subsystem-" . $subsystem['source'] . ".json"), true); ?>
<li><a class="dropdown-item" href="/cloudburst/-/subsystem/<?= $subsystem['source'] ?>">
<img src="/assets/uploads/ss-<?= $subsystem['source'] ?>.png" alt="" style="border-radius:5px;width:24px;vertical-align: middle;">
@@ -798,10 +784,10 @@ function raindrops(bool $hideTitle): void {
<?php endforeach; ?>
<?php endif; ?>
<li><hr class="dropdown-divider"></li>
- <li><h5 class="dropdown-header">Members (<?= count(withTravelers(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/ynmuc-members.json"), true), "ynmuc")) - 1 ?>)</h5></li>
- <?php foreach (scoreOrder(withTravelers(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/ynmuc-members.json"), true), "ynmuc"), "ynmuc") as $member): if ($member['name'] !== "unknown"): ?>
+ <li><h5 class="dropdown-header">Members</h5></li>
+ <?php foreach (scoreOrder(withTravelers(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/ynmuc-members.json"), true), "ynmuc"), "ynmuc") as $member): if ($member['name'] !== "unknown" && $member['name'] !== "fusion"): ?>
<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;">
+ <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($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; ?>
@@ -818,15 +804,46 @@ function raindrops(bool $hideTitle): void {
<span style="vertical-align: middle;">About us</span>
</a></li>
<li><hr class="dropdown-divider"></li>
- <li><h5 class="dropdown-header">Members (<?= count(withTravelers(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/gdapd-members.json"), true), "gdapd")) - 1 ?>)</h5></li>
- <?php foreach (scoreOrder(withTravelers(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/gdapd-members.json"), true), "gdapd"), "gdapd") as $member): if ($member['name'] !== "unknown"): ?>
+ <li><h5 class="dropdown-header">Members</h5></li>
+ <?php foreach (scoreOrder(withTravelers(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/gdapd-members.json"), true), "gdapd"), "gdapd") as $member): if ($member['name'] !== "unknown" && $member['name'] !== "fusion"): ?>
<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;">
+ <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($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 if ($isLoggedIn): ?>
+ <li class="nav-item" style="margin-left: auto;">
+ <a class="nav-link" href="/-/user">
+ <?php global $_PROFILE; ?>
+ <span style="vertical-align: middle;">
+ <?= $_PROFILE["name"] ?>
+ </span>
+ <img alt="" src="/assets/icons/shield.svg" style="filter:invert(1);width:24px;vertical-align: middle;">
+ </a>
+ </li>
+ <?php elseif ($isUserLoggedIn): ?>
+ <li class="nav-item" style="margin-left: auto;">
+ <a class="nav-link" href="/-/user">
+ <?php global $_PROFILE; ?>
+ <span style="vertical-align: middle;">
+ <?= $_PROFILE["name"] ?>
+ </span>
+ <img alt="" src="/assets/icons/shield.svg" style="filter:invert(1);width:24px;vertical-align: middle;">
+ </a>
+ </li>
+ <?php else: ?>
+ <li class="nav-item" style="margin-left: auto;">
+ <a class="nav-link" href="/-/login">
+ <?php global $_PROFILE; ?>
+ <span style="vertical-align: middle;">
+ Not logged in
+ </span>
+ <img alt="" src="/assets/icons/login.svg" style="filter:invert(1);width:24px;vertical-align: middle;">
+ </a>
+ </li>
+ <?php endif; ?>
<?php endif; ?>
</ul>
</div>
diff --git a/includes/member.php b/includes/member.php
index a2573d1..d027fa7 100644
--- a/includes/member.php
+++ b/includes/member.php
@@ -1,4 +1,12 @@
-<?php global $system; global $systemCommonName; global $systemID; global $member; global $memberData; global $memberCommonName; global $memberID; $title = $memberCommonName . " · " . $systemCommonName; require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/header.php';
+<?php global $system; global $systemCommonName; global $systemID; global $member; global $memberData; global $memberCommonName; global $memberID;
+
+if ($memberData["name"] === "fusion") {
+ $title = ($memberCommonName === "fusion" ? "Multiple merged members" : $memberCommonName);
+} else {
+ $title = $memberCommonName . " · " . $systemCommonName;
+}
+
+require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/header.php';
$travelling = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/travelling.json"), true);
@@ -31,20 +39,94 @@ function timeAgo($time): string {
return "{$difference} {$period} {$tense}";
}
-$metadata = parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/" . $systemID . "-" . $memberID . "-metadata.json"), true));
+if ($memberData["name"] !== "unknown" && $memberData["name"] !== "fusion") {
+ $metadata = parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/" . $systemID . "-" . $memberID . "-metadata.json"), true));
+}
+
+global $isLoggedIn;
+
+$frontersRaindrops = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/gdapd-fronters.json"), true);
+$frontersCloudburst = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/ynmuc-fronters.json"), true);
+
+$fusionRaindrops = false;
+
+if ($memberData["name"] === "fusion") {
+ if (in_array("fusion", array_map(function ($i) {
+ return $i["name"];
+ }, $frontersRaindrops["members"]))) {
+ $fusionRaindrops = true;
+
+ $memberData = array_values(array_filter($frontersRaindrops["members"], function ($i) {
+ return $i["name"] === "fusion";
+ }))[0];
+ $memberCommonName = $memberData['display_name'] ?? $memberData['name'];
+ $memberID = $memberData['id'];
+ $system = $systemID === "gdapd" ? "cloudburst" : "raindrops";
+ $systemID = $system === "cloudburst" ? "ynmuc" : "gdapd";
+ }
+}
?>
<br>
<div class="container">
<script>
- window.currentMemberData = JSON.parse(atob(`<?= base64_encode(json_encode(getMemberBannerData($memberID, $systemID))) ?>`));
+ window.currentMemberData = JSON.parse(atob(`<?= base64_encode(json_encode(getMemberBannerData($memberID, $systemID, false))) ?>`));
</script>
+ <?php if ($memberData["name"] !== "unknown" && $memberData["name"] !== "fusion"): ?>
+ <div id="member-banner-container">
+ <div id="member-banner"></div>
+ <div id="member-details" class="<?= $isLoggedIn ? 'member-details-loggedIn' : '' ?>" style="<?php if (!$isLoggedIn): ?>grid-template-columns: repeat(3, 1fr);<?php endif; ?> border-color: <?= isset($memberData["color"]) ? '#' . $memberData["color"] : "transparent" ?>">
+ <div>
+ <b>Food:</b>
+ <?= match ($metadata["food"]) {
+ 0 => "<span data-bs-toggle='tooltip' title='" . ucfirst(str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["possessive_det"])) . " species indicates that " . str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["subjective"]) . ' ' . (getMemberPronouns($memberData["pronouns"])["third"] ? "doesn&apos;t" : "don&apos;t") . " need to eat food, therefore " . str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["subjective"]) . " can eat all foods.'>Doesn't need</span>",
+ 1 => "<span data-bs-toggle='tooltip' title='" . ucfirst(str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["subjective"])) . " can&apos;t eat fish or meat.'>Can't eat animals</span>",
+ 2 => "<span data-bs-toggle='tooltip' title='" . ucfirst(str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["subjective"])) . " can&apos;t eat meat, but can eat fish.'>Can't eat meat</span>",
+ 3 => "<span data-bs-toggle='tooltip' title='" . ucfirst(str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["subjective"])) . " can eat all foods, meat and fish included.'>No restrictions</span>",
+ } ?>
+ </div>
+ <div>
+ <b>Memory access:</b>
+ <?= match ($metadata["shared_memory"]) {
+ 0 => "<span data-bs-toggle='tooltip' title='" . str_replace("'", "&apos;", ucfirst(getMemberPronouns($memberData['pronouns'])["subjective"])) . (getMemberPronouns($memberData["pronouns"])["third"] ? " doesn&apos;t directly share" : " don&apos;t directly share") . " memory with " . str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["possessive_det"]) . " headmates, but is able to (slowly) query it if that is needed.'>No direct access</span>",
+ 1 => "<span data-bs-toggle='tooltip' title='" . str_replace("'", "&apos;", ucfirst(getMemberPronouns($memberData['pronouns'])["subjective"])) . (getMemberPronouns($memberData["pronouns"])["third"] ? " doesn&apos;t directly shares" : " don&apos;t directly share") . " all memories with " . str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["possessive_det"]) . " headmates, but may be able to share certain memories and/or share memories at will.'>Partial direct access</span>",
+ 2 => "<span data-bs-toggle='tooltip' title='" . str_replace("'", "&apos;", ucfirst(getMemberPronouns($memberData['pronouns'])["subjective"])) . (getMemberPronouns($memberData["pronouns"])["third"] ? " shares" : " share") . " all memories with " . str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["possessive_det"]) . " headmates.'>Full direct access</span>",
+ } ?>
+ </div>
+ <div>
+ <b>Magic:</b>
+ <?= match ($metadata["magic"]) {
+ 0 => "<span data-bs-toggle='tooltip' title='" . str_replace("'", "&apos;", ucfirst(getMemberPronouns($memberData['pronouns'])["subjective"])) . " is unable to use magic at all.'>Can't use magic</span>",
+ 1 => "<span data-bs-toggle='tooltip' title='" . str_replace("'", "&apos;", ucfirst(getMemberPronouns($memberData['pronouns'])["subjective"])) . " can use magic in rare cases, such as when somepony else is pouring magic into " . str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["object"]) . " or when a physical event occurs.'>Can use magic in some cases</span>",
+ 2 => "<span data-bs-toggle='tooltip' title='" . str_replace("'", "&apos;", ucfirst(getMemberPronouns($memberData['pronouns'])["subjective"])) . " can cast spells using " . str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["possessive_det"]) . " horn.'>Can use a horn</span>",
+ 3 => "<span data-bs-toggle='tooltip' title='" . str_replace("'", "&apos;", ucfirst(getMemberPronouns($memberData['pronouns'])["subjective"])) . " can cast spells using " . str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["possessive_det"]) . " wings.'>Can use wings</span>",
+ 4 => "<span data-bs-toggle='tooltip' title='" . str_replace("'", "&apos;", ucfirst(getMemberPronouns($memberData['pronouns'])["subjective"])) . " can cast spells using both " . str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["possessive_det"]) . " horn and wings.'>Can use a horn and wings</span>",
+ 5 => "<span data-bs-toggle='tooltip' title='" . str_replace("'", "&apos;", ucfirst(getMemberPronouns($memberData['pronouns'])["subjective"])) . " can cast spells using another part of " . str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["possessive_det"]) . " body that is neither a horn or wings.'>Can cast spells</span>",
+ } ?>
+ </div>
+ <?php if ($isLoggedIn): ?>
+ <div>
+ <b>Sensitivity:</b>
+ <?= match ($metadata["sensitivity"]) {
+ 0 => "<span data-bs-toggle='tooltip' title='" . str_replace("'", "&apos;", ucfirst(getMemberPronouns($memberData['pronouns'])["subjective"])) . (getMemberPronouns($memberData["pronouns"])["third"] ? " does" : " do") . " not have sensitive spots on " . str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["possessive_det"]) . " body.'>Not sensitive</span>",
+ 1 => "<span data-bs-toggle='tooltip' title='" . str_replace("'", "&apos;", ucfirst(getMemberPronouns($memberData['pronouns'])["subjective"])) . " may have (a) sensitive spot·s on " . str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["possessive_det"]) . " body.'>May be sensitive</span>",
+ 2 => "<span data-bs-toggle='tooltip' title='" . str_replace("'", "&apos;", ucfirst(getMemberPronouns($memberData['pronouns'])["subjective"])) . (getMemberPronouns($memberData["pronouns"])["third"] ? " has" : " have") . " (a) sensitive spot·s on " . str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["possessive_det"]) . " body, and playing with it/them will make " . str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["object"]) . " feel affectionate: extremely safe and cared for.'>Affectionately sensitive</span>",
+ 3 => "<span data-bs-toggle='tooltip' title='" . str_replace("'", "&apos;", ucfirst(getMemberPronouns($memberData['pronouns'])["subjective"])) . (getMemberPronouns($memberData["pronouns"])["third"] ? " has" : " have") . " (a) sensitive spot·s on " . str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["possessive_det"]) . " body, and playing with it/them will make " . str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["object"]) . " feel sexually pleasured.'>Sexually sensitive</span>",
+ 4 => "<span data-bs-toggle='tooltip' title='" . str_replace("'", "&apos;", ucfirst(getMemberPronouns($memberData['pronouns'])["subjective"])) . (getMemberPronouns($memberData["pronouns"])["third"] ? " has" : " have") . " (a) sensitive spot·s on " . str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["possessive_det"]) . " body, and playing with it/them will make " . str_replace("'", "&apos;", getMemberPronouns($memberData['pronouns'])["object"]) . " feel affectionate or sexually pleasured.'>Affectionate and sexual</span>",
+ } ?>
+ </div>
+ <?php endif; ?>
+ </div>
+ </div>
+ <?php else: ?>
<div id="member-banner"></div>
- <script src="/app/banner.js"></script><script>refreshBanner()</script>
+ <?php endif; ?>
+
+ <script src="/app/banner.js"></script><script>refreshBanner(false)</script>
<br>
- <?php global $isLoggedIn; if ($isLoggedIn): ?>
+ <?php global $isLoggedIn; if ($isLoggedIn && $memberData["name"] !== "unknown" && $memberData["name"] !== "fusion"): ?>
<?php if (!isset($metadata["bitset"])): ?>
<div class="alert alert-warning">
<b>This member's metadata needs an update.</b> It still uses the old JSON metadata system instead of the new 24bit integer-based system. Contact a developer to request an update. (only administrators can see this; file: <code><?= $_SERVER['DOCUMENT_ROOT'] ?>/includes/data/<?= $systemID ?>-<?= $memberID ?>-metadata.json</code>)
@@ -55,6 +137,13 @@ $metadata = parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'
<summary>Private administrator information</summary>
<ul style="margin-bottom:0;">
<li><b>ID:</b> <code><?= $memberID ?></code> (<code><?= $systemID . "/" . $memberID ?></code>, <?= $memberData["name"] ?>)</li>
+ <li><b>Files:</b>
+ <ul>
+ <li><code><?= $_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-$memberID-metadata.json" ?></code> (<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-$memberID-metadata.json") ? filesize($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-$memberID-metadata.json") . " bytes" : "not found" ?>)</li>
+ <li><code><?= $_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-$memberID-content.html" ?></code> (<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-$memberID-content.html") ? filesize($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-$memberID-content.html") . " bytes" : "not found" ?>)</li>
+ </ul>
+ </li>
+ <li><b>Date added:</b> <?= date('l j F Y', strtotime($memberData["created"])) ?> (<?= timeAgo($memberData["created"]) ?>, <code><?= $memberData["created"] ?></code>)</li>
<li><b>Pronouns:</b> <?= implode(", ", getPronounsFromMark($memberData['pronouns'])) ?></li>
<li><b>Pronouns usage:</b> <ul><?php
@@ -65,8 +154,8 @@ $metadata = parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'
}
?></ul></li>
- <li><b>Color:</b> <span style="background-color:#<?= $memberData["color"] ?? "ffffff" ?>;display:inline-block;width:16px;height:16px;border-radius:5px;vertical-align: middle;filter: invert(1) hue-rotate(180deg);"></span> <span style="vertical-align: middle;"><code>#<?= $memberData["color"] ?? "ffffff" ?></code></span>
- <li><b>Bitset:</b><?php if (isset($metadata["bitset"])): ?> <span style="background-color:#<?= dechex($metadata["bitset"]) ?>;display:inline-block;width:16px;height:16px;border-radius:5px;vertical-align: middle;filter: invert(1) hue-rotate(180deg);"></span> <span style="vertical-align: middle;"><code><?= str_repeat("0", 24 - strlen(decbin($metadata["bitset"]))) . decbin($metadata["bitset"]) ?></code> (0x<?= str_repeat("0", 6 - strlen(dechex($metadata["bitset"]))) . dechex($metadata["bitset"]) ?>, <?= $metadata["bitset"] ?>)</li></span><?php else: ?> <span class="text-warning" style="filter:invert(1) hue-rotate(180deg);">Not using bitset; please update.</span><?php endif; ?>
+ <li><b>Color:</b> <span style="border:1px solid rgba(255, 255, 255, .5);background-color:#<?= $memberData["color"] ?? "ffffff" ?>;display:inline-block;width:16px;height:16px;border-radius:5px;vertical-align: middle;filter: invert(1) hue-rotate(180deg);"></span> <span style="vertical-align: middle;"><code>#<?= $memberData["color"] ?? "ffffff" ?></code></span>
+ <li><b>Bitset:</b><?php if (isset($metadata["bitset"])): ?> <code><?= str_repeat("0", 48 - strlen(decbin($metadata["bitset"]))) . decbin($metadata["bitset"]) ?></code> (0x<?= str_repeat("0", 12 - strlen(dechex($metadata["bitset"]))) . dechex($metadata["bitset"]) ?>, <?= $metadata["bitset"] ?>)</li><?php else: ?> <span class="text-warning" style="filter:invert(1) hue-rotate(180deg);">Not using bitset; please update.</span><?php endif; ?>
<li><b>Reduced name:</b> <?= getMiniName($memberData["display_name"] ?? $member["name"]) ?></li>
<li><b>Shared memory access:</b> <code><?= $metadata["shared_memory"] ?></code> (<?= $metadata["shared_memory"] === 2 ? "Full direct access" : ($metadata["shared_memory"] === 0 ? "No direct access" : "Partial direct access") ?>)</li>
<li><b>Protector:</b> <code><?= $metadata["protector"] ? "1" : "0" ?></code> (<?= $metadata["protector"] ? "Yes" : "No" ?>)</li>
@@ -75,37 +164,68 @@ $metadata = parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'
<?php require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/score.php"; $score = calculateScore($metadata, $memberData["display_name"] ?? $memberData["name"]); ?>
<li>
<b>Score breakdown:</b> <code><?= $score["total"] ?></code>
- <details>
- <summary>Show details</summary>
- <ul>
- <li><b>Host score:</b> <code><?= $score["host"] ?></code></li>
- <li><b>Relationships score:</b> <code><?= $score["relations"] ?></code></li>
- <li><b>Fictive score:</b> <code><?= $score["fictive"] ?></code></li>
- <li><b>Median score:</b> <code><?= $score["median"] ?></code></li>
- <li><b>Species score:</b> <code><?= $score["species"] ?></code></li>
- <li><b>Little score:</b> <code><?= $score["little"] ?></code></li>
- <li><b>Not talking score:</b> <code><?= $score["not_talking"] ?></code></li>
- <li><b>Protector score:</b> <code><?= $score["protector"] ?></code></li>
- <li><b>Name score:</b> <code><?= $score["name"] ?></code></li>
- <li><b>Shared memory score:</b> <code><?= $score["shared_memory"] ?></code></li>
- </ul>
- </details>
+ <ul>
+ <li><b>Host score:</b> <code><?= $score["host"] ?></code></li>
+ <li><b>Relationships score:</b> <code><?= $score["relations"] ?></code></li>
+ <li><b>Fictive score:</b> <code><?= $score["fictive"] ?></code></li>
+ <li><b>Median score:</b> <code><?= $score["median"] ?></code></li>
+ <li><b>Species score:</b> <code><?= $score["species"] ?></code></li>
+ <li><b>Little score:</b> <code><?= $score["little"] ?></code></li>
+ <li><b>Not talking score:</b> <code><?= $score["not_talking"] ?></code></li>
+ <li><b>Protector score:</b> <code><?= $score["protector"] ?></code></li>
+ <li><b>Name score:</b> <code><?= $score["name"] ?></code></li>
+ <li><b>Shared memory score:</b> <code><?= $score["shared_memory"] ?></code></li>
+ </ul>
</li>
+ <li><b>Full metadata:</b> <ul><?php
+
+ foreach ($metadata as $type => $usage) {
+ if (is_string($usage)) {
+ echo("<li><b>" . $type . ":</b> " . $usage . "</li>");
+ } else {
+ echo("<li><b>" . $type . ":</b> " . json_encode($usage, JSON_UNESCAPED_SLASHES) . "</li>");
+ }
+ }
+
+ ?></ul></li>
</ul>
</details>
</div>
<?php endif; ?>
<?php if ($travelling[$memberID]['travelling']): ?>
<div class="alert alert-primary">
- This pony is visiting the <?= $systemID === "ynmuc" ? "Raindrops System" : "Cloudburst System" ?> since <?= timeAgo($travelling[$memberID]["history"][count($travelling[$memberID]["history"]) - 1]["start"]) ?>, therefore currently not in the <?= $systemCommonName ?>.
+ <?= getMiniName($memberData["display_name"] ?? $memberData["name"]) ?> is visiting the <?= $systemID === "ynmuc" ? "Raindrops System" : "Cloudburst System" ?> since <?= timeAgo($travelling[$memberID]["history"][count($travelling[$memberID]["history"]) - 1]["start"]) ?>, therefore <?= getMemberPronouns($memberData["pronouns"])["subjective"] ?> <?= getMemberPronouns($memberData["pronouns"])["third"] ? "is" : "are" ?> currently not in the <?= $systemCommonName ?>.
</div>
<?php endif; ?>
<div id="page-content">
- <?php global $isLoggedIn; if ($isLoggedIn): ?>
- <small style="opacity:.5;display:block;">(<a href="/-/edit/<?= $system ?>/<?= $memberData['name'] ?>">edit</a>)</small>
+ <?php if ($memberData["name"] === "unknown"): ?>
+ <div class="alert alert-secondary">
+ <p>Hello there!</p>
+ <p>I'm currently not totally sure who I am (it's a thing that can happen with plurality), but I am using <?= $systemID === "ynmuc" ? "Twilight Sparkle" : "Scootaloo" ?> as a temporary identity to stay calm and not panic while I figure out what is going on and who I am.</p>
+ <p>I can either be an existing headmate who cannot work out they are fronting (this can sometimes happen when one of us gets pushed out of front), multiple headmates blurring who cannot work out who we are, or a new pony trying to figure out their identity (this can sometimes take a while).</p>
+ <span>In all cases, feel free to ask!</span>
+ </div>
+ <?php elseif ($memberData["name"] === "fusion"): ?>
+ <div class="alert alert-secondary">
+ <p>Hello there!</p>
+ <p>I'm the result of more than one pony temporarily merging together to the point they are unable to be told apart (this can be done for various reasons). We have not registered this switch for the "Unknown" member since this merge is made on purpose.</p>
+ <p>Below is the list of who is merged, we can be either from a single system or from different systems.</p>
+ <div class="list-group">
+ <?php $foundFusion = false; $fusionOn = false; foreach ($fusionRaindrops ? $frontersRaindrops['members'] : $frontersCloudburst['members'] as $fronter): if ($fronter["name"] !== "fusion"): if ($fusionOn): $foundFusion = true; $name = str_ends_with($fronter['name'], "-travelling") ? substr($fronter['name'], 0, strlen($fronter['name']) - 11) : $fronter['name'] ?>
+ <a class="list-group-item list-group-item-action text-black" href="/<?= $name ?>"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $name . ".png") ? "-" . $name : "" ?>.png" style="filter:invert(1) hue-rotate(180deg);width:24px;"> <?= $fronter["display_name"] ?? $name ?></a>
+ <?php endif; else: $fusionOn = true; endif; endforeach; ?>
+ </div>
+ <?php if (!$foundFusion): ?>
+ <i>No members are currently merged.</i>
+ <?php endif; ?>
+ </div>
+ <?php else: ?>
+ <?php global $isLoggedIn; if ($isLoggedIn): ?>
+ <small style="opacity:.5;display:block;">(<a href="/-/edit/<?= $system ?>/<?= $memberData['name'] ?>">edit</a>)</small>
+ <?php endif; ?>
+ <?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-$memberID-content.html") ? file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-$memberID-content.html") : "<i>This page is empty.</i>" ?>
<?php endif; ?>
- <?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-$memberID-content.html") ? file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-$memberID-content.html") : "<i>This page is empty.</i>" ?>
</div>
</div>
diff --git a/includes/member/hierarchy.php b/includes/member/hierarchy.php
new file mode 100644
index 0000000..39045b3
--- /dev/null
+++ b/includes/member/hierarchy.php
@@ -0,0 +1,207 @@
+<?php global $system;
+global $systemCommonName;
+global $systemID;
+global $member;
+global $memberData;
+global $memberCommonName;
+global $memberID;
+$title = "Member hierarchy · " . $memberCommonName . " · " . $systemCommonName;
+require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/header.php';
+
+$travelling = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/travelling.json"), true);
+
+function timeAgo($time): string
+{
+ if (!is_numeric($time)) {
+ $time = strtotime($time);
+ }
+
+ $periods = ["second", "minute", "hour", "day", "week", "month", "year", "age"];
+ $lengths = array("60", "60", "24", "7", "4.35", "12", "100");
+
+ $now = time();
+
+ $difference = $now - $time;
+ if ($difference <= 10 && $difference >= 0) {
+ return $tense = "now";
+ } elseif ($difference > 0) {
+ $tense = "ago";
+ } else {
+ $tense = "later";
+ }
+
+ for ($j = 0; $difference >= $lengths[$j] && $j < count($lengths) - 1; $j++) {
+ $difference /= $lengths[$j];
+ }
+
+ $difference = round($difference);
+
+ $period = $periods[$j] . ($difference > 1 ? "s" : '');
+ return "{$difference} {$period} {$tense}";
+}
+
+$metadata = parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/" . $systemID . "-" . $memberID . "-metadata.json"), true));
+
+$allMembers = scoreOrder(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/" . $systemID . "-members.json"), true), $systemID);
+$allMembers2 = scoreOrder(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/" . ($systemID === "gdapd" ? "ynmuc" : "gdapd") . "-members.json"), true), $systemID === "gdapd" ? "ynmuc" : "gdapd");
+
+$systemCommonData = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/" . $systemID . "-general.json"), true);
+
+if ($travelling[$memberID]["travelling"]) {
+ $allMembers = scoreOrder(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/" . ($systemID === "gdapd" ? "ynmuc" : "gdapd") . "-members.json"), true), $systemID === "gdapd" ? "ynmuc" : "gdapd");
+ $allMembers2 = scoreOrder(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/" . $systemID . "-members.json"), true), $systemID);
+
+ $systemCommonData = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/" . ($systemID === "gdapd" ? "ynmuc" : "gdapd") . "-general.json"), true);
+
+ $system = $systemID === "gdapd" ? "cloudburst" : "raindrops";
+ $systemCommonName = $systemID === "gdapd" ? "Cloudburst System" : "Raindrops System";
+}
+
+?>
+
+ <br>
+ <div class="container">
+ <h2><?= getMiniName($memberCommonName) ?>'s hierarchy</h2>
+ <br>
+
+ <?php
+
+ $takingCare = [
+ ...array_filter($allMembers, function ($i) use ($systemID, $memberData) {
+ return in_array($systemID . "/" . $memberData["id"], $i["_metadata"]["caretakers"]) && $i["id"] !== $memberData["id"];
+ }),
+ ...array_filter($allMembers2, function ($i) use ($systemID, $memberData) {
+ return in_array($systemID . "/" . $memberData["id"], $i["_metadata"]["caretakers"]) && $i["id"] !== $memberData["id"];
+ })
+ ];
+
+ $protected = array_filter($allMembers, function ($i) use ($memberData) {
+ return $i["_metadata"]["protector"] && $i["id"] !== $memberData["id"];
+ });
+
+ $caretakers = array_map(function ($i) {
+ return getSystemMember(explode("/", $i)[0], explode("/", $i)[1]);
+ }, $metadata["caretakers"]);
+
+ ?>
+
+ <p class="text-muted" style="text-align: center;"><b>Part of:</b></p>
+ <div class="row">
+ <div class="cell" style="width:20%;display:inline-block;margin-left:auto;margin-right:auto;">
+ <a href="/<?= $system ?>" style="text-decoration:none !important;filter:none !important;">
+ <div class="hpd-item-card"
+ style="background-color:rgba(255, 255, 255, .1);border:1px solid #<?= $systemCommonData["color"] ?? "ffffff" ?>55;outline-color:#<?= $systemCommonData["color"] ?? "ffffff" ?>55;border-radius:10px;text-align:center;display:flex;align-items:center;justify-content:center;padding:5px;">
+ <div>
+ <img alt=""
+ src="/assets/uploads/<?= $system ?>.png"
+ style="height:48px;display:block;margin-left:auto;margin-right:auto;">
+ <div style="text-decoration:none;color:white;margin-top:5px;"><?= $systemCommonName ?></div>
+ </div>
+ </div>
+ </a>
+ </div>
+ </div>
+
+ <hr>
+
+ <?php if (count($protected) > 0): ?>
+ <p class="text-muted" style="text-align: center;"><b>Protected by:</b></p>
+ <div class="row">
+ <?php foreach ($protected as $selectedMember): ?>
+ <div class="cell" style="width:20%;display:inline-block;margin-left:auto;margin-right:auto;">
+ <?php showMembersFromList([$selectedMember]) ?>
+ </div>
+ <?php endforeach; ?>
+ </div>
+
+ <hr>
+ <?php endif; ?>
+
+ <?php if (count($caretakers) > 0): ?>
+ <p class="text-muted" style="text-align: center;"><b>Taken care of by:</b></p>
+ <div class="row">
+ <?php foreach ($caretakers as $selectedMember): ?>
+ <div class="cell" style="width:20%;display:inline-block;margin-left:auto;margin-right:auto;">
+ <?php showMembersFromList([$selectedMember]) ?>
+ </div>
+ <?php endforeach; ?>
+ </div>
+
+ <hr>
+ <?php endif; ?>
+
+ <p class="text-muted" style="text-align: center;"><b>Member:</b></p>
+ <div class="row">
+ <div class="cell" style="width:20%;display:inline-block;margin-left:auto;margin-right:auto;">
+ <?php showMembersFromList([$memberData]) ?>
+ </div>
+ </div>
+
+ <?php if (count($takingCare) > 0): ?>
+ <hr>
+
+ <p class="text-muted" style="text-align: center;"><b>Taking care of:</b></p>
+ <div class="row">
+ <?php foreach ($takingCare as $selectedMember): ?>
+ <div class="cell" style="width:20%;display:inline-block;margin-left:auto;margin-right:auto;">
+ <?php showMembersFromList([$selectedMember]) ?>
+ </div>
+ <?php endforeach; ?>
+ </div>
+ <?php endif; ?>
+ </div>
+
+ <style>
+ .row {
+ margin-bottom: 20px;
+ }
+
+ @media (max-width: 750px) {
+ #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;
+ }
+
+ div.cell {
+ grid-row-gap: 5px !important;
+ width: 100% !important;
+ margin-bottom: 5px;
+ }
+
+ div.cell:nth-last-child(1) {
+ margin-bottom: 0 !important;
+ }
+ }
+
+ @media (max-width: 997px) {
+ .cell {
+ width: 30% !important;
+ }
+ }
+ </style>
+
+<?php require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/footer.php'; ?> \ No newline at end of file
diff --git a/includes/member/tree.php b/includes/member/tree.php
new file mode 100644
index 0000000..2e94951
--- /dev/null
+++ b/includes/member/tree.php
@@ -0,0 +1,8 @@
+<?php
+
+global $parts;
+$parts[3] = "hierarchy";
+array_shift($parts);
+
+header("Location: /" . implode("/", $parts));
+die(); \ No newline at end of file
diff --git a/includes/planner.php b/includes/planner.php
index 0b7604a..72575cd 100644
--- a/includes/planner.php
+++ b/includes/planner.php
@@ -36,7 +36,7 @@ $raindrops = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/include
</td>
<td class="planner-link">
<?php $member = getSystemMember("ynmuc", $dayCloudburst[$index]); ?>
- <a class="member-link" onclick="openEditFronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d') ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <a class="member-link" onclick="openEditFronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d') ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
</td>
<?php elseif ($index === count($dayCloudburst)): ?>
<td class="planner-add-inner planner-link" colspan="2">
@@ -54,7 +54,7 @@ $raindrops = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/include
</td>
<?php $member = getSystemMember("gdapd", $dayRaindrops[$index]); ?>
<td class="planner-link">
- <a class="member-link" onclick="openEditFronter('raindrops', <?= $index ?>, '<?= date('Y-m-d') ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <a class="member-link" onclick="openEditFronter('raindrops', <?= $index ?>, '<?= date('Y-m-d') ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
</td>
<?php elseif ($index === count($dayRaindrops)): ?>
<td class="planner-add-inner planner-link" colspan="2">
@@ -107,7 +107,7 @@ $raindrops = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/include
</td>
<td class="planner-link">
<?php $member = getSystemMember("ynmuc", $dayCloudburst[$index]); ?>
- <a class="member-link" onclick="openEditFronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d', time() + 86400) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <a class="member-link" onclick="openEditFronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d', time() + 86400) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
</td>
<?php elseif ($index === count($dayCloudburst)): ?>
<td class="planner-add-inner planner-link" colspan="2">
@@ -125,7 +125,7 @@ $raindrops = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/include
</td>
<?php $member = getSystemMember("gdapd", $dayRaindrops[$index]); ?>
<td class="planner-link">
- <a class="member-link" onclick="openEditFronter('raindrops', <?= $index ?>, '<?= date('Y-m-d', time() + 86400) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <a class="member-link" onclick="openEditFronter('raindrops', <?= $index ?>, '<?= date('Y-m-d', time() + 86400) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
</td>
<?php elseif ($index === count($dayRaindrops)): ?>
<td class="planner-add-inner planner-link" colspan="2">
@@ -178,7 +178,7 @@ $raindrops = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/include
</td>
<td class="planner-link">
<?php $member = getSystemMember("ynmuc", $dayCloudburst[$index]); ?>
- <a class="member-link" onclick="openEditFronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 2)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <a class="member-link" onclick="openEditFronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 2)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
</td>
<?php elseif ($index === count($dayCloudburst)): ?>
<td class="planner-add-inner planner-link" colspan="2">
@@ -196,7 +196,7 @@ $raindrops = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/include
</td>
<?php $member = getSystemMember("gdapd", $dayRaindrops[$index]); ?>
<td class="planner-link">
- <a class="member-link" onclick="openEditFronter('raindrops', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 2)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <a class="member-link" onclick="openEditFronter('raindrops', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 2)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
</td>
<?php elseif ($index === count($dayRaindrops)): ?>
<td class="planner-add-inner planner-link" colspan="2">
@@ -249,7 +249,7 @@ $raindrops = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/include
</td>
<td class="planner-link">
<?php $member = getSystemMember("ynmuc", $dayCloudburst[$index]); ?>
- <a class="member-link" onclick="openEditFronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 3)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <a class="member-link" onclick="openEditFronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 3)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
</td>
<?php elseif ($index === count($dayCloudburst)): ?>
<td class="planner-add-inner planner-link" colspan="2">
@@ -267,7 +267,7 @@ $raindrops = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/include
</td>
<?php $member = getSystemMember("gdapd", $dayRaindrops[$index]); ?>
<td class="planner-link">
- <a class="member-link" onclick="openEditFronter('raindrops', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 3)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <a class="member-link" onclick="openEditFronter('raindrops', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 3)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
</td>
<?php elseif ($index === count($dayRaindrops)): ?>
<td class="planner-add-inner planner-link" colspan="2">
@@ -320,7 +320,7 @@ $raindrops = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/include
</td>
<td class="planner-link">
<?php $member = getSystemMember("ynmuc", $dayCloudburst[$index]); ?>
- <a class="member-link" onclick="openEditFronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 4)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <a class="member-link" onclick="openEditFronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 4)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
</td>
<?php elseif ($index === count($dayCloudburst)): ?>
<td class="planner-add-inner planner-link" colspan="2">
@@ -338,7 +338,7 @@ $raindrops = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/include
</td>
<?php $member = getSystemMember("gdapd", $dayRaindrops[$index]); ?>
<td class="planner-link">
- <a class="member-link" onclick="openEditFronter('raindrops', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 4)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <a class="member-link" onclick="openEditFronter('raindrops', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 4)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
</td>
<?php elseif ($index === count($dayRaindrops)): ?>
<td class="planner-add-inner planner-link" colspan="2">
@@ -391,7 +391,7 @@ $raindrops = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/include
</td>
<td class="planner-link">
<?php $member = getSystemMember("ynmuc", $dayCloudburst[$index]); ?>
- <a class="member-link" onclick="openEditFronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 5)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <a class="member-link" onclick="openEditFronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 5)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
</td>
<?php elseif ($index === count($dayCloudburst)): ?>
<td class="planner-add-inner planner-link" colspan="2">
@@ -409,7 +409,7 @@ $raindrops = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/include
</td>
<?php $member = getSystemMember("gdapd", $dayRaindrops[$index]); ?>
<td class="planner-link">
- <a class="member-link" onclick="openEditFronter('raindrops', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 5)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <a class="member-link" onclick="openEditFronter('raindrops', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 5)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
</td>
<?php elseif ($index === count($dayRaindrops)): ?>
<td class="planner-add-inner planner-link" colspan="2">
@@ -462,7 +462,7 @@ $raindrops = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/include
</td>
<td class="planner-link">
<?php $member = getSystemMember("ynmuc", $dayCloudburst[$index]); ?>
- <a class="member-link" onclick="openEditFronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 6)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <a class="member-link" onclick="openEditFronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 6)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
</td>
<?php elseif ($index === count($dayCloudburst)): ?>
<td class="planner-add-inner planner-link" colspan="2">
@@ -480,7 +480,7 @@ $raindrops = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/include
</td>
<?php $member = getSystemMember("gdapd", $dayRaindrops[$index]); ?>
<td class="planner-link">
- <a class="member-link" onclick="openEditFronter('raindrops', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 6)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <a class="member-link" onclick="openEditFronter('raindrops', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * 6)) ?>')"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
</td>
<?php elseif ($index === count($dayRaindrops)): ?>
<td class="planner-add-inner planner-link" colspan="2">
@@ -817,13 +817,13 @@ $raindrops = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/include
<div class="list-group" id="list-raindrops">
<?php foreach (scoreOrder(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/gdapd-members.json"), true), "gdapd") as $member): ?>
- <a onclick="confirmFronterAdd('gdapd', '<?= $member['id'] ?>');" class="new-fronter-link member-link list-group-item list-group-item-action" href="#"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <a onclick="confirmFronterAdd('gdapd', '<?= $member['id'] ?>');" class="new-fronter-link member-link list-group-item list-group-item-action" href="#"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
<?php endforeach; ?>
</div>
<div class="list-group" id="list-cloudburst">
<?php foreach (scoreOrder(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/ynmuc-members.json"), true), "ynmuc") as $member): ?>
- <a onclick="confirmFronterAdd('ynmuc', '<?= $member['id'] ?>');" class="new-fronter-link member-link list-group-item list-group-item-action" href="#"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <a onclick="confirmFronterAdd('ynmuc', '<?= $member['id'] ?>');" class="new-fronter-link member-link list-group-item list-group-item-action" href="#"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
<?php endforeach; ?>
</div>
</div>
diff --git a/includes/pleasure.php b/includes/pleasure.php
new file mode 100644
index 0000000..1bbfcea
--- /dev/null
+++ b/includes/pleasure.php
@@ -0,0 +1,114 @@
+<h2>Pleasure Alert
+ <details style="display: inline-block;font-size:12px;">
+ <summary class="text-muted" style="opacity:.5;"></summary>
+ <label><input id="test-mode" type="checkbox"> Test Mode</label> · <label><input id="fake-requests" type="checkbox"> Fake Requests</label>
+ </details>
+</h2>
+
+<span data-bs-toggle="modal" data-bs-target="#turn-on" id="btn-on" style="background: #7f0000;font-size: 48px;padding: 10px 50px;border-radius: 10px;width: max-content;display: block;margin-left: auto;margin-right: auto;cursor: pointer;">Turn <b>ON</b></span>
+<span onclick="disableAlert()" id="btn-off" style="display:none;background: #007f0b;font-size: 48px;padding: 10px 50px;border-radius: 10px;width: max-content;margin-left: auto;margin-right: auto;cursor: pointer;">Turn <b>OFF</b></span>
+<p style="text-align:center;margin-top:10px;">Sending next notification <b><span id="next-notification">never</span></b></p>
+
+<style>
+ .modal-header {
+ border-bottom: 1px solid #353738;
+ }
+
+ .modal-content {
+ border: 1px solid rgba(255, 255, 255, .2);
+ background-color: #111;
+ }
+
+ .btn-close {
+ filter: invert(1);
+ }
+</style>
+
+<div class="modal fade" id="turn-on">
+ <div class="modal-dialog">
+ <div class="modal-content">
+
+ <div class="modal-header">
+ <h4 class="modal-title">Somepony will be awoken.</h4>
+ <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
+ </div>
+
+ <div class="modal-body">
+ <button onclick="enableAlert();" data-bs-dismiss="modal" class="btn btn-success" style="font-size:20px;font-weight:bold;display:block;width:100%;">I wish to proceed.</button>
+
+ <hr>
+
+ <div class="alert alert-warning">
+ This alert system is designed to emit sudden alerts, and may surprise somecreature if e.g. they are sleeping. Keep that in mind.
+ </div>
+
+ <p>
+ <b>Disclaimer:</b> This is NOT an emergency alert system, use the "Emergency alert" option is you need immediate help and comfort.
+ </p>
+ <p>
+ © <?= date('Y') ?> Equestria.dev
+ </p>
+ </div>
+ </div>
+ </div>
+</div>
+
+<script>
+ window.alertInterval = null;
+ window.alertIntervalCounter = 15;
+
+ function sendNotification() {
+ window.alertIntervalCounter = -1;
+
+ if (document.getElementById("test-mode").checked) {
+ document.getElementById("next-notification").innerText = "now";
+ if (document.getElementById("fake-requests").checked) {
+ window.alertIntervalCounter = 15;
+ document.getElementById("next-notification").innerText = "15 seconds";
+ } else {
+ window.fetch("/api/pleasure").then(() => {
+ window.alertIntervalCounter = 15;
+ document.getElementById("next-notification").innerText = "15 seconds";
+ })
+ }
+ } else {
+ document.getElementById("next-notification").innerText = "now";
+ if (document.getElementById("fake-requests").checked) {
+ window.alertIntervalCounter = 15;
+ document.getElementById("next-notification").innerText = "15 seconds";
+ } else {
+ window.fetch("/api/pleasure-real").then(() => {
+ window.alertIntervalCounter = 15;
+ document.getElementById("next-notification").innerText = "15 seconds";
+ })
+ }
+ }
+ }
+
+ function enableAlert() {
+ sendNotification();
+ document.getElementById("btn-on").style.display = "none";
+ document.getElementById("btn-off").style.display = "block";
+ document.getElementById("test-mode").disabled = true;
+ document.getElementById("fake-requests").disabled = true;
+
+ window.alertInterval = setInterval(() => {
+ window.alertIntervalCounter--;
+
+ if (window.alertIntervalCounter === 0) {
+ sendNotification();
+ } else if (window.alertIntervalCounter > -1) {
+ document.getElementById("next-notification").innerText = window.alertIntervalCounter + " second" + (window.alertIntervalCounter > 1 ? "s" : "");
+ }
+ }, 1000);
+ }
+
+ function disableAlert() {
+ clearInterval(window.alertInterval);
+ document.getElementById("next-notification").innerText = "never";
+ document.getElementById("btn-on").style.display = "block";
+ document.getElementById("btn-off").style.display = "none";
+ document.getElementById("test-mode").disabled = false;
+ document.getElementById("fake-requests").disabled = false;
+ }
+</script> \ No newline at end of file
diff --git a/includes/pronouns.php b/includes/pronouns.php
index 5f79dd3..6ab2487 100644
--- a/includes/pronouns.php
+++ b/includes/pronouns.php
@@ -3,6 +3,7 @@
$pronounsSets = [
"pony" => [
"gender" => "ponygender",
+ "gender:fr" => "poneygenre",
"object" => "pony",
"person" => "pony",
"possessive_det" => "pony's",
@@ -14,6 +15,7 @@ $pronounsSets = [
],
"she" => [
"gender" => "female",
+ "gender:fr" => "fille",
"object" => "her",
"person" => "girl",
"possessive_det" => "her",
@@ -25,6 +27,7 @@ $pronounsSets = [
],
"he" => [
"gender" => "male",
+ "gender:fr" => "garçon",
"object" => "him",
"person" => "boy",
"possessive_det" => "his",
@@ -36,6 +39,7 @@ $pronounsSets = [
],
"it" => [
"gender" => "agender",
+ "gender:fr" => "agenre",
"object" => "it",
"person" => "person",
"possessive_det" => "its",
@@ -47,6 +51,7 @@ $pronounsSets = [
],
"they" => [
"gender" => "non binary",
+ "gender:fr" => "non binaire",
"object" => "them",
"person" => "person",
"possessive_det" => "their",
@@ -58,6 +63,8 @@ $pronounsSets = [
]
];
+$pronounGetCount = 0;
+
$possibilitiesPerSet = [];
foreach ($pronounsSets as $name => $set) {
if (!isset($possibilitiesPerSet[$name])) $possibilitiesPerSet[$name] = [];
@@ -80,9 +87,9 @@ function getSetFromValue(string $value) {
return null;
}
-function getPronounsFromMark(string $mark = null): array {
- if (!isset($mark)) {
- return [];
+function getPronounsFromMark(?string $mark = null): array {
+ if (!isset($mark) || trim($mark) === "") {
+ return ["they"];
} else {
$parts = array_unique(array_map(function ($i) {
return getSetFromValue($i);
@@ -94,22 +101,49 @@ function getPronounsFromMark(string $mark = null): array {
function getMemberPronouns(?string $pronouns): ?array {
global $pronounsSets;
$list = getPronounsFromMark($pronouns);
- return $pronounsSets[$list[count($list) - 1]] ?? $pronounsSets["she"];
+ return $pronounsSets[$list[array_rand($list)]] ?? $pronounsSets["she"];
}
-function getGenderFromPronoun(string $pronoun) {
+function getGenderFromPronoun(string $pronoun, bool $french = false) {
global $pronounsSets;
$set = getPronounsFromMark($pronoun)[0];
- return $pronounsSets[$set]["gender"];
+
+ if ($french) {
+ return ($pronounsSets[$set] ?? $pronounsSets["they"])["gender:fr"];
+ } else {
+ return ($pronounsSets[$set] ?? $pronounsSets["they"])["gender"];
+ }
}
-function getTooltipsFromMark(string $mark = null): ?string {
+function pronounInFrench(string $pronoun): string {
+ return match ($pronoun) {
+ "she" => "elle",
+ "her" => "elle",
+ "he" => "il",
+ "him" => "lui",
+ "they" => "iel",
+ "them" => "iel",
+ "it" => "iel",
+ "its" => "iel",
+ "pony" => "poney",
+ "pony's" => "à poney",
+ "ponys" => "à poney",
+ default => $pronoun,
+ };
+}
+
+function getTooltipsFromMark(string $mark = null, bool $french = false): ?string {
if (!isset($mark)) {
return null;
} else {
- return implode("/", array_map(function ($i) {
- global $pronounsSets;
- return "<span title='" . ucfirst(getGenderFromPronoun($i)) . "' data-bs-toggle='tooltip'>" . $i . "</span>";
- }, explode("/", $mark)));
+ if ($french) {
+ return implode("/", array_map(function ($i) {
+ return "<span title='" . ucfirst(getGenderFromPronoun($i, true)) . "' data-bs-toggle='tooltip'>" . pronounInFrench($i) . "</span>";
+ }, explode("/", $mark)));
+ } else {
+ return implode("/", array_map(function ($i) {
+ return "<span title='" . ucfirst(getGenderFromPronoun($i, false)) . "' data-bs-toggle='tooltip'>" . $i . "</span>";
+ }, explode("/", $mark)));
+ }
}
} \ No newline at end of file
diff --git a/includes/refresh.php b/includes/refresh.php
index 83745fb..79e3b7f 100644
--- a/includes/refresh.php
+++ b/includes/refresh.php
@@ -25,26 +25,22 @@ function getSystem(string $id) {
echo(" Base system info\n");
$currentOpStart = microtime(true);
- file_put_contents("./data/$id-general.json", file_get_contents("https://api.pluralkit.me/v2/systems/$id"));
- sleep(1);
+ file_put_contents("./data/$id-general.json", file_get_contents("https://pluralkit.equestria.dev/v2/systems/$id"));
$times["system-general-$id"] = microtime(true) - $currentOpStart;
echo(" System members\n");
$currentOpStart = microtime(true);
- file_put_contents("./data/$id-members.json", file_get_contents("https://api.pluralkit.me/v2/systems/$id/members"));
- sleep(1);
+ file_put_contents("./data/$id-members.json", file_get_contents("https://pluralkit.equestria.dev/v2/systems/$id/members"));
$times["system-members-$id"] = microtime(true) - $currentOpStart;
echo(" Fronters\n");
$currentOpStart = microtime(true);
- file_put_contents("./data/$id-fronters.json", file_get_contents("https://api.pluralkit.me/v2/systems/$id/fronters"));
- sleep(1);
+ file_put_contents("./data/$id-fronters.json", file_get_contents("https://pluralkit.equestria.dev/v2/systems/$id/fronters"));
$times["system-fronters-$id"] = microtime(true) - $currentOpStart;
echo(" Switches\n");
$currentOpStart = microtime(true);
- file_put_contents("./data/$id-switches.json", file_get_contents("https://api.pluralkit.me/v2/systems/$id/switches"));
- sleep(1);
+ file_put_contents("./data/$id-switches.json", file_get_contents("https://pluralkit.equestria.dev/v2/systems/$id/switches"));
$times["system-switches-$id"] = microtime(true) - $currentOpStart;
}
diff --git a/includes/score.php b/includes/score.php
index 89b3d3c..e0d0d62 100644
--- a/includes/score.php
+++ b/includes/score.php
@@ -33,7 +33,7 @@ function calculateScore($metadata, $name) {
function scoreOrder($members, $system) {
$ordered = [];
foreach ($members as $member) {
- if ($member["name"] !== "unknown") {
+ if ($member["name"] !== "unknown" && $member["name"] !== "fusion" && !str_ends_with($member["name"], "-travelling")) {
$systemID = $member["system"] ?? $system;
$member["_metadata"] = parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-$member[id]-metadata.json"), true));
@@ -52,7 +52,7 @@ function scoreOrder($members, $system) {
function scoreOrderGlobal() {
$ordered = [];
foreach (json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/gdapd-members.json"), true) as $member) {
- if ($member["name"] !== "unknown") {
+ if ($member["name"] !== "unknown" && $member["name"] !== "fusion" && !str_ends_with($member["name"], "-travelling")) {
$member["_system"] = "gdapd";
$member["_metadata"] = parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/gdapd-$member[id]-metadata.json"), true));
$member["_score"] = calculateScore(parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/gdapd-$member[id]-metadata.json"), true)), $member["display_name"] ?? $member["name"]);
@@ -60,7 +60,7 @@ function scoreOrderGlobal() {
}
}
foreach (json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/ynmuc-members.json"), true) as $member) {
- if ($member["name"] !== "unknown") {
+ if ($member["name"] !== "unknown" && $member["name"] !== "fusion" && !str_ends_with($member["name"], "-travelling")) {
$member["_system"] = "ynmuc";
$member["_metadata"] = parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/ynmuc-$member[id]-metadata.json"), true));
$member["_score"] = calculateScore(parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/ynmuc-$member[id]-metadata.json"), true)), $member["display_name"] ?? $member["name"]);
diff --git a/includes/session.php b/includes/session.php
index 27acf6b..2157f5f 100644
--- a/includes/session.php
+++ b/includes/session.php
@@ -1,6 +1,7 @@
<?php
global $isLoggedIn;
+global $isUserLoggedIn;
global $_PROFILE;
if (isset($_COOKIE['PEH2_SESSION_TOKEN'])) {
@@ -16,4 +17,19 @@ if (isset($_COOKIE['PEH2_SESSION_TOKEN'])) {
}
} else {
$isLoggedIn = false;
+}
+
+if (isset($_COOKIE['PEH2_USER_TOKEN'])) {
+ if (str_contains($_COOKIE['PEH2_USER_TOKEN'], ".") || str_contains($_COOKIE['PEH2_USER_TOKEN'], "/")) {
+ $isUserLoggedIn = false;
+ }
+
+ if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/tokens-public/" . str_replace(".", "", str_replace("/", "", $_COOKIE['PEH2_USER_TOKEN'])))) {
+ $_PROFILE = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/tokens-public/" . str_replace(".", "", str_replace("/", "", $_COOKIE['PEH2_USER_TOKEN']))), true);
+ $isUserLoggedIn = true;
+ } else {
+ $isUserLoggedIn = false;
+ }
+} else {
+ $isUserLoggedIn = false;
} \ No newline at end of file
diff --git a/includes/short.php b/includes/short.php
new file mode 100644
index 0000000..dec0e09
--- /dev/null
+++ b/includes/short.php
@@ -0,0 +1,47 @@
+<?php
+
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/functions.php";
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/bitset.php";
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/score.php";
+
+global $toplevel;
+
+header("Content-Type: text/plain");
+$members = scoreOrderGlobal();
+$list = [
+ "rd" => "/raindrops",
+ "cb" => "/cloudburst",
+ "minty" => "/cloudy"
+];
+
+foreach ($members as $member) {
+ for ($i = 1; $i < strlen($member["name"]); $i++) {
+ $part = substr($member["name"], 0, $i);
+
+ if (in_array($part, array_keys($list))) {
+ $list[$part] = false;
+ } else {
+ $list[$part] = "/" . $member["name"];
+ }
+ }
+
+ foreach ($member["proxy_tags"] as $proxy) {
+ $system = $member["_system"] === "gdapd" ? "rd" : "cb";
+ $list[$system . preg_replace("/[^a-z]/m", "", $proxy["prefix"])] = "/" . $member["name"];
+ }
+
+ $list[$member["id"]] = "/" . $member["name"];
+ $list[$member["uuid"]] = "/" . $member["name"];
+}
+
+$list["minty"] = "/cloudy";
+
+if (in_array($toplevel, array_keys($list)) && $list[$toplevel]) {
+ if ($toplevel !== "unknown") {
+ header("Location: " . $list[$toplevel]);
+ } else {
+ header("Location: /?error=Page not found: " . strip_tags($toplevel)) and die();
+ }
+} else {
+ header("Location: /?error=Page not found: " . strip_tags($toplevel)) and die();
+} \ No newline at end of file
diff --git a/includes/subsysbanner.php b/includes/subsysbanner.php
index 95c6942..e36d0b5 100644
--- a/includes/subsysbanner.php
+++ b/includes/subsysbanner.php
@@ -25,7 +25,7 @@ $fronters = array_map(function ($item) {
<span>
<b>Fronter:</b>
<?php if (in_array($fronters[0], getSubsystemByID($subsystemID)["members"])): $member = getMember($fronters[0]); ?>
- <a class="member-link" href="/<?= $system ?>/<?= $member["name"] ?>"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <a class="member-link" href="/<?= $member["name"] ?>"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
<?php else: ?>
<span class="text-muted">N/A</span>
<?php endif; ?>
@@ -48,7 +48,7 @@ $fronters = array_map(function ($item) {
}
?>
- <b>Last Fronter: </b><a class="member-link" href="/<?= $system ?>/<?= $member["name"] ?>"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <b>Last Fronter: </b><a class="member-link" href="/<?= $member["name"] ?>"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
</span>
<span>
<b>Members:</b> <?= count(getSubsystemByID($subsystemID)["members"]) ?>
diff --git a/includes/sysbanner.php b/includes/sysbanner.php
index 7b6bbf1..5ffe000 100644
--- a/includes/sysbanner.php
+++ b/includes/sysbanner.php
@@ -31,7 +31,7 @@ $travelling = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includ
foreach ($members as $member) {
$data = parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-$member[id]-metadata.json"), true));
if ($data["host"]): $foundHost = true; ?>
- <a class="member-link" href="/<?= $system ?>/<?= $member["name"] ?>"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <a class="member-link" href="/<?= $member["name"] ?>"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
<?php endif;
}
@@ -43,7 +43,7 @@ $travelling = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includ
</span>
<span>
<?php $member = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-fronters.json"), true)["members"][0]; ?>
- <b>Fronter: </b><a class="member-link" href="/<?= $system ?>/<?= $member["name"] ?>"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <b>Fronter: </b><a class="member-link" href="/<?= $member["name"] ?>"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . resolveMember($member['name']) : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? ($member["name"] === "fusion" ? "<peh-muted>More than one</peh-muted>" : $member["name"])) ?></a>
</span>
<span>
<?php
@@ -59,15 +59,18 @@ $travelling = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includ
}
?>
- <b>Last Fronter: </b><a class="member-link" href="/<?= $system ?>/<?= $member["name"] ?>"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a>
+ <b>Last fronter: </b><a class="member-link" href="/<?= $member["name"] ?>"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? ($member["name"] === "fusion" ? "<peh-muted>More than one</peh-muted>" : $member["name"])) ?></a>
</span>
<span>
- <b>Members: </b><?= count(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-members.json"), true)) - 1 ?><?php
+ <?php
$travellers = array_filter(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/" . ($systemID === "gdapd" ? "ynmuc" : "gdapd") . "-members.json"), true), function ($i) use ($travelling) {
return $travelling[$i['id']]['travelling'];
});
+ ?>
+ <b>Members: </b><?= count(scoreOrder(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-members.json"), true), $systemID)) ?><?php
+
if (count($travellers) > 0) {
echo("<br>+ " . count($travellers) . " traveller" . (count($travellers) > 1 ? "s" : ""));
}
@@ -75,7 +78,7 @@ $travelling = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includ
?>
</span>
<span>
- <b>Last Switch: </b><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"])) ?>"><?= timeAgo(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-fronters.json"), true)["timestamp"]) ?></span>
+ <b>Last switch: </b><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"])) ?>"><?= timeAgo(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-fronters.json"), true)["timestamp"]) ?></span>
</span>
</div>
</div>
diff --git a/includes/system.php b/includes/system.php
index 059eed7..46adeb1 100644
--- a/includes/system.php
+++ b/includes/system.php
@@ -1,47 +1,5 @@
<?php global $system; global $systemCommonName; global $systemID; $title = $systemCommonName; require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/header.php';
-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 timeAgo($time): string {
- if (!is_numeric($time)) {
- $time = strtotime($time);
- }
-
- $periods = ["second", "minute", "hour", "day", "week", "month", "year", "age"];
- $lengths = array("60", "60", "24", "7", "4.35", "12", "100");
-
- $now = time();
-
- $difference = $now - $time;
- if ($difference <= 10 && $difference >= 0) {
- return $tense = "now";
- } elseif ($difference > 0) {
- $tense = "ago";
- } else {
- $tense = "later";
- }
-
- for ($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {
- $difference /= $lengths[$j];
- }
-
- $difference = round($difference);
-
- $period = $periods[$j] . ($difference >1 ? "s" :'');
- return "{$difference} {$period} {$tense}";
-}
-
?>
<br>
diff --git a/includes/system/compare.php b/includes/system/compare.php
index 6d69cd0..f597cf3 100644
--- a/includes/system/compare.php
+++ b/includes/system/compare.php
@@ -1,4 +1,4 @@
-<?php global $system; global $systemCommonName; global $systemID; $title = "Compare members · " . $systemCommonName; require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/header.php';
+<?php global $system; global $systemCommonName; global $systemID; $title = "Compare members · " . $systemCommonName; require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/header.php'; global $travelling;
$members = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-members.json"), true);
@@ -70,14 +70,6 @@ function getMember(string $id) {
<span class="comparison-header-l5">Ltl.</span>
</span>
<span class="comparison-header comparison-item">
- <span class="comparison-header-l0">Not talking</span>
- <span class="comparison-header-l1">No talk</span>
- <span class="comparison-header-l2">No talk</span>
- <span class="comparison-header-l3">NT.</span>
- <span class="comparison-header-l4">NT.</span>
- <span class="comparison-header-l5">NT.</span>
- </span>
- <span class="comparison-header comparison-item">
<span class="comparison-header-l0">Protector</span>
<span class="comparison-header-l1">Protector</span>
<span class="comparison-header-l2">Protect.</span>
@@ -97,41 +89,41 @@ function getMember(string $id) {
}
?>
- <a title="<?= $member["display_name"] ?? $member["name"] ?>" data-bs-toggle="tooltip" class="member-link comparison-item comparison-item-clickable" href="/<?= $systemID === "gdapd" ? "raindrops" : "cloudburst" ?>/<?= $member["name"] ?>">
- <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <span style="vertical-align: middle;"><span class="comparison-name-full"><?= $member["display_name"] ?? $member["name"] ?></span><span class="comparison-name-small"><?= getMiniName($member["display_name"] ?? $member["name"]) ?></span></span>
+ <a title="<?= $member["display_name"] ?? $member["name"] ?>" data-bs-toggle="tooltip" class="member-link comparison-item comparison-item-clickable" href="/<?= $member["name"] ?>">
+ <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <span style="vertical-align: middle;"><span class="comparison-name-full"><?= $member["display_name"] ?? $member["name"] ?></span><span class="comparison-name-small"><?= getMiniName($member["display_name"] ?? $member["name"]) ?></span></span>
<span class="comparison-colors" style="background-color: #<?= $member["color"] ?? "ffffff" ?>; height: 16px; width: 16px;display: inline-block;vertical-align: middle;border-radius:2px;"></span>
</a>
<span class="comparison-item">
<?php foreach ($metadata["species"] ?? [] as $species): ?>
<img data-bs-toggle="tooltip" title="<?php switch ($species) {
case "earth":
- if ($metadata["robot"]) echo "Robot earth pony"; else echo "Earth pony";
+ if ($metadata["robot"]) echo "Robot earth pony"; else if ($metadata["plush"]) echo "Earth pony plush"; else echo "Earth pony";
break;
case "alicorn":
- if ($metadata["robot"]) echo "Robot alicorn"; else echo "Alicorn";
+ if ($metadata["robot"]) echo "Robot alicorn"; else if ($metadata["plush"]) echo "Alicorn plush"; else echo "Alicorn";
break;
case "crystal":
- if ($metadata["robot"]) echo "Robot crystal pony"; else echo "Crystal pony";
+ if ($metadata["robot"]) echo "Robot crystal pony"; else if ($metadata["plush"]) echo "Crystal pony plush"; else echo "Crystal pony";
break;
case "pegasus":
- if ($metadata["robot"]) echo "Robot pegasus"; else echo "Pegasus";
+ if ($metadata["robot"]) echo "Robot pegasus"; else if ($metadata["plush"]) echo "Pegasus plush"; else echo "Pegasus";
break;
case "batpony":
- if ($metadata["robot"]) echo "Robot bat pony"; else echo "Bat pony";
+ if ($metadata["robot"]) echo "Robot bat pony"; else if ($metadata["plush"]) echo "Bat pony plush"; else echo "Bat pony";
break;
case "unicorn":
- if ($metadata["robot"]) echo "Robot unicorn"; else echo "Unicorn";
+ if ($metadata["robot"]) echo "Robot unicorn"; else if ($metadata["plush"]) echo "Unicorn plush"; else echo "Unicorn";
break;
default:
echo $species . "_" . $metadata["robot"];
break;
- } ?>" style="width:24px;vertical-align: middle;position:relative;top:-5px;" src="/assets/species/<?= $species ?><?= $metadata["robot"] ? "-robot" : "" ?>.png" alt="<?= $species ?>">
+ } ?>" style="width:24px;vertical-align: middle;position:relative;top:-5px;" src="/assets/species/<?= $species ?><?= $metadata["robot"] ? "-robot" : ($metadata["plush"] ? "-plush" : "") ?>.png" alt="<?= $species ?>">
<?php endforeach; ?>
</span>
<span class="comparison-item">
@@ -143,15 +135,22 @@ function getMember(string $id) {
<?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 title="<b><?= $mfMember["display_name"] ?? $mfMember["name"] ?></b><br>Marefriend" data-bs-toggle="tooltip" data-bs-html="true" 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;"></a><?php $index++; endforeach; ?><?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) {
+ }); sort($mfMember); $mfMember = $mfMember[0]; ?><a title="<b><?= $mfMember["display_name"] ?? $mfMember["name"] ?></b><br>Marefriend" data-bs-toggle="tooltip" data-bs-html="true" class="member-link tooltip-nohelp" href="/<?= $mfMember["name"] ?>"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $mfMember['name'] . ".png") ? "-" . $mfMember['name'] : "" ?>.png" style="width:24px;"></a><?php $index++; endforeach; ?><?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 title="<b><?= $mfMember["display_name"] ?? $mfMember["name"] ?></b><br>Sister" data-bs-toggle="tooltip" data-bs-html="true" class="member-link tooltip-nohelp" href="/<?= $mfMember["name"] ?>"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $mfMember['name'] . ".png") ? "-" . $mfMember['name'] : "" ?>.png" style="width:24px;"></a><?php $index++; endforeach; ?><?php $index = 0; foreach ($metadata["caretakers"] 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 title="<b><?= $mfMember["display_name"] ?? $mfMember["name"] ?></b><br>Sister" data-bs-toggle="tooltip" data-bs-html="true" 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;"></a><?php $index++; endforeach; ?>
+ }); sort($mfMember); $mfMember = $mfMember[0]; ?><a title="<b><?= $mfMember["display_name"] ?? $mfMember["name"] ?></b><br>Caretaker" data-bs-toggle="tooltip" data-bs-html="true" class="member-link tooltip-nohelp" href="/<?= $mfMember["name"] ?>"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $mfMember['name'] . ".png") ? "-" . $mfMember['name'] : "" ?>.png" style="width:24px;"></a><?php $index++; endforeach; ?>
</span>
</span>
<span class="comparison-item">
<?php if ($metadata["host"]): ?>
- <img data-bs-toggle="tooltip" title="Yes" src="/assets/icons/complete.svg" alt="Yes" style="width:24px;">
+ <?php if ($travelling[$member["id"]]["travelling"]): ?>
+ <img data-bs-toggle="tooltip" title="Yes, but currently travelling" src="/assets/icons/partial.svg" alt="Yes, but currently travelling" style="width:24px;">
+ <?php else: ?>
+ <img data-bs-toggle="tooltip" title="Yes" src="/assets/icons/complete.svg" alt="Yes" style="width:24px;">
+ <?php endif; ?>
<?php else: ?>
<img data-bs-toggle="tooltip" title="No" src="/assets/icons/none.svg" alt="No" style="width:24px;">
<?php endif; ?>
@@ -173,15 +172,12 @@ function getMember(string $id) {
<?php endif; ?>
</span>
<span class="comparison-item">
- <?php if ($metadata["not_talking"]): ?>
- <img data-bs-toggle="tooltip" title="Yes" src="/assets/icons/complete.svg" alt="Yes" style="width:24px;">
- <?php else: ?>
- <img data-bs-toggle="tooltip" title="No" src="/assets/icons/none.svg" alt="No" style="width:24px;">
- <?php endif; ?>
- </span>
- <span class="comparison-item">
<?php if ($metadata["protector"]): ?>
- <img data-bs-toggle="tooltip" title="Yes" src="/assets/icons/complete.svg" alt="Yes" style="width:24px;">
+ <?php if ($travelling[$member["id"]]["travelling"]): ?>
+ <img data-bs-toggle="tooltip" title="Yes, but currently travelling" src="/assets/icons/partial.svg" alt="Yes, but currently travelling" style="width:24px;">
+ <?php else: ?>
+ <img data-bs-toggle="tooltip" title="Yes" src="/assets/icons/complete.svg" alt="Yes" style="width:24px;">
+ <?php endif; ?>
<?php else: ?>
<img data-bs-toggle="tooltip" title="No" src="/assets/icons/none.svg" alt="No" style="width:24px;">
<?php endif; ?>
diff --git a/includes/system/history.php b/includes/system/history.php
index 8483e3a..1f04bb7 100644
--- a/includes/system/history.php
+++ b/includes/system/history.php
@@ -119,8 +119,8 @@ function getMember(string $id) {
<?= isNotToday($fronter["date"], 0) ? "00:00" : date('H:i', $fronter["date"]) ?>
</span>
<span class="fronter-profile" style="vertical-align: middle;">
- <a class="member-link" href="/<?= $systemID === "gdapd" ? "raindrops" : "cloudburst" ?>/<?= $member["name"] ?>">
- <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
+ <a class="member-link" href="/<?= $member["name"] ?>">
+ <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
</a>
</span>
</div>
@@ -149,8 +149,8 @@ function getMember(string $id) {
<?= isNotToday($fronter["date"], 1) ? "00:00" : date('H:i', $fronter["date"]) ?>
</span>
<span class="fronter-profile" style="vertical-align: middle;">
- <a class="member-link" href="/<?= $systemID === "gdapd" ? "raindrops" : "cloudburst" ?>/<?= $member["name"] ?>">
- <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
+ <a class="member-link" href="/<?= $member["name"] ?>">
+ <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
</a>
</span>
</div>
@@ -179,8 +179,8 @@ function getMember(string $id) {
<?= isNotToday($fronter["date"], 2) ? "00:00" : date('H:i', $fronter["date"]) ?>
</span>
<span class="fronter-profile" style="vertical-align: middle;">
- <a class="member-link" href="/<?= $systemID === "gdapd" ? "raindrops" : "cloudburst" ?>/<?= $member["name"] ?>">
- <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
+ <a class="member-link" href="/<?= $member["name"] ?>">
+ <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
</a>
</span>
</div>
@@ -209,8 +209,8 @@ function getMember(string $id) {
<?= isNotToday($fronter["date"], 3) ? "00:00" : date('H:i', $fronter["date"]) ?>
</span>
<span class="fronter-profile" style="vertical-align: middle;">
- <a class="member-link" href="/<?= $systemID === "gdapd" ? "raindrops" : "cloudburst" ?>/<?= $member["name"] ?>">
- <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
+ <a class="member-link" href="/<?= $member["name"] ?>">
+ <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
</a>
</span>
</div>
@@ -239,8 +239,8 @@ function getMember(string $id) {
<?= isNotToday($fronter["date"], 4) ? "00:00" : date('H:i', $fronter["date"]) ?>
</span>
<span class="fronter-profile" style="vertical-align: middle;">
- <a class="member-link" href="/<?= $systemID === "gdapd" ? "raindrops" : "cloudburst" ?>/<?= $member["name"] ?>">
- <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
+ <a class="member-link" href="/<?= $member["name"] ?>">
+ <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
</a>
</span>
</div>
@@ -269,8 +269,8 @@ function getMember(string $id) {
<?= isNotToday($fronter["date"], 5) ? "00:00" : date('H:i', $fronter["date"]) ?>
</span>
<span class="fronter-profile" style="vertical-align: middle;">
- <a class="member-link" href="/<?= $systemID === "gdapd" ? "raindrops" : "cloudburst" ?>/<?= $member["name"] ?>">
- <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
+ <a class="member-link" href="/<?= $member["name"] ?>">
+ <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
</a>
</span>
</div>
@@ -299,8 +299,8 @@ function getMember(string $id) {
<?= isNotToday($fronter["date"], 6) ? "00:00" : date('H:i', $fronter["date"]) ?>
</span>
<span class="fronter-profile" style="vertical-align: middle;">
- <a class="member-link" href="/<?= $systemID === "gdapd" ? "raindrops" : "cloudburst" ?>/<?= $member["name"] ?>">
- <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
+ <a class="member-link" href="/<?= $member["name"] ?>">
+ <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
</a>
</span>
</div>
@@ -329,8 +329,8 @@ function getMember(string $id) {
<?= isNotToday($fronter["date"], 7) ? "00:00" : date('H:i', $fronter["date"]) ?>
</span>
<span class="fronter-profile" style="vertical-align: middle;">
- <a class="member-link" href="/<?= $systemID === "gdapd" ? "raindrops" : "cloudburst" ?>/<?= $member["name"] ?>">
- <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
+ <a class="member-link" href="/<?= $member["name"] ?>">
+ <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
</a>
</span>
</div>
@@ -359,8 +359,8 @@ function getMember(string $id) {
<?= isNotToday($fronter["date"], 8) ? "00:00" : date('H:i', $fronter["date"]) ?>
</span>
<span class="fronter-profile" style="vertical-align: middle;">
- <a class="member-link" href="/<?= $systemID === "gdapd" ? "raindrops" : "cloudburst" ?>/<?= $member["name"] ?>">
- <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
+ <a class="member-link" href="/<?= $member["name"] ?>">
+ <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
</a>
</span>
</div>
@@ -384,8 +384,8 @@ function getMember(string $id) {
<?= isNotToday($fronter["date"], 9) ? "00:00" : date('H:i', $fronter["date"]) ?>
</span>
<span class="fronter-profile" style="vertical-align: middle;">
- <a class="member-link" href="/<?= $systemID === "gdapd" ? "raindrops" : "cloudburst" ?>/<?= $member["name"] ?>">
- <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
+ <a class="member-link" href="/<?= $member["name"] ?>">
+ <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?>
</a>
</span>
</div>
diff --git a/includes/system/species.php b/includes/system/species.php
index 7747809..a35e811 100644
--- a/includes/system/species.php
+++ b/includes/system/species.php
@@ -1,9 +1,23 @@
-<?php global $system; global $systemCommonName; global $systemID; $title = "Members by species · " . $systemCommonName; require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/header.php';
+<?php global $system; global $systemCommonName; global $systemID; $title = "Members by species · " . $systemCommonName; require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/header.php'; global $travelling;
$members = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID-members.json"), true);
$members = scoreOrder($members, $systemID);
function species(array $members, string $id, string $name) { global $systemID; ?>
+ <?php
+
+ $members = [
+ ...array_filter($members, function ($i) {
+ global $travelling;
+ return !$travelling[$i['id']]['travelling'];
+ }),
+ ...array_filter(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/" . ($systemID === "gdapd" ? "ynmuc" : "gdapd") . "-members.json"), true), function ($i) use ($id, $systemID) {
+ global $travelling;
+ return $travelling[$i['id']]['travelling'] && in_array($id, parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/" . ($systemID === "gdapd" ? "ynmuc" : "gdapd") . "-" . $i['id'] . "-metadata.json"), true))["species"]);
+ })
+ ];
+
+ ?>
<div class="relation" style="background-color:rgba(255, 255, 255, .1);margin-bottom:10px;padding:10px;border-radius:10px;display:grid;grid-template-columns: 1fr 4fr;">
<div class="relation-intro" style="background-color:rgba(255, 255, 255, .05);border-right:1px solid rgba(255, 255, 255, .1);margin:-10px;padding:10px;border-top-left-radius:10px;border-bottom-left-radius:10px;color: white;text-decoration: none;">
<img src="/assets/species/<?= $id ?>.png" style="width:24px;"><span class="species-name"> <?= $name ?></span> (<?= count($members) ?>)
@@ -12,7 +26,7 @@ function species(array $members, string $id, string $name) { global $systemID; ?
<div class="relation-item" style="margin-left:10px;padding:0 20px;">
<?php if (count($members) > 0): ?>
<?php $index = 0; foreach ($members as $member): ?>
- <a class="member-link" href="/<?= $systemID === "gdapd" ? "raindrops" : "cloudburst" ?>/<?= $member["name"] ?>"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a><?php if ($index + 2 <= count($members)) echo('<span class="list-separator-desktop">, &nbsp;</span><span class="list-separator-mobile"><br></span>'); $index++; endforeach; ?>
+ <a class="member-link" href="/<?= $member["name"] ?>"><img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <?= getMiniName($member["display_name"] ?? $member["name"]) ?></a><?php if ($index + 2 <= count($members)) echo('<span class="list-separator-desktop">, &nbsp;</span><span class="list-separator-mobile"><br></span>'); $index++; endforeach; ?>
<?php else: ?>-<?php endif; ?>
</div>
</div>
diff --git a/includes/system/tree.php b/includes/system/tree.php
index 04cbf83..21d146b 100644
--- a/includes/system/tree.php
+++ b/includes/system/tree.php
@@ -78,7 +78,7 @@ function getMemberSubsystem(array $member) {
<div class="tree-l0-separator">&nbsp;</div>
<div class="tree-l1-separator<?= $ssfirst ? " tree-first-separator" : "" ?>">&nbsp;</div>
<div class="tree-inner">
- <a class="member-link" href="/<?= $systemID === "gdapd" ? "raindrops" : "cloudburst" ?>/<?= $ssmember["name"] ?>">
+ <a class="member-link" href="/<?= $ssmember["name"] ?>">
<img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $ssmember['name'] . ".png") ? "-" . $ssmember['name'] : "" ?>.png" style="width:24px;"> <span style="vertical-align: middle;"><?= $ssmember["display_name"] ?? $ssmember["name"] ?></span>
</a>
</div>
@@ -90,8 +90,8 @@ function getMemberSubsystem(array $member) {
<div class="tree-l0">
<div class="tree-l0-separator<?= $first ? " tree-first-separator" : "" ?>">&nbsp;</div>
<div class="tree-inner">
- <a class="member-link" href="/<?= $systemID === "gdapd" ? "raindrops" : "cloudburst" ?>/<?= $member["name"] ?>">
- <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member['name'] . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <span style="vertical-align: middle;"><?= $member["display_name"] ?? $member["name"] ?></span>
+ <a class="member-link" href="/<?= $member["name"] ?>">
+ <img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . resolveMember($member['name']) . ".png") ? "-" . $member['name'] : "" ?>.png" style="width:24px;"> <span style="vertical-align: middle;"><?= $member["display_name"] ?? $member["name"] ?></span>
</a>
</div>
<?php if (memberHasSubsystem($member)): ?>
@@ -100,7 +100,7 @@ function getMemberSubsystem(array $member) {
<div class="tree-l0-separator">&nbsp;</div>
<div class="tree-l1-separator<?= $ssfirst ? " tree-first-separator" : "" ?>">&nbsp;</div>
<div class="tree-inner">
- <a class="member-link" href="/<?= $systemID === "gdapd" ? "raindrops" : "cloudburst" ?>/<?= $ssmember["name"] ?>">
+ <a class="member-link" href="/<?= $ssmember["name"] ?>">
<img src="/assets/uploads/pt<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $ssmember['name'] . ".png") ? "-" . $ssmember['name'] : "" ?>.png" style="width:24px;"> <span style="vertical-align: middle;"><?= $ssmember["display_name"] ?? $ssmember["name"] ?></span>
</a>
</div>