diff options
author | Minteck <contact@minteck.org> | 2022-10-10 20:51:39 +0200 |
---|---|---|
committer | Minteck <contact@minteck.org> | 2022-10-10 20:51:39 +0200 |
commit | 108525534c28013cfe1897c30e4565f9893f3766 (patch) | |
tree | dd3e5132971f96ab5f05e7f3f8f6dbbf379a19bd /pages/edit.inc | |
parent | 2162eaa06f7e4764eb3dcfe130ec2c711d0c62ab (diff) | |
download | pluralconnect-108525534c28013cfe1897c30e4565f9893f3766.tar.gz pluralconnect-108525534c28013cfe1897c30e4565f9893f3766.tar.bz2 pluralconnect-108525534c28013cfe1897c30e4565f9893f3766.zip |
Update
Diffstat (limited to 'pages/edit.inc')
-rw-r--r-- | pages/edit.inc | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/pages/edit.inc b/pages/edit.inc new file mode 100644 index 0000000..8be6730 --- /dev/null +++ b/pages/edit.inc @@ -0,0 +1,68 @@ +<?php + +function getSubsystemByID(string $id) { + global $subsystems; + $subsystem = null; + + foreach ($subsystems as $ss) { + if ($ss["source"] === $id) { + $subsystem = $ss; + } + } + + return $subsystem; +} + +require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/init.inc"; global $title; global $isLoggedIn; + +if (!isset($_GET['_']) || trim($_GET['_']) === "") header("Location: /?error=Invalid request") and die(); + +$parts = explode("/", $_GET['_']); +array_shift($parts); +array_shift($parts); +$system = $parts[0]; +$member = ($parts[1] ?? null) === "" ? null : $parts[1]; + +if ($system !== "cloudburst" && $system !== "raindrops") header("Location: /?error=Invalid system name: " . $system) and die(); +$systemCommonName = $system === "cloudburst" ? "Cloudburst System" : "Raindrops System"; +$systemID = $system === "cloudburst" ? "ynmuc" : "gdapd"; + +$subsystems = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/subsystems/$systemID.json"), true) ?? []; + +if ($member === null) { + require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/sysedit.inc'; +} else { + $isSubsystem = false; + $members = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/" . $systemID . "/members.json"), true); + $memberData = null; + $memberCommonName = null; + $memberID = null; + + foreach ($members as $m) { + if ($m['name'] === $member) { + $memberData = $m; + $memberCommonName = $m['display_name'] ?? $m['name']; + $memberID = $m['id']; + } + } + + if ($memberData === null) { + if (in_array($member, array_map(function ($i) { + return $i["source"]; + }, $subsystems))) { + $isSubsystem = true; + $subsystemID = $member; + $subsystem = getSubsystemByID($subsystemID); + $subsystemData = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/subsystems/$systemID-$subsystem[source].json"), true); + $subsystemCommonName = $subsystemData["name"] ?? $subsystemID; + + require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/subsysedit.inc'; + } else { + header("Location: /?error=System member or subsystem not found: " . $subsystemID) and die(); + } + } + + require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/edit.inc'; +} + +exit;
\ No newline at end of file |