summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaindropsSys <raindrops@equestria.dev>2023-12-27 00:00:30 +0100
committerRaindropsSys <raindrops@equestria.dev>2023-12-27 00:00:30 +0100
commitd189daf93ac17a151f093d416f8d61bdb9efe8c5 (patch)
tree2a52c92db93d352b7a2fc5e6ad5584ca143909c5
parent5f18267c7ebbbb55288d793e84402f5ee86fcafd (diff)
downloadpluralconnect-d189daf93ac17a151f093d416f8d61bdb9efe8c5.tar.gz
pluralconnect-d189daf93ac17a151f093d416f8d61bdb9efe8c5.tar.bz2
pluralconnect-d189daf93ac17a151f093d416f8d61bdb9efe8c5.zip
Updated 2 files and added pages/schedule.inc (automated)
-rw-r--r--includes/external/signal/index.js1
-rw-r--r--includes/pages.json4
-rw-r--r--pages/schedule.inc248
3 files changed, 251 insertions, 2 deletions
diff --git a/includes/external/signal/index.js b/includes/external/signal/index.js
index 8bb6c05..7531fb5 100644
--- a/includes/external/signal/index.js
+++ b/includes/external/signal/index.js
@@ -60,6 +60,7 @@ const child_process = require("child_process");
fs.writeFileSync("/tmp/chm-" + user + "-pfp-final", pfp);
child_process.execFileSync("signal-cli", [ "-a", number, "updateProfile", "--given-name", name, "--family-name", "", "--avatar", "/tmp/chm-" + user + "-pfp-final" ]);
+ child_process.execFileSync("signal-cli", [ "-a", number, "updateAccount", "--device-name", "Ponycule to Signal integration (v" + new Date().toISOString().split("T")[0].replaceAll("-", ".") + ")" ]);
child_process.execFileSync("signal-cli", [ "-a", number, "sendSyncRequest" ]);
fs.unlinkSync("/tmp/chm-" + user + "-pfp-final");
})(); \ No newline at end of file
diff --git a/includes/pages.json b/includes/pages.json
index 75dfdd6..09c5fe2 100644
--- a/includes/pages.json
+++ b/includes/pages.json
@@ -76,9 +76,9 @@
"admin": true,
"limited": true
},
- "schedules": {
+ "schedule": {
"name": {
- "en": "Schedules"
+ "en": "Raindrops System schedule"
},
"admin": true,
"limited": true
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'; ?>