diff options
author | RaindropsSys <raindrops@equestria.dev> | 2023-12-27 00:00:30 +0100 |
---|---|---|
committer | RaindropsSys <raindrops@equestria.dev> | 2023-12-27 00:00:30 +0100 |
commit | d189daf93ac17a151f093d416f8d61bdb9efe8c5 (patch) | |
tree | 2a52c92db93d352b7a2fc5e6ad5584ca143909c5 /pages | |
parent | 5f18267c7ebbbb55288d793e84402f5ee86fcafd (diff) | |
download | pluralconnect-d189daf93ac17a151f093d416f8d61bdb9efe8c5.tar.gz pluralconnect-d189daf93ac17a151f093d416f8d61bdb9efe8c5.tar.bz2 pluralconnect-d189daf93ac17a151f093d416f8d61bdb9efe8c5.zip |
Updated 2 files and added pages/schedule.inc (automated)
Diffstat (limited to 'pages')
-rw-r--r-- | pages/schedule.inc | 248 |
1 files changed, 248 insertions, 0 deletions
diff --git a/pages/schedule.inc b/pages/schedule.inc new file mode 100644 index 0000000..f61d43b --- /dev/null +++ b/pages/schedule.inc @@ -0,0 +1,248 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/init.inc"; global $title; global $isLoggedIn; global $lang; global $pages; +require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/components/header.inc'; +global $app; global $_PROFILE; + +$pairs = [ + ["rirgf", "tbimg"], + ["yhbrc", "qaenj"], + ["rpavp", "khsbb"] +]; + +$pairs2 = [ + ["lqolg"], + ["tfbob"], + ["zajrk"], + ["ktrdb"], + ["hpwyq"], + ["qbzxm"], + ["qraku"], + ["mhnqy"], + ["ztfjz"], + ["ufadt"] +]; + +// -------------------- + +function getRelativeDay($offset) { + if ($offset === 0) return "Today"; + if ($offset === 1) return "Tomorrow"; + return "On " . date('l', time() + ($offset * 86400)) . " (in $offset days, " . date('j M', time() + ($offset * 86400)) . ")"; +} + +$ignored = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/schedule/ignored.json"), true); +$locked = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/schedule/locked.json"), true); + +$members = array_map(function ($i) { + $system = "gdapd"; + $i["_lastFronted"] = -1; + $id = $i["id"]; + $memberData = $i; + + $fronters = array_map(function ($item) { + return $item["id"]; + }, json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$system/fronters.json"), true)["members"]); + + if (in_array($id, $fronters)) { + $i["_lastFronted"] = time(); + } else { + $switches = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$system/switches.json"), true); + + $thisMember = array_filter($switches, function ($item) use ($memberData) { + return in_array($memberData["id"], $item["members"]); + }); + + $thisMember = array_values($thisMember); + $frontingEnd = null; + + if (count($thisMember) > 0) { + $thisIndex = array_search($thisMember[0], $switches); + + $frontingStart = $thisMember[0]; + $frontingEnd = $switches[$thisIndex - 1]; + } + + if ($frontingEnd !== null && isset($frontingStart)) { + $i["_lastFronted"] = strtotime($frontingEnd["timestamp"]); + } + } + + return $i; +}, array_values(array_filter(scoreOrderGlobal(), function ($i) { + return $i["_system"] === "gdapd"; +}))); + +if (isset($_GET["ignore"]) && isset($_GET["day"])) { + if ($_GET["ignore"] === "1") { + if (preg_match("/^\d{4}-\d{2}-\d{2}$/m", $_GET["day"]) === false) { + header("Location: /-/schedule"); + die(); + } + + if (!in_array($_GET["day"], $ignored)) { + $ignored[] = $_GET["day"]; + } + + file_put_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/schedule/ignored.json", json_encode($ignored)); + header("Location: /-/schedule"); + die(); + } elseif ($_GET["ignore"] === "0") { + if (preg_match("/^\d{4}-\d{2}-\d{2}$/m", $_GET["day"]) === false) { + header("Location: /-/schedule"); + die(); + } + + if (in_array($_GET["day"], $ignored)) { + unset($ignored[array_search($_GET["day"], $ignored)]); + } + + file_put_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/schedule/ignored.json", json_encode($ignored)); + header("Location: /-/schedule"); + die(); + } + + die(); +} + + +?> + +<style> + #main a { + color: inherit; + text-decoration: inherit; + } + + #main a:hover { + opacity: .75; + } + + #main a:active, #main a:focus { + opacity: .75; + } +</style> + +<br> +<div class="container" id="main"> + <details> + <summary style="list-style: none; outline: none; cursor: text;"> + <h2>Raindrops System schedule</h2> + </summary> + <ul> + <?php $requested = []; foreach ([...$pairs, ...$pairs2] as $pair) { + array_push($requested, ...$pair); + } $requested = array_unique($requested); foreach ($requested as $id) { + if (getMemberWithoutSystem($id) !== null) { + echo("<li>" . (getMemberWithoutSystem($id)["display_name"] ?? getMemberWithoutSystem($id)["name"]) . "</li>"); + } else { + echo("<li>NULL (" . $id . ")</li>"); + } + } ?> + </ul> + <ul> + <?php usort($pairs, function ($a, $b) use ($members) { + $times = []; + + foreach ($a as $id) { + if (getLastFronted($members, $id) > 0) $times[] = getLastFronted($members, $id); + } + + $timeA = time() - min($times); + $times = []; + + foreach ($b as $id) { + if (getLastFronted($members, $id) > 0) $times[] = getLastFronted($members, $id); + } + + $timeB = time() - min($times); + + if ($timeA < 5 || $timeB < 5) { + return -INF; + } else { + return $timeB - $timeA; + } + }); $pairsM = array_values($pairs); foreach ($pairsM as $pair): $times = []; ?> + <li> + <?php foreach ($pair as $id): ?> + <img style="width: 24px;" src="<?= getAsset("gdapd", $id) ?>"> <?= getMemberWithoutSystem($id)["display_name"] ?> + <?php $times[] = getLastFronted($members, $id); endforeach; ?> + (<?= time() - max($times) ?>) + </li> + <?php endforeach; ?> + </ul> + <ul> + <?php usort($pairs2, function ($a, $b) use ($members) { + $times = []; + + foreach ($a as $id) { + if (getLastFronted($members, $id) > 0) $times[] = getLastFronted($members, $id); + } + + $timeA = time() - min($times); + $times = []; + + foreach ($b as $id) { + if (getLastFronted($members, $id) > 0) $times[] = getLastFronted($members, $id); + } + + $timeB = time() - min($times); + + if ($timeA < 5 || $timeB < 5) { + return -INF; + } else { + return $timeB - $timeA; + } + }); $pairsM = array_values($pairs2); foreach ($pairsM as $pair): $times = []; ?> + <li> + <?php foreach ($pair as $id): ?> + <img style="width: 24px;" src="<?= getAsset("gdapd", $id) ?>"> <?= getMemberWithoutSystem($id)["display_name"] ?> + <?php $times[] = getLastFronted($members, $id); endforeach; ?> + (<?= time() - max($times) ?>) + </li> + <?php endforeach; ?> + </ul> + </details> + + <?php + + $pairs = array_values($pairs); + $pairs2 = array_values($pairs2); + + $i = 0; + $i1 = 0; + $i2 = 0; + + while ($i < 7): ?> + <h5><?= getRelativeDay($i) ?></h5> + <div style="display: grid; grid-template-columns: max-content 1fr; grid-column-gap: 10px;"> + <div> + <b>During the day:</b> + </div> + <div> + <?php $j = 0; foreach ($pairs2[$i2] as $id): ?> + <a href="/<?= getMemberWithoutSystem($id)["name"] ?>"><img style="width: 24px;" src="<?= getAsset("gdapd", $id, "heads") ?>"> <?= getMemberWithoutSystem($id)["display_name"] ?></a> + <?php if (isset($pairs2[$i2][$j + 1])): ?>and<?php endif; ?> + <?php $j++; endforeach; $i2++; ?> + </div> + <div> + <b>In the evening:</b> + </div> + <div> + <?php if ((int)date('j', time() + ($i * 86400)) % 2 === 0): $j = 0; foreach ($pairs[$i1] as $id): ?> + <a href="/<?= getMemberWithoutSystem($id)["name"] ?>"><img style="width: 24px;" src="<?= getAsset("gdapd", $id, "heads") ?>"> <?= getMemberWithoutSystem($id)["display_name"] ?></a> + <?php if (isset($pairs[$i1][$j + 1])): ?>and<?php endif; ?> + <?php $j++; endforeach; $i1++; else: echo("<span class='text-muted'>Nopony on this day</span>"); endif; ?> + </div> + </div> + + <?php if ($i + 1 < 7): ?><hr><?php endif; ?> + <?php $i++; + + if (!isset($pairs2[$i2])) $i2 = 0; + if (!isset($pairs[$i1])) $i1 = 0; + + endwhile; ?> +</div> + +<?php require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/components/footer.inc'; ?> |