From ac5b69edf724d164c2150dfc96129335b9225299 Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Sun, 20 Apr 2025 18:02:53 +0500 Subject: feat: emote addition --- public/emotes/add.php | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 public/emotes/add.php (limited to 'public/emotes/add.php') diff --git a/public/emotes/add.php b/public/emotes/add.php new file mode 100644 index 0000000..a5c480d --- /dev/null +++ b/public/emotes/add.php @@ -0,0 +1,67 @@ +prepare("SELECT id FROM emotes WHERE id = ?"); +$stmt->execute([$emote_id]); +if ($stmt->rowCount() == 0) { + generate_alert("/emotes/$emote_id", "Emote not found", 404); + exit; +} + +$user_id = $_SESSION["user_id"]; + +// obtaining or creating a emote set +$stmt = $db->prepare("SELECT emote_set_id FROM acquired_emote_sets WHERE user_id = ? AND is_default = true"); +$stmt->execute([$user_id]); +$emote_set_id = null; + +if ($row = $stmt->fetch()) { + $emote_set_id = $row["emote_set_id"]; + + // checking ownership + $stmt = $db->prepare("SELECT id FROM emote_sets WHERE id = ? AND owner_id = ?"); + $stmt->execute([$emote_set_id, $user_id]); + + if ($stmt->rowCount() == 0) { + $_SESSION["user_emote_set_id"] = ""; + generate_alert("/emotes/$emote_id", "Bad ownership permissions on active emoteset", 403); + exit; + } +} + +if ($emote_set_id == null) { + $stmt = $db->prepare("INSERT INTO emote_sets(owner_id, name) VALUES (?, ?)"); + $stmt->execute([$user_id, $_SESSION["user_name"] . "'s emoteset"]); + $emote_set_id = $db->lastInsertId(); + + $stmt = $db->prepare("INSERT INTO acquired_emote_sets(user_id, emote_set_id, is_default) VALUES (?, ?, true)"); + $stmt->execute([$user_id, $emote_set_id]); +} + +$_SESSION["user_emote_set_id"] = $emote_set_id; + +// inserting emote +$stmt = $db->prepare("SELECT id FROM emote_set_contents WHERE emote_set_id = ? AND emote_id = ?"); +$stmt->execute([$emote_set_id, $emote_id]); + +if ($stmt->rowCount() != 0) { + generate_alert("/emotes/$emote_id", "This emote has been already added!"); + exit; +} + +$stmt = $db->prepare("INSERT INTO emote_set_contents(emote_set_id, emote_id, added_by) VALUES (?, ?, ?)"); +$stmt->execute([$emote_set_id, $emote_id, $user_id]); + +$db = null; + +generate_alert("/emotes/$emote_id", "Successfully added a new emote!", 200); \ No newline at end of file -- cgit v1.2.3