diff options
Diffstat (limited to 'includes')
-rw-r--r-- | includes/bitset.inc | 142 | ||||
-rw-r--r-- | includes/flags.json | 23 | ||||
-rw-r--r-- | includes/fullbanner.inc | 7 | ||||
-rw-r--r-- | includes/metadata.inc | 182 | ||||
-rw-r--r-- | includes/pages.json | 9 | ||||
-rw-r--r-- | includes/planner.inc | 20 | ||||
-rw-r--r-- | includes/refresh.php | 5 |
7 files changed, 159 insertions, 229 deletions
diff --git a/includes/bitset.inc b/includes/bitset.inc index 5106d80..8e3f5b2 100644 --- a/includes/bitset.inc +++ b/includes/bitset.inc @@ -1,145 +1,5 @@ <?php -function parseBitset($bitset, $birthData) { - $bin = str_repeat("0", 48 - strlen(decbin($bitset))) . decbin($bitset); - - $sharedMemory = bindec(substr($bin, 24, 2)); - $little = bindec(substr($bin, 27, 2)); - $food = bindec(substr($bin, 16, 2)); - $nonverbal = substr($bin, 15, 1) !== "0"; - $lessFrequent = substr($bin, 14, 1) !== "0"; - $sexuallyActive = substr($bin, 13, 1) !== "0"; - $leader = substr($bin, 11, 1) !== "0"; - $sexualFeatures = substr($bin, 12, 1) !== "0"; - $persecutor = substr($bin, 10, 1) !== "0"; - $protector = substr($bin, 29, 1) !== "0"; - $fictive = substr($bin, 30, 1) !== "0"; - $robot = substr($bin, 45, 1) !== "0"; - $plush = substr($bin, 46, 1) !== "0"; - $polyamorous1 = substr($bin, 18, 1) !== "0"; - $polyamorous2 = substr($bin, 19, 1) !== "0"; - $species1 = substr($bin, 33, 4); - $species2 = substr($bin, 37, 4); - $alignment1 = substr($bin, 41, 4); - $alignment2 = substr($bin, 20, 4); - - $species1 = match ($species1) { - "0001" => "earth", - "0010" => "unicorn", - "0011" => "pegasus", - "0100" => "alicorn", - "0101" => "batpony", - "0110" => "crystal", - "0111" => "changeling", - default => null, - }; - - $species2 = match ($species2) { - "0001" => "earth", - "0010" => "unicorn", - "0011" => "pegasus", - "0100" => "alicorn", - "0101" => "batpony", - "0110" => "crystal", - "0111" => "changeling", - default => null, - }; - - $alignment1 = match ($alignment1) { - "0000" => "aroace", - "0001" => "hetero", - "0010" => "homo", - "0011" => "bi", - "0100" => "pan", - default => null, - }; - - $alignment2 = match ($alignment2) { - "0000" => "aroace", - "0001" => "hetero", - "0010" => "homo", - "0011" => "bi", - "0100" => "pan", - default => null, - }; - - $little = 0; - - if (isset($birthData["age"]) && $birthData["age"] !== 0) { - $age = $birthData["age"]; - } else if (isset($birthData["year"]) && $birthData["year"] > 1900) { - $age = (int)date('Y') - $birthData["year"] + (strtotime(date('Y') . "-" . $birthData["date"]) <= time() ? 0 : -1); - } else { - $age = -2; - } - - if ($age <= 10 && $age > 0) { - $little = 2; - } - - if ($age < 16 && $age > 10) { - $little = 3; - } - - return [ - 'shared_memory' => $sharedMemory, - 'median' => false, - 'protector' => $protector, - 'fictive' => $fictive, - 'little' => $little, - 'not_talking' => false, - 'sexual_features' => $sexualFeatures, - 'host' => false, - 'robot' => $robot, - 'magic' => 0, - 'sensitivity' => 0, - 'food' => $food, - 'plush' => $plush, - 'nonverbal' => $nonverbal, - 'less_frequent' => $lessFrequent, - 'age_spells' => false, - 'age_regressor' => false, - 'leader' => $leader, - 'persecutor' => $persecutor, - 'sexually_active' => $sexuallyActive, - 'polyamorous' => [ - 'romantic' => $polyamorous1, - 'sexual' => $polyamorous2 - ], - 'alignment' => [ - 'romantic' => $alignment1, - 'sexual' => $alignment2 - ], - 'species' => array_filter([ - $species1, - $species2 - ], function ($i) { - return isset($i); - }) - ]; -} - function parseMetadata ($metadata) { - if (isset($metadata)) { - if ($metadata["bitset"]) { - $m = parseBitset($metadata["bitset"], $metadata["birth"] ?? []); - $m["sexfriends"] = $metadata["sexfriends"] ?? []; - $m["marefriends"] = $metadata["marefriends"] ?? []; - $m["bitset"] = $metadata["bitset"] ?? 0; - $m["sisters"] = $metadata["sisters"] ?? []; - $m["regression"] = $metadata["regression"] ?? null; - $m["caretakers"] = $metadata["caretakers"] ?? []; - $m["median"] = $metadata["median"] ?? null; - $m["birth"] = $metadata["birth"] ?? null; - $m["heat"] = $metadata["heat"] ?? null; - $m["code"] = $metadata["code"] ?? null; - $m["interest"] = $metadata["interest"] ?? null; - } else { - $m = $metadata; - } - - return $m; - } else { - return $metadata; - } + return $metadata; }
\ No newline at end of file diff --git a/includes/flags.json b/includes/flags.json new file mode 100644 index 0000000..1802615 --- /dev/null +++ b/includes/flags.json @@ -0,0 +1,23 @@ +{ + "age_regressor": null, + "age_spells": null, + "host": null, + "not_talking": null, + "median": null, + + "protector": "Protector", + "leader": "Leader", + "fictive": "Fictive", + "sexual_features": "Enable sexual features (for ponies below 16)", + "sexually_active": "Preemptive sexual consent", + "robot": "Robot", + "plush": "Plush", + "polyamorous": { + "romantic": "Polyamorous (romantic)", + "sexual": "Polyamorous (sexual)" + }, + "non_verbal": "Non verbal in real life", + "less_frequent": "Fronts less frequently", + "persecutor": "Persecutor", + "pacifier": "Sleeps with pacifier" +}
\ No newline at end of file diff --git a/includes/fullbanner.inc b/includes/fullbanner.inc index b5a05b1..f6741c9 100644 --- a/includes/fullbanner.inc +++ b/includes/fullbanner.inc @@ -13,13 +13,6 @@ <script src="/assets/logo/banner.js"></script><script>refreshBanner(false, <?= $lang["_french"] ? "true" : "false" ?>)</script> -<?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/metadata/<?= $memberID ?>.json</code>) - </div> - <?php endif; ?> -<?php endif; ?> <?php if ($travelling[$memberID]['travelling'] && !$travelling[$memberID]['equestria']): ?> <div class="alert alert-primary"> <?= getMiniName($memberData["display_name"] ?? $memberData["name"]) ?> <?= $lang["fullbanner"]["visit"][0] ?> <?= $systemID === "ynmuc" ? "Raindrops System" : "Cloudburst System" ?><?= str_replace("%1", getMemberPronouns($memberData["pronouns"])["subjective"], str_replace("%2", getMemberPronouns($memberData["pronouns"])["third"] ? "is" : "are", $lang["fullbanner"]["visit"][1])) ?><?= $systemCommonName ?>. diff --git a/includes/metadata.inc b/includes/metadata.inc index 7bc82ef..d7875c5 100644 --- a/includes/metadata.inc +++ b/includes/metadata.inc @@ -16,47 +16,145 @@ if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/metadata/" . $member <b>File</b><br> <?= $_SERVER['DOCUMENT_ROOT'] . "/includes/data/metadata/" . $memberID . ".json" ?> </p> + + <hr> + + <h3>General information</h3> + + <div style="margin-bottom: 1rem;"> + <b>General:</b><br> + <div style="display: grid; grid-template-columns: repeat(2, 1fr); grid-gap: 10px;"> + <select class="tooltip-nohelp form-select" style='display:inline-block;filter:invert(1) hue-rotate(180deg);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23000000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");' name="food"> + <option <?= $metadata["food"] === 0 ? "selected" : "" ?> value="0">Doesn't need to eat</option> + <option <?= $metadata["food"] === 1 ? "selected" : "" ?> value="1">Can't eat fish or meat</option> + <option <?= $metadata["food"] === 2 ? "selected" : "" ?> value="2">Can't eat meat</option> + <option <?= $metadata["food"] === 3 ? "selected" : "" ?> value="3">Can eat everything</option> + </select> + <select class="tooltip-nohelp form-select" style='display:inline-block;filter:invert(1) hue-rotate(180deg);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23000000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");' name="shared_memory"> + <option <?= $metadata["shared_memory"] === 2 ? "selected" : "" ?> value="2">Doing subconsciously</option> + <option <?= $metadata["shared_memory"] === 1 ? "selected" : "" ?> value="1">Consciously willing</option> + <option <?= $metadata["shared_memory"] === 0 ? "selected" : "" ?> value="0">Incapable/not willing</option> + </select> + </div> + </div> + <div style="margin-bottom: 1rem;"> + <b>Species</b><br> + <div style="display: grid; grid-template-columns: repeat(2, 1fr); grid-gap: 10px;"> + <select class="tooltip-nohelp form-select" style='display:inline-block;filter:invert(1) hue-rotate(180deg);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23000000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");' name="species[0]"> + <option <?= !isset($metadata["species"][0]) || $metadata["species"][0] === "" ? "selected" : "" ?> value="" disabled>None</option> + <option <?= $metadata["species"][0] === "earth" ? "selected" : "" ?> value="earth">Earth pony</option> + <option <?= $metadata["species"][0] === "unicorn" ? "selected" : "" ?> value="unicorn">Unicorn</option> + <option <?= $metadata["species"][0] === "pegasus" ? "selected" : "" ?> value="pegasus">Pegasus</option> + <option <?= $metadata["species"][0] === "alicorn" ? "selected" : "" ?> value="alicorn">Alicorn</option> + <option <?= $metadata["species"][0] === "batpony" ? "selected" : "" ?> value="batpony">Bat pony</option> + <option <?= $metadata["species"][0] === "crystal" ? "selected" : "" ?> value="crystal">Crystal pony</option> + <option <?= $metadata["species"][0] === "changeling" ? "selected" : "" ?> value="changeling">Changeling</option> + </select> + <select class="tooltip-nohelp form-select" style='display:inline-block;filter:invert(1) hue-rotate(180deg);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23000000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");' name="species[1]"> + <option <?= !isset($metadata["species"][1]) || $metadata["species"][1] === "" ? "selected" : "" ?> value="">None</option> + <option <?= $metadata["species"][1] === "earth" ? "selected" : "" ?> value="earth">Earth pony</option> + <option <?= $metadata["species"][1] === "unicorn" ? "selected" : "" ?> value="unicorn">Unicorn</option> + <option <?= $metadata["species"][1] === "pegasus" ? "selected" : "" ?> value="pegasus">Pegasus</option> + <option <?= $metadata["species"][1] === "alicorn" ? "selected" : "" ?> value="alicorn">Alicorn</option> + <option <?= $metadata["species"][1] === "batpony" ? "selected" : "" ?> value="batpony">Bat pony</option> + <option <?= $metadata["species"][1] === "crystal" ? "selected" : "" ?> value="crystal">Crystal pony</option> + <option <?= $metadata["species"][1] === "changeling" ? "selected" : "" ?> value="changeling">Changeling</option> + </select> + </div> + </div> + <div style="margin-bottom: 1rem;"> + <b>Alignment</b><br> + <div style="display: grid; grid-template-columns: repeat(2, 1fr); grid-gap: 10px;"> + <select class="tooltip-nohelp form-select" style='display:inline-block;filter:invert(1) hue-rotate(180deg);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23000000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");' name="alignment[sexual]"> + <option <?= $metadata["alignment"]["sexual"] === "aroace" ? "selected" : "" ?> value="aroace">Asexual</option> + <option <?= $metadata["alignment"]["sexual"] === "hetero" ? "selected" : "" ?> value="hetero">Heterosexual</option> + <option <?= $metadata["alignment"]["sexual"] === "homo" ? "selected" : "" ?> value="homo">Homosexual</option> + <option <?= $metadata["alignment"]["sexual"] === "bi" ? "selected" : "" ?> value="bi">Bisexual</option> + <option <?= $metadata["alignment"]["sexual"] === "pan" ? "selected" : "" ?> value="pan">Pansexual</option> + </select> + <select class="tooltip-nohelp form-select" style='display:inline-block;filter:invert(1) hue-rotate(180deg);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23000000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");' name="alignment[romantic]"> + <option <?= $metadata["alignment"]["romantic"] === "aroace" ? "selected" : "" ?> value="aroace">Aromantic</option> + <option <?= $metadata["alignment"]["romantic"] === "hetero" ? "selected" : "" ?> value="hetero">Heteroromantic</option> + <option <?= $metadata["alignment"]["romantic"] === "homo" ? "selected" : "" ?> value="homo">Homoromantic</option> + <option <?= $metadata["alignment"]["romantic"] === "bi" ? "selected" : "" ?> value="bi">Biromantic</option> + <option <?= $metadata["alignment"]["romantic"] === "pan" ? "selected" : "" ?> value="pan">Panromantic</option> + </select> + </div> + </div> + + <hr> + + <h3>Relationships</h3> + <p> - <b>Bitset</b><br> - <code id="bitset-text"><?= $metadata["bitset"] ?></code> ยท <a data-bs-toggle="modal" data-bs-target="#bitset" href="#">Edit...</a> - <input name="bitset" id="bitset-value" type="hidden" value="<?= $metadata["bitset"] ?>"> - </p> - <p> - <b>Sexfriends (full IDs, comma-separated):</b><br> + <b>Sexfriends (full IDs, comma-separated)</b><br> <input name="sexfriends" class="form-control" style="filter: invert(1) hue-rotate(180deg);" type="text" value="<?= implode(", ", $metadata["sexfriends"]) ?>"> </p> <p> - <b>Marefriends (full IDs, comma-separated):</b><br> + <b>Marefriends (full IDs, comma-separated)</b><br> <input name="marefriends" class="form-control" style="filter: invert(1) hue-rotate(180deg);" type="text" value="<?= implode(", ", $metadata["marefriends"]) ?>"> </p> <p> - <b>Sisters (full IDs, comma-separated):</b><br> + <b>Sisters (full IDs, comma-separated)</b><br> <input name="sisters" class="form-control" style="filter: invert(1) hue-rotate(180deg);" type="text" value="<?= implode(", ", $metadata["sisters"]) ?>"> </p> <p> - <b>Caretakers (full IDs, comma-separated):</b><br> + <b>Caretakers (full IDs, comma-separated)</b><br> <input name="caretakers" class="form-control" style="filter: invert(1) hue-rotate(180deg);" type="text" value="<?= implode(", ", $metadata["caretakers"]) ?>"> </p> <p> - <b>Primary interest (keep it short):</b><br> + <b>Age regressed version (local ID)</b><br> + <input name="regressed" class="form-control" style="filter: invert(1) hue-rotate(180deg);" type="text" value="<?= $metadata["regressed"] ?? "" ?>"> + </p> + + <hr> + + <h3>Technical details</h3> + + <p> + <b>Primary interest (keep it short)</b><br> <input name="interest" class="form-control" style="filter: invert(1) hue-rotate(180deg);" type="text" value="<?= $metadata["interest"] ?? "" ?>"> </p> <p> - <b>Age regressed version (local ID):</b><br> - <input name="regressed" class="form-control" style="filter: invert(1) hue-rotate(180deg);" type="text" value="<?= $metadata["regressed"] ?? "" ?>"> + <b>Member code</b><br> + <input name="membc" class="form-control" style="filter: invert(1) hue-rotate(180deg);" type="text" value="<?= $metadata["code"] ?? "" ?>"> </p> + + <hr> + + <h3>Age information</h3> + <p> - <b>Birth date (use January 1<sup>st</sup> for none):</b><br> + <b>Birth date (use January 1<sup>st</sup> for none)</b><br> <input name="birth" class="form-control" style="filter: invert(1) hue-rotate(180deg);" type="date" value="<?= $metadata["birth"]["year"] ?? "" ?>-<?= $metadata["birth"]["date"] ?? "" ?>"> </p> <p> - <b>Age (for ponies with fixed age):</b><br> + <b>Age (for ponies with fixed age)</b><br> <input name="age" class="form-control" style="filter: invert(1) hue-rotate(180deg);" type="number" value="<?= $metadata["birth"]["age"] ?? "" ?>"> </p> - <p> - <b>Member code:</b><br> - <input name="membc" class="form-control" style="filter: invert(1) hue-rotate(180deg);" type="text" value="<?= $metadata["code"] ?? "" ?>"> - </p> + + <hr> + + <h3>Toggleable flags</h3> + + <?php + + $flags = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/flags.json"), true); + + foreach ($flags as $id => $name): if (!is_array($name) && !is_null($name)): ?> + <label style="margin-bottom:5px;"> + <input <?= $metadata[$id] ? "checked" : "" ?> class="form-check-input" type="checkbox" name="flags[<?= $id ?>]"> + <?= $name ?> + </label><br> + <?php else: foreach ($name as $id2 => $name2): ?> + <label style="margin-bottom:5px;"> + <input <?= $metadata[$id][$id2] ? "checked" : "" ?> class="form-check-input" type="checkbox" name="flags[<?= $id ?>][<?= $id2 ?>]"> + <?= $name2 ?> + </label><br> + <?php endforeach; endif; endforeach; ?> + + <hr> + <input name="submit" class="btn btn-outline-primary" value="Save and quit" type="submit"> </form> <?php else: ?> @@ -66,52 +164,4 @@ if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/metadata/" . $member <?php endif; ?> </div> -<div class="modal fade" id="bitset"> - <div class="modal-dialog modal-xl"> - <div class="modal-content"> - <div class="modal-header"> - <h4 class="modal-title"> - <img src="/assets/icons/bitset.svg" style="filter: invert(1); vertical-align: middle; height: 32px; margin-right: 10px;"> - <span style="vertical-align: middle;">Bitset editor</span> - </h4> - <button type="button" class="btn-close" data-bs-dismiss="modal"></button> - </div> - <div class="modal-body"> - <iframe src="/-/bitset?embed=<?= $metadata["bitset"] ?>"></iframe> - <script> - setInterval(() => { - try { - document.getElementById("bitset-text").innerText = document.getElementById("bitset-value").value = document.getElementsByTagName("iframe")[0].contentDocument.getElementById("output-dec").innerText; - } catch (e) {} - }) - </script> - </div> - </div> - </div> -</div> - -<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); - } - - iframe { - width: calc(100% + 2rem); - min-height: calc(100% + 2rem); - border-bottom-left-radius: .3rem; - border-bottom-right-radius: .3rem; - height: 60vh; - margin: -1rem -1rem calc(-1rem - 6px); - } -</style> - <?php require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/footer.inc'; ?>
\ No newline at end of file diff --git a/includes/pages.json b/includes/pages.json index 777351b..985a224 100644 --- a/includes/pages.json +++ b/includes/pages.json @@ -44,15 +44,6 @@ "admin": false, "rail": false }, - "bitset": { - "name": { - "en": "Bitset calculator", - "fr": "Bitset calculator" - }, - "short": "Bitset", - "admin": true, - "rail": true - }, "byfront": { "name": { "en": "Members by last fronted", diff --git a/includes/planner.inc b/includes/planner.inc index 003d3cc..1bc5143 100644 --- a/includes/planner.inc +++ b/includes/planner.inc @@ -13,6 +13,16 @@ global $_PROFILE; $cloudburst = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/planner/ynmuc.json"), true); $raindrops = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/planner/gdapd.json"), true); +function pacifier($id) { + $metadata = parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/metadata/" . $id . ".json"), true)); + + if ($metadata["pacifier"]) { + return "<img title='This pony likes to sleep with a pacifier.' data-bs-toggle='tooltip' src='/assets/logo/pacifier.png' style='margin-left:auto;float: right;opacity:.75;width:24px;height:24px;vertical-align: middle; filter: invert(1);'>"; + } + + return ""; +} + foreach ($cloudburst as $id => $day) { foreach ($day as $index => $fronter) { if (is_string($fronter)) { @@ -180,7 +190,7 @@ function day($display, $diff): void { if ($diff < 0) $disabled = true; else $dis <?php elseif ($member["name"] === "unknown"): ?> <a class="member-link" onclick="openEditFronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * $diff)) ?>')"><span class="member-link-inner"><img src="/assets/logo/newlogo.png" style="filter:grayscale(1);width:24px;"> <span class="member-link-text"><span class="merge-desktop" style="opacity:.75;">Other/unknown/fallback pony</span></span></span></a> <?php else: ?> - <a class="member-link" onclick="openEditFronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * $diff)) ?>')"><span class="member-link-inner"><img src="<?= getAsset($member["system"], $member["id"], "heads") ?>" style="width:24px;"> <span class="member-link-text"><?= !isset($dayCloudburst[$index][1]) ? $member["display_name"] ?? $member["name"] : getMiniName($member["display_name"] ?? $member["name"]) ?></span></span></a> + <a class="member-link" onclick="openEditFronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * $diff)) ?>')"><span class="member-link-inner"><img src="<?= getAsset($member["system"], $member["id"], "heads") ?>" style="width:24px;"> <span class="member-link-text"><?= !isset($dayCloudburst[$index][1]) ? $member["display_name"] ?? $member["name"] : getMiniName($member["display_name"] ?? $member["name"]) ?></span><?= $index === count($dayCloudburst) - 1 ? pacifier($member["id"]) : "" ?></span></a> <?php endif; ?> </td> <?php if (!isset($dayCloudburst[$index][1])): ?> @@ -197,7 +207,7 @@ function day($display, $diff): void { if ($diff < 0) $disabled = true; else $dis <?php elseif ($member["name"] === "unknown"): ?> <a class="member-link" onclick="openEditCofronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * $diff)) ?>')"><span class="member-link-inner"><img src="/assets/logo/newlogo.png" style="filter:grayscale(1);width:24px;"> <span class="member-link-text"><span class="merge-desktop" style="opacity:.75;">Other/unknown/fallback pony</span></span></span></a> <?php else: ?> - <a class="member-link" onclick="openEditCofronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * $diff)) ?>')"><span class="member-link-inner"><img src="<?= getAsset($member["system"], $member["id"], "heads") ?>" style="width:24px;"> <span class="member-link-text"><?= !isset($dayCloudburst[$index][1]) ? $member["display_name"] ?? $member["name"] : getMiniName($member["display_name"] ?? $member["name"]) ?></span></span></a> + <a class="member-link" onclick="openEditCofronter('cloudburst', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * $diff)) ?>')"><span class="member-link-inner"><img src="<?= getAsset($member["system"], $member["id"], "heads") ?>" style="width:24px;"> <span class="member-link-text"><?= !isset($dayCloudburst[$index][1]) ? $member["display_name"] ?? $member["name"] : getMiniName($member["display_name"] ?? $member["name"]) ?></span><?= $index === count($dayCloudburst) - 1 ? pacifier($member["id"]) : "" ?></span></a> <?php endif; ?> </td> <?php endif; ?> @@ -224,7 +234,7 @@ function day($display, $diff): void { if ($diff < 0) $disabled = true; else $dis <?php elseif ($member["name"] === "unknown"): ?> <a class="member-link" onclick="openEditFronter('raindrops', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * $diff)) ?>')"><span class="member-link-inner"><img src="/assets/logo/newlogo.png" style="filter:grayscale(1);width:24px;"> <span class="member-link-text"><span class="merge-desktop" style="opacity:.75;">Other/unknown/fallback pony</span></span></span></a> <?php else: ?> - <a class="member-link" onclick="openEditFronter('raindrops', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * $diff)) ?>')"><span class="member-link-inner"><img src="<?= getAsset($member["system"], $member["id"], "heads") ?>" style="width:24px;"> <span class="member-link-text"><?= !isset($dayRaindrops[$index][1]) ? $member["display_name"] ?? $member["name"] : getMiniName($member["display_name"] ?? $member["name"]) ?></span></span></a> + <a class="member-link" onclick="openEditFronter('raindrops', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * $diff)) ?>')"><span class="member-link-inner"><img src="<?= getAsset($member["system"], $member["id"], "heads") ?>" style="width:24px;"> <span class="member-link-text"><?= !isset($dayRaindrops[$index][1]) ? $member["display_name"] ?? $member["name"] : getMiniName($member["display_name"] ?? $member["name"]) ?></span><?= $index === count($dayRaindrops) - 1 ? pacifier($member["id"]) : "" ?></span></a> <?php endif; ?> </td> <?php if (!isset($dayRaindrops[$index][1])): ?> @@ -241,7 +251,7 @@ function day($display, $diff): void { if ($diff < 0) $disabled = true; else $dis <?php elseif ($member["name"] === "unknown"): ?> <a class="member-link" onclick="openEditCofronter('raindrops', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * $diff)) ?>')"><span class="member-link-inner"><img src="/assets/logo/newlogo.png" style="filter:grayscale(1);width:24px;"> <span class="member-link-text"><span class="merge-desktop" style="opacity:.75;">Other/unknown/fallback pony</span></span></span></a> <?php else: ?> - <a class="member-link" onclick="openEditCofronter('raindrops', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * $diff)) ?>')"><span class="member-link-inner"><img src="<?= getAsset($member["system"], $member["id"], "heads") ?>" style="width:24px;"> <span class="member-link-text"><?= !isset($dayRaindrops[$index][1]) ? $member["display_name"] ?? $member["name"] : getMiniName($member["display_name"] ?? $member["name"]) ?></span></span></a> + <a class="member-link" onclick="openEditCofronter('raindrops', <?= $index ?>, '<?= date('Y-m-d', time() + (86400 * $diff)) ?>')"><span class="member-link-inner"><img src="<?= getAsset($member["system"], $member["id"], "heads") ?>" style="width:24px;"> <span class="member-link-text"><?= !isset($dayRaindrops[$index][1]) ? $member["display_name"] ?? $member["name"] : getMiniName($member["display_name"] ?? $member["name"]) ?></span><?= $index === count($dayRaindrops) - 1 ? pacifier($member["id"]) : "" ?></span></a> <?php endif; ?> </td> <?php endif; ?> @@ -545,7 +555,7 @@ function day($display, $diff): void { if ($diff < 0) $disabled = true; else $dis } function openEditCofronter(system, id, date) { - let display = formatDate(offset).display; + let display = formatDate(date).display; window.selectedFronting = { system: system === "cloudburst" ? "ynmuc" : "gdapd", diff --git a/includes/refresh.php b/includes/refresh.php index bbf8b01..ecf724a 100644 --- a/includes/refresh.php +++ b/includes/refresh.php @@ -243,8 +243,11 @@ foreach (json_decode(file_get_contents("./data/ynmuc/members.json"), true) as $m echo("Backing up...\n"); -if (date('i') === "00" || date('i') === "01" || date('i') === "02" || date('i') === "03" || date('i') === "04") { +$lastBackup = (int)trim(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/backup.txt")); + +if (time() - $lastBackup >= 3600) { require_once "./backup.inc"; + file_put_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/backup.txt", time()); echo("Backup completed\n"); } else { echo("Backup skipped\n"); |