"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(SUM(r.rate), 0) AS rating
FROM emotes e
LEFT JOIN ratings AS r ON r.emote_id = e.id
WHERE e.code LIKE ?
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) {
array_push($emotes, new Emote(
$row["id"],
$row["code"],
$row["ext"],
intval(strtotime($row["created_at"])),
$row["uploaded_by"],
$row["is_in_user_set"],
$row["rating"]
));
}
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()) {
$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"]]
);
}
if ($emote == null) {
header("Location: /404.php");
exit;
}
return $emote;
}
$emotes = null;
$emote = null;
$id = $_GET["id"] ?? "";
$db = new PDO(DB_URL, DB_USER, DB_PASS);
if ($id == "" || !is_numeric($id)) {
$page = intval($_GET["p"] ?? "0");
$limit = 50;
$emotes = display_list_emotes($db, $page, $limit);
} else {
$emote = display_emote($db, intval($id));
}
?>
get_code() : "Emotes"
?> - alright.party
prepare("SELECT id FROM emote_set_contents WHERE emote_set_id = ? AND emote_id = ?");
$stmt->execute([$_SESSION["user_emote_set_id"], $emote->get_id()]);
$added = $stmt->rowCount() > 0;
}
?>
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 '
';
}
}
?>
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 ' | ';
}
?>
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 '';
}
?>