diff options
Diffstat (limited to 'pages/api/fronter.php')
-rw-r--r-- | pages/api/fronter.php | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/pages/api/fronter.php b/pages/api/fronter.php new file mode 100644 index 0000000..51ee4ee --- /dev/null +++ b/pages/api/fronter.php @@ -0,0 +1,113 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.inc"; global $isLoggedIn; global $isLowerLoggedIn; +if (!$isLoggedIn || $isLowerLoggedIn) { + header("Location: /-/login"); + die(); +} + +$system = $_GET['s'] ?? null; +$member = $_GET['m'] ?? null; +$index = (int)$_GET['i'] ?? null; +$type = $_GET['t'] ?? null; +$date = $_GET['d'] ?? null; + +if (!isset($system) || trim($system) === "" || strlen($system) !== 5 || !preg_match("/[a-z]/i", $system) || ($system !== "gdapd" && $system !== "ynmuc")) + peh_error("System not found", 404); + +if (!isset($type) || trim($type) === "") + peh_error("Type not found", 404); + +if (!isset($date) || trim($date) === "" || strlen($date) !== 10 || !preg_match("/[\d-]/i", $date)) + peh_error("Date not found", 404); + +$list = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/planner/$system.json"), true); + +function moveElement(&$array, $a, $b) { + $out = array_splice($array, $a, 1); + array_splice($array, $b, 0, $out); +} + +switch ($type) { + case "add": + if (!isset($member) || trim($member) === "" || strlen($member) !== 5 || !preg_match("/[a-z]/i", $member)) + if ($member !== null && $member !== "null") peh_error("System member not found", 404); + + if (!isset($list[$date])) $list[$date] = []; + $list[$date][] = [$member, null]; + break; + + case "cofront": + if (!isset($index) || trim($index) === "" || is_integer($index)) + if ($index !== null && $index !== "null") peh_error("Invalid index", 400); + + $day = $list[$date]; + + if (!isset($day[$index])) + if ($index !== null && $index !== "null") peh_error("Index not found", 404); + + if (!isset($member) || trim($member) === "" || strlen($member) !== 5 || !preg_match("/[a-z]/i", $member)) + if ($member !== null && $member !== "null") peh_error("System member not found", 404); + + $list[$date][$index][1] = $member; + break; + + case "delete": + if (!isset($index) || trim($index) === "" || is_integer($index)) + if ($index !== null && $index !== "null") peh_error("Invalid index", 400); + + $day = $list[$date]; + + if (!isset($day[$index])) + if ($index !== null && $index !== "null") peh_error("Index not found", 404); + + unset($day[$index]); + $list[$date] = array_values($day); + + break; + + case "codelete": + if (!isset($index) || trim($index) === "" || is_integer($index)) + if ($index !== null && $index !== "null") peh_error("Invalid index", 400); + + $day = $list[$date]; + + if (!isset($day[$index])) + if ($index !== null && $index !== "null") peh_error("Index not found", 404); + + $list[$date][$index][1] = null; + + break; + + case "down": + if (!isset($index) || trim($index) === "" || is_integer($index)) + if ($index !== null && $index !== "null") peh_error("Invalid index", 400); + + if (!isset($day[$index])) + if ($index !== null && $index !== "null") peh_error("Index not found", 404); + + $day = $list[$date]; + moveElement($list[$date], $index, $index + 1 < count($list[$date]) ? $index + 1 : $index); + + break; + + case "up": + if (!isset($index) || trim($index) === "" || is_integer($index)) + if ($index !== null && $index !== "null") peh_error("Invalid index", 400); + + if (!isset($day[$index])) + if ($index !== null && $index !== "null") peh_error("Index not found", 404); + + $day = $list[$date]; + moveElement($list[$date], $index, $index - 1 > -1 ? $index - 1 : $index); + + break; + + default: + peh_error("Invalid type name", 400); + break; +} + +file_put_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/planner/$system.json", json_encode($list)); + +die();
\ No newline at end of file |