This commit is contained in:
2024-04-26 01:17:49 +02:00
parent 0fca1b000b
commit 20ca96ba05
5 changed files with 61 additions and 9 deletions

View File

@@ -1,6 +1,7 @@
<?php
require_once "lib/upload.php";
require_once "lib/account.php";
function addMeme(string $title, string $memeText, int $imageID): array
{
@@ -9,7 +10,7 @@ function addMeme(string $title, string $memeText, int $imageID): array
if (isLoggedIn() && fileExists($imageID, false) && !empty($title) && !empty($memeText) && !empty($imageID) && $imageID > 0) {
$stmtMemeAdd = $mysqli->prepare('INSERT INTO Memes (AuthorID, Title, TextContent, FileID) VALUES (?, ?, ?, ?)');
$stmtMemeAdd->bind_param('issi', $_SESSION['ID'], htmlspecialchars($title), htmlspecialchars($memeText), $imageID);
if($stmtMemeAdd->execute() && $stmtMemeAdd->affected_rows > 0) {
if ($stmtMemeAdd->execute() && $stmtMemeAdd->affected_rows > 0) {
$output["Status"] = "Success";
$output["Meme"] = "Funny";
}
@@ -17,7 +18,7 @@ function addMeme(string $title, string $memeText, int $imageID): array
return $output;
}
function renderMeme(string $title, string $textContent, string $createdAt, string $filePath, string $userNickname): string
function renderMeme(int $id, string $title, string $textContent, string $createdAt, string $filePath, string $userNickname): string
{
global $routerConfig;
$meme_template = file_get_contents($routerConfig['template_dir'] . "meme.html");
@@ -26,6 +27,8 @@ function renderMeme(string $title, string $textContent, string $createdAt, strin
$meme_out = str_replace('__TEMPLATE_MEME_AUTHOR__', htmlspecialchars($userNickname), $meme_out);
$meme_out = str_replace('__TEMPLATE_MEME_DATE__', htmlspecialchars($createdAt), $meme_out);
$meme_out = str_replace('__TEMPLATE_MEME_IMAGE__', '/' . htmlspecialchars($filePath), $meme_out);
$meme_out = str_replace('__TEMPLATE_MEME_DELETE_BUTTON__', isModerator() ? "<button onclick=\"deleteMeme($id);\"><i class='ri-delete-bin-line'></i></button>" : '', $meme_out);
return str_replace('__TEMPLATE_MEME_TEXT__', htmlspecialchars($textContent), $meme_out);
}
@@ -54,7 +57,7 @@ function renderMemeGallery(): string
$memes_out = '';
while ($stmtlist->fetch()) {
if (str_starts_with($fileType, 'image')) {
$memes_out .= renderMeme($title, $textContent, $createdAt, $filePath, $userNickname);
$memes_out .= renderMeme($memeID, $title, $textContent, $createdAt, $filePath, $userNickname);
}
}
$meme_gallery_out = str_replace('__TEMPLATE_MEMES_HERE__', $memes_out, $meme_gallery_template);
@@ -62,4 +65,25 @@ function renderMemeGallery(): string
// Close the statement
$stmtlist->close();
return $meme_gallery_out;
}
function deleteMeme(int $memeId): string
{
global $mysqli;
$out = ["Status" => "Fail"];
if (isLoggedIn()) {
$query = !isAdmin() ? 'DELETE FROM Memes WHERE ID = ? AND AuthorID = ?' : 'DELETE FROM Memes WHERE ID = ?';
$stmtDelete = $mysqli->prepare($query);
if (!isAdmin()) {
$stmtDelete->bind_param('ii', $memeId, $_SESSION['id']);
} else {
$stmtDelete->bind_param('i', $memeId);
}
$stmtDelete->execute();
$stmtDelete->fetch();
if ($stmtDelete->affected_rows > 0) {
$out['Status'] = 'Success';
}
}
return $out;
}

View File

@@ -241,11 +241,23 @@ function getImageURL(int $imageFileID) :string
function deleteFile(int $fileID) :string
{
global $mysqli;
$out = ["Status" => "Fail"];
$file_location = fileExists($fileID, false);
if ($file_location){
if(unlink($file_location)) {
$out['Status'] = 'Success';
if(isLoggedIn()) {
$file_location = fileExists($fileID, !isAdmin());
$query = !isAdmin() ? 'DELETE FROM Files WHERE ID = ? AND UploadedBy = ?' : 'DELETE FROM Files WHERE ID = ?';
$stmtDelete = $mysqli->prepare($query);
if (!isAdmin()) {
$stmtDelete->bind_param('ii', $fileID, $_SESSION['id']);
} else {
$stmtDelete->bind_param('i', $fileID);
}
$stmtDelete->execute();
$stmtDelete->fetch();
if ($file_location) {
if (unlink($file_location) && $stmtDelete->affected_rows > 0) {
$out['Status'] = 'Success';
}
}
}
return $out;