diff --git a/database/deleteAccountProfileMessage.php b/database/deleteAccountProfileMessage.php new file mode 100644 index 0000000..8f3a6ac --- /dev/null +++ b/database/deleteAccountProfileMessage.php @@ -0,0 +1,38 @@ +prepare("SELECT * FROM users WHERE token = ? AND username = ?"); +$stmt->bind_param("ss", $token, $username); +$stmt->execute(); +$result = $stmt->get_result(); +$row = $result->fetch_assoc(); +if (!$row) { + echo encrypt(json_encode(["success" => false, "message" => 'User info not found'])); + exit; +} +$stmt->close(); + +$user_id = $row["id"]; +$time = time(); + +$stmt = $conn->prepare("UPDATE userposts SET deleted_at = ? WHERE id = ? AND userId = ? AND deleted_at = 0"); +$stmt->bind_param("iii", $time, $targetId, $user_id); +$stmt->execute(); + +$success = $stmt->affected_rows > 0; +$stmt->close(); + +echo encrypt(json_encode(["success" => $success])); + +$conn->close(); \ No newline at end of file diff --git a/database/getAccountProfileMessages.php b/database/getAccountProfileMessages.php new file mode 100644 index 0000000..5b0362c --- /dev/null +++ b/database/getAccountProfileMessages.php @@ -0,0 +1,22 @@ +prepare(" + SELECT p.id, p.content, p.timestamp, p.likes, u.id as userId + FROM userposts p + JOIN users u ON p.userId = u.id + WHERE u.banned = 0 AND p.deleted_at = 0 + ORDER BY p.id DESC +"); +$stmt->execute(); +$result = $stmt->get_result(); + +echo encrypt(json_encode(array_map(fn($row) => ['id' => $row['id'], 'userId' => $row['userId'], 'content' => $row['content'], 'timestamp' => genTimestamp($row['timestamp']) . " ago", 'likes' => $row['likes']], $result->fetch_all(MYSQLI_ASSOC)))); + +$conn->close(); \ No newline at end of file diff --git a/database/uploadAccountProfileMessage.php b/database/uploadAccountProfileMessage.php new file mode 100644 index 0000000..b2cc970 --- /dev/null +++ b/database/uploadAccountProfileMessage.php @@ -0,0 +1,36 @@ +\/\?\\\\|`~]+$/', $request_content)) { + exitWithMessage(json_encode(["success" => false])); +} + +$conn = newConnection(); + +$stmt = $conn->prepare("SELECT * FROM users WHERE token = ? AND username = ?"); +$stmt->bind_param("ss", $token, $username); +$stmt->execute(); +$result = $stmt->get_result(); +$row = $result->fetch_assoc(); +if (!$row) exitWithMessage(json_encode(["success" => false])); +$stmt->close(); + +$id = $row["id"]; +$content = base64_encode($request_content); +$time = time(); + +$stmt = $conn->prepare("INSERT INTO userposts (userId, content, timestamp) VALUES (?, ?, ?)"); +$stmt->bind_param("isi", $id, $content, $time); +$stmt->execute(); +$stmt->close(); + +echo encrypt(json_encode(["success" => true])); + +$conn->close(); \ No newline at end of file diff --git a/database/voteAccountProfileMessage.php b/database/voteAccountProfileMessage.php new file mode 100644 index 0000000..41722df --- /dev/null +++ b/database/voteAccountProfileMessage.php @@ -0,0 +1,59 @@ + false, "message" => 'Invalid type'])); + exit; +} + +$stmt = $conn->prepare("SELECT * FROM users WHERE token = ? AND username = ?"); +$stmt->bind_param("ss", $token, $username); +$stmt->execute(); +$result = $stmt->get_result(); +$row = $result->fetch_assoc(); +if (!$row) { + echo encrypt(json_encode(["success" => false, "message" => 'User info not found'])); + exit; +} +$stmt->close(); + +$user_id = $row["id"]; + +$stmt = $conn->prepare("SELECT votes, likes FROM userposts WHERE id = ?"); +$stmt->bind_param("i", $targetId); +$stmt->execute(); +$result = $stmt->get_result(); +$row = $result->fetch_assoc(); +if (!$row) { + echo encrypt(json_encode(["success" => false, "message" => 'Post info not found'])); + exit; +} +$stmt->close(); + +$votes = json_decode($row["votes"], true) ?? []; +$likes = (int)$row["likes"]; +if (isset($votes[$user_id])) { + echo encrypt(json_encode(["success" => false, "message" => 'You have already voted'])); + exit; +} + +$votes[$user_id] = $liked === 0 ? false : true; +$likes += $liked ? 1 : -1; +$votes = json_encode($votes); + +$stmt = $conn->prepare("UPDATE userposts SET likes = ?, votes = ? WHERE id = ?"); +$stmt->bind_param("isi", $likes, $votes, $targetId); +$stmt->execute(); +$stmt->close(); + +echo encrypt(json_encode(["success" => true, "likes" => $likes])); + +$conn->close(); \ No newline at end of file