diff --git a/assets/style.css b/assets/style.css index d784e47..7cdae1d 100644 --- a/assets/style.css +++ b/assets/style.css @@ -270,7 +270,7 @@ ul.navpage_list { display: flex !important; max-height: 200px !important; width: inherit; - box-sizing: border-box; + box-sizing: content-box; transition-delay: .1s; } .navsite_item:not(:hover) .navpage_list { diff --git a/endpoints/upload.php b/endpoints/upload.php index cf2d47a..4a44a2a 100644 --- a/endpoints/upload.php +++ b/endpoints/upload.php @@ -8,7 +8,10 @@ function endpoint($endpoint_data): array return match ($endpoint_data["action"]) { "getMyFiles" => listFiles(), "getAllFiles" => listFiles(false), - "UploadFiles" => parseIncomingFiles(), + "uploadFiles" => parseIncomingFiles(), + "addToGroup" => addToGroup($endpoint_data['group_id'], $endpoint_data['file_id']), + "myFileExists" => fileExists($endpoint_data['file_id'], ), + "FileExists" => fileExists($endpoint_data['file_id'], false), default => ["Status" => "Fail", "message" => "Invalid action"], }; } \ No newline at end of file diff --git a/lib/endpoint.php b/lib/endpoint.php index c9c1b30..c2eb651 100644 --- a/lib/endpoint.php +++ b/lib/endpoint.php @@ -24,11 +24,24 @@ function getEndpoint($endpoint_name): string $endpoint_file = $routerConfig["endpoint_dir"] . $endpoint_name . ".php"; if (file_exists($endpoint_file)){ - $output = runEndpoint($endpoint_file); + $output_tmp = runEndpoint($endpoint_file); + $output["Endpoint"] = $endpoint_name; + switch (gettype($output)) { + case 'string': + $output = $output_tmp; + $output['Status'] = 'Success'; + break; + case 'bool': + $output['Status'] = $output ? 'Success' : 'Fail'; + break; + default: + $output['Status'] = 'Fail'; + $output["Error"] = "Endpoint error"; + http_response_code(500); + } } else{ $output["Error"] = "Not found"; - $output["Endpoint"] = $endpoint_name; http_response_code(404); } diff --git a/lib/meme.php b/lib/meme.php new file mode 100644 index 0000000..f74a4b4 --- /dev/null +++ b/lib/meme.php @@ -0,0 +1,18 @@ +prepare('INSERT INTO Memes (AuthorID, TextContent, FileID) VALUES (?, ?, ?)'); + $stmtMemeAdd->bind_param('isi', $_SESSION['ID'], htmlspecialchars($memeText), $imageID); + $stmtMemeAdd->execute(); + return true; + } + return false; +} + +function renderMemeGallery() :string +{ + return ""; +} \ No newline at end of file diff --git a/lib/upload.php b/lib/upload.php index df125a4..f18aa8b 100644 --- a/lib/upload.php +++ b/lib/upload.php @@ -43,7 +43,7 @@ function getIncomingFiles(): array return $files3; } -function saveUploadedFileInDatabase($filePath, $fileType):bool +function saveUploadedFileInDatabase($filePath, $fileType): bool { global $mysqli; $stmt = $mysqli->prepare("INSERT INTO Files (Path, Type, UploadedBy, UploadedAt) VALUES (?, ?, ?, NOW())"); @@ -91,20 +91,20 @@ function doImageUpload($inFile, $outFile): bool } } -function listFiles($onlyMine = true):array +function listFiles($onlyMine = true): array { $output = ["Status" => "Fail"]; require_once "lib/account.php"; - if(($onlyMine && isLoggedIn()) || (!$onlyMine && isModerator())) { + if (($onlyMine && isLoggedIn()) || (!$onlyMine && isModerator())) { global $mysqli; $query = "SELECT ID, Path, Type, UploadedAt, UploadedBy FROM Files"; - if($onlyMine){ + if ($onlyMine) { $query .= " WHERE UploadedBy = ?"; } $stmt = $mysqli->prepare($query); - if($onlyMine) { + if ($onlyMine) { $stmt->bind_param("i", $_SESSION["ID"]); } @@ -164,7 +164,7 @@ function parseIncomingFiles(): array } } $output = ["Status" => "Fail"]; - if($success){ + if ($success) { $output["Status"] = "Success"; } return $output; @@ -180,10 +180,52 @@ function getUploadPath($type = "unknown", $filename = "hehe"): string 'image' => 'webp', default => 'dummy', }; - if($extension != "dummy") { + if ($extension != "dummy") { return "uploads/$type/$id/$date/$filename.$extension"; - } - else { + } else { return ""; } +} + +function fileExists(int $fileId, bool $onlyMine = true): bool +{ + if(!$fileId) { + return false; + } + global $mysqli; + if (!$onlyMine && !isAdmin()) { + $onlyMine = true; + } + $query = 'SELECT ID FROM Files WHERE ID = ?' . $onlyMine ? ' AND UploadedBy = ?' : ''; + $stmtfileexists = $mysqli->prepare($query); + if ($onlyMine) { + $stmtfileexists->bind_param('ii', $fileId, $_SESSION['id']); + } else { + $stmtfileexists->bind_param('i', $fileId); + } + $stmtfileexists->execute(); + return $stmtfileexists->affected_rows > 0; +} + +function addToGroup(int $groupId, int $fileId): bool +{ + $output = ["Status" => "Fail"]; + if (!$groupId || !$fileId) { + return $output; + } + global $mysqli; + $stmtcheck = $mysqli->prepare('SELECT ID FROM FileGroups WHERE CreatorID != ? AND ID = ?'); + $stmtcheck->bind_param('ii', $_SESSION['id'], $groupId); + $stmtcheck->execute(); + if ($stmtcheck->affected_rows == 0) { + if (fileExists($fileId, false)) { + $stmtadd = $mysqli->prepare('INSERT INTO FileGroups (FileID, CreatorID, ID) VALUES (?, ?, ?)'); + $stmtadd->bind_param('iii', $fileId, $_SESSION['id'], $groupId); + $stmtadd->execute(); + if ($stmtadd->affected_rows > 0) { + $output["Status"] = "Success"; + } + } + } + return $output; } \ No newline at end of file