summaryrefslogtreecommitdiff
path: root/includes/external/next/index.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/external/next/index.php')
-rw-r--r--includes/external/next/index.php115
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);