"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;
}
?>
get_code() : "Emotes"
?> - alright.party
get_code() : "$total_emotes Emotes - Page $page/$total_pages" ?>
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 '
';
}
}
}
if ($_SESSION["user_role"]["permission_report"]) {
echo '
Report emote';
}
}
?>
Log in to get additional features...
| 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 |
get_rating()["total"] < 10) {
echo 'Not rated (' . $emote->get_rating()["total"] . ') | ';
} 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 '';
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... :'(";
}
?>
get_id() . '">';
if ($e->is_added_by_user()) {
echo '

';
}
echo '
 . '/2x.' . $e->get_ext() . ')
';
echo '
' . $e->get_code() . '
';
echo '
' . ($e->get_uploaded_by() == null ? (ANONYMOUS_DEFAULT_NAME . "*") : $e->get_uploaded_by()["username"]) . '
';
echo '';
}
?>
1) {
echo '' ?>