"rating ASC", "recent" => "e.created_at DESC", "oldest" => "e.created_at ASC", default => "rating DESC" }; $stmt = $db->prepare("SELECT e.*, CASE WHEN EXISTS ( SELECT 1 FROM emote_set_contents ec INNER JOIN emote_sets es ON es.id = ec.emote_set_id WHERE ec.emote_id = e.id AND es.owner_id = ? ) THEN 1 ELSE 0 END AS is_in_user_set, COALESCE(COUNT(r.rate), 0) AS rating FROM emotes e LEFT JOIN ratings AS r ON r.emote_id = e.id WHERE e.code LIKE ? AND e.visibility = 1 GROUP BY e.id, e.code, e.created_at ORDER BY $sort LIMIT ? OFFSET ? "); $stmt->bindParam(1, $user_id, PDO::PARAM_INT); $stmt->bindParam(2, $search, PDO::PARAM_STR); $stmt->bindParam(3, $limit, PDO::PARAM_INT); $stmt->bindParam(4, $offset, PDO::PARAM_INT); $stmt->execute(); $emotes = []; $rows = $stmt->fetchAll(); foreach ($rows as $row) { $uploader = null; if ($row["uploaded_by"]) { $stmt = $db->prepare("SELECT id, username FROM users WHERE id = ?"); $stmt->execute([$row["uploaded_by"]]); $uploader = $stmt->fetch(PDO::FETCH_ASSOC); } array_push($emotes, new Emote( $row["id"], $row["code"], $row["ext"], intval(strtotime($row["created_at"])), $uploader, $row["is_in_user_set"], $row["rating"], $row["visibility"] )); } return $emotes; } function display_emote(PDO &$db, int $id) { $stmt = $db->prepare("SELECT e.*, COALESCE(COUNT(r.rate), 0) as total_rating, COALESCE(ROUND(AVG(r.rate), 2), 0) AS average_rating FROM emotes e LEFT JOIN ratings AS r ON r.emote_id = ? WHERE e.id = ?"); $stmt->execute([$id, $id]); $emote = null; if ($row = $stmt->fetch()) { if ($row["id"] != null) { $emote = new Emote( $row["id"], $row["code"], $row["ext"], intval(strtotime($row["created_at"])), $row["uploaded_by"], false, ["total" => $row["total_rating"], "average" => $row["average_rating"]], $row["visibility"] ); } } if ($emote == null) { if (CLIENT_REQUIRES_JSON) { json_response([ "status_code" => 404, "message" => "Emote ID $id does not exist", "data" => null ], 404); exit; } header("Location: /404.php"); exit; } return $emote; } $emotes = null; $emote = null; $id = $_GET["id"] ?? ""; $db = new PDO(DB_URL, DB_USER, DB_PASS); $page = max(1, intval($_GET["p"] ?? "1")); $limit = 50; $total_emotes = 0; $total_pages = 0; $search = "%" . ($_GET["q"] ?? "") . "%"; $sort_by = $_GET["sort_by"] ?? ""; if ($id == "" || !is_numeric($id)) { $emotes = display_list_emotes($db, $search, $sort_by, $page, $limit); $stmt = $db->prepare("SELECT COUNT(*) FROM emotes WHERE code LIKE ? AND visibility = 1"); $stmt->execute([$search]); $total_emotes = $stmt->fetch()[0]; $total_pages = ceil($total_emotes / $limit); } else { $emote = display_emote($db, intval($id)); } if (CLIENT_REQUIRES_JSON) { json_response([ "status_code" => 200, "message" => null, "data" => $emotes ?? $emote ]); exit; } ?> <?php echo empty($emotes) ? "Emote " . $emote->get_code() : "Emotes" ?> - alright.party
<?php echo $emote->get_code() ?> <?php echo $emote->get_code() ?> <?php echo $emote->get_code() ?>
prepare("SELECT id, name FROM emote_set_contents WHERE emote_set_id = ? AND emote_id = ?"); $stmt->execute([$_SESSION["user_emote_set_id"], $emote->get_id()]); $added = false; if ($row = $stmt->fetch()) { $added = true; $emote_current_name = $row["name"] ?? $emote->get_code(); } } if (isset($_SESSION["user_role"]) && $_SESSION["user_role"]["permission_emoteset_own"]) { echo '' ?>
prepare("SELECT rate FROM ratings WHERE user_id = ? AND emote_id = ?"); $stmt->execute([$_SESSION["user_id"], $id]); if ($row = $stmt->fetch()) { echo 'You gave '; } else { foreach (RATING_NAMES as $key => $value) { echo '
'; echo ''; echo ""; echo '
'; } } } if ($_SESSION["user_role"]["permission_report"]) { echo 'Report emote'; } } ?>

Log in to get additional features...

get_rating()["total"] < 10) { echo ''; } else { $rating = $emote->get_rating()["average"]; // TODO: make it customizable list($rating_classname, $rating_name) = match (true) { in_range($rating, 0.75, 1.0) => [ "gemerald", " Shiny Gemerald! " ], in_range($rating, 0.25, 0.75) => ["gem", " Gem "], in_range($rating, -0.25, 0.25) => ["iron", "Iron"], in_range($rating, -0.75, -0.25) => ["coal", " Coal "], in_range($rating, -1.0, -0.75) => [ "brimstone", " !!!AVOID THIS CANCER-GIVING BRIMSTONE!!! " ] }; echo ''; } ?>
Uploader get_uploaded_by()) { $db = new PDO(DB_URL, DB_USER, DB_PASS); $stmt = $db->prepare("SELECT username FROM users WHERE id = ?"); $stmt->execute([$emote->get_uploaded_by()]); if ($row = $stmt->fetch()) { $username = $row["username"]; $link = "/users.php?id=" . $emote->get_uploaded_by(); } } echo ""; echo $username; echo ""; echo ', get_created_at()); echo ' UTC">about ' . format_timestamp(time() - $emote->get_created_at()) . " ago"; ?>
Rating Not rated (' . $emote->get_rating()["total"] . ') '; echo "$rating_name"; echo ' (' . $emote->get_rating()["total"] . ')'; echo '
Visibility get_visibility() == 1) { echo 'Public'; } else { echo 'Unlisted'; } ?>
prepare("SELECT users.id, users.username FROM users INNER JOIN emote_sets AS es ON es.owner_id = users.id INNER JOIN emote_set_contents AS ec ON ec.emote_set_id = es.id WHERE ec.emote_id = ?"); $stmt->execute([$emote->get_id()]); $count = $stmt->rowCount(); $db = null; if ($count > 0) { echo "

Added in $count channels

"; } else { echo "No one has added this emote yet... :'("; } ?>
fetch()) { echo '' . $row["username"] . ''; } ?>
get_id() . '">'; if ($e->is_added_by_user()) { echo ''; } echo '' . $e->get_code() . ''; echo '

' . $e->get_code() . '

'; echo '

' . ($e->get_uploaded_by() == null ? (ANONYMOUS_DEFAULT_NAME . "*") : $e->get_uploaded_by()["username"]) . '

'; echo ''; } ?>
1) { echo '' ?>