diff options
Diffstat (limited to 'includes/external/next/index.php')
-rw-r--r-- | includes/external/next/index.php | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/includes/external/next/index.php b/includes/external/next/index.php new file mode 100644 index 0000000..5e96fb7 --- /dev/null +++ b/includes/external/next/index.php @@ -0,0 +1,115 @@ +<?php + +$_SERVER['DOCUMENT_ROOT'] = "../../.."; + +$ntfy = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/app.json"), true)["ntfy"]; +require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/util/functions.inc"; +$pairs = []; + +$pairs2 = [ + ["lqolg"], + ["tfbob"], + ["zajrk"], + ["ktrdb"], + ["hpwyq"], + ["qbzxm"], + ["qraku"], + ["mhnqy"], + ["ztfjz"], + ["ufadt"], + ["ckqsw"] +]; + +$special = ["ckqsw"]; + +// -------------------- + +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)) . ")"; +} + +$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"; +}))); + +$requested = []; +foreach ([...$pairs, ...$pairs2] as $pair) { + array_push($requested, ...$pair); +} + +$fronters = array_map(function ($i) { + return $i["id"]; +}, json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/gdapd/fronters.json"), true)["members"]); + +$requested = array_values(array_filter(array_reverse(array_unique($requested)), function ($i) use ($fronters) { + return !in_array($i, $fronters); +})); + +$i = 0; +$list = [$requested[$i]]; +while (in_array($list[count($list) - 1], $special)) { + $i++; + $list[] = $requested[$i]; +} + +if (count($list) > 1) { + $str = implode(" or ", array_map(function ($i) { + return (getMemberWithoutSystem($i)["display_name"] ?? getMemberWithoutSystem($i)["name"]); + }, $list)) . " is fronting today."; +} elseif (count($list) > 0) { + $str = (getMemberWithoutSystem($list[0])["display_name"] ?? getMemberWithoutSystem($list[0])["name"]) . " is fronting today."; +} else { + $str = "We couldn't tell who will front today, sorry."; +} + +$context = stream_context_create([ + 'http' => [ + 'method' => 'POST', + 'header' => + "Content-Type: text/plain\r\n" . + "Title: " . formatPonypush("🎠Pony fronting today") . "\r\n" . + "Priority: high\r\n" . + "Tags: schedule\r\n" . + "Authorization: Basic " . base64_encode($ntfy["user"] . ":" . $ntfy["password"]), + 'content' => formatPonypush($str) + ] +]); + +file_get_contents('https://' . $ntfy["server"] . '/main', false, $context); |