diff options
Diffstat (limited to 'src/emote.php')
| -rw-r--r-- | src/emote.php | 332 |
1 files changed, 0 insertions, 332 deletions
diff --git a/src/emote.php b/src/emote.php deleted file mode 100644 index ce39c09..0000000 --- a/src/emote.php +++ /dev/null @@ -1,332 +0,0 @@ -<?php -include_once "user.php"; - -class Emote -{ - public string $id; - public string $code; - public string $ext; - public mixed $uploaded_by; - public int $created_at; - public mixed $rating; - public bool $is_in_user_set; - public int $visibility; - - public string|null $source; - - public array $tags; - - public static function from_array(array $arr): Emote - { - $e = new Emote(); - - $e->id = $arr["id"]; - $e->code = $arr["code"]; - $e->ext = $arr["ext"] ?? "webp"; - $e->uploaded_by = $arr["uploaded_by"]; - $e->created_at = strtotime($arr["created_at"] ?? 0); - $e->is_in_user_set = $arr["is_in_user_set"] ?? false; - $e->visibility = $arr["visibility"]; - $e->source = $arr["source"] ?? null; - $e->tags = $arr["tags"] ?? []; - - if (isset($arr["total_rating"], $arr["average_rating"])) { - $e->rating = [ - "total" => $arr["total_rating"], - "average" => $arr["average_rating"] - ]; - } else { - $e->rating = $arr["rating"] ?? null; - } - - return $e; - } - - public static function from_array_with_user(array $arr, PDO &$db): Emote - { - if ($arr["uploaded_by"]) { - $arr["uploaded_by"] = User::get_user_by_id($db, $arr["uploaded_by"]); - } - - return Emote::from_array($arr); - } - - function get_id() - { - return $this->id; - } - - function get_code() - { - return $this->code; - } - - function get_ext() - { - return $this->ext; - } - - function get_created_at() - { - return $this->created_at; - } - - function get_uploaded_by() - { - return $this->uploaded_by; - } - - function is_added_by_user() - { - return $this->is_in_user_set; - } - - function get_rating() - { - return $this->rating; - } - - function get_visibility() - { - return $this->visibility; - } - - function get_source() - { - return $this->source; - } - - function get_tags(): array - { - return $this->tags; - } -} - -class Emoteset -{ - public string $id; - public string $name; - public User|null $owner; - public array $emotes; - - public bool $is_default; - - public static function from_array(array $arr): Emoteset - { - $s = new Emoteset(); - - $s->id = $arr["id"]; - $s->name = $arr["name"]; - $s->owner = $arr["owner_id"]; - $s->emotes = $arr["emotes"] ?? []; - $s->is_default = $arr["is_default"] ?? false; - - return $s; - } - - public static function from_array_extended(array $arr, string $user_id, PDO &$db): Emoteset - { - if ($arr["owner_id"]) { - $arr["owner_id"] = User::get_user_by_id($db, $arr["owner_id"]); - } - - $arr["emotes"] = fetch_all_emotes_from_emoteset($db, $arr["id"], $user_id); - - return Emoteset::from_array($arr); - } - - public static function get_all_user_emotesets(PDO &$db, string $user_id): array - { - $stmt = $db->prepare("SELECT es.*, aes.is_default FROM emote_sets es - INNER JOIN acquired_emote_sets aes ON aes.emote_set_id = es.id - WHERE aes.user_id = ? - "); - $stmt->execute([$user_id]); - - $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); - $emote_sets = []; - - foreach ($rows as $row) { - array_push($emote_sets, Emoteset::from_array_extended($row, $user_id, $db)); - } - - return $emote_sets; - } -} - -function fetch_all_emotes_from_emoteset(PDO &$db, string $emote_set_id, string $user_id, int|null $limit = null): array -{ - // fetching emotes - $sql = "SELECT - e.id, e.created_at, e.visibility, - CASE - WHEN esc.code IS NOT NULL THEN esc.code - ELSE e.code - END AS code, - CASE - WHEN esc.code IS NOT NULL THEN e.code - ELSE NULL - END AS original_code, - CASE WHEN up.private_profile = FALSE OR up.id = ? THEN e.uploaded_by ELSE NULL END AS uploaded_by - FROM emotes e - LEFT JOIN user_preferences up ON up.id = e.uploaded_by - INNER JOIN emote_set_contents AS esc - ON esc.emote_set_id = ? - WHERE esc.emote_id = e.id"; - - if ($limit) { - $sql .= " LIMIT $limit"; - } - - $stmt = $db->prepare($sql); - $stmt->execute([$user_id, $emote_set_id]); - - $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); - $emotes = []; - - // fetching uploaders - foreach ($rows as $row) { - if ($row["uploaded_by"]) { - $row["uploaded_by"] = User::get_user_by_id($db, $row["uploaded_by"]); - } - - array_push($emotes, Emote::from_array($row)); - } - - return $emotes; -} - -function html_random_emote(PDO &$db) -{ - $stmt = $db->prepare("SELECT id, code FROM emotes WHERE visibility = 1 ORDER BY RAND() LIMIT 1"); - $stmt->execute(); - - if ($row = $stmt->fetch()) { - echo '' - ?> - <section class="box" id="box-random-emote"> - <div class="box navtab"> - <p>Random emote</p> - </div> - <div class="box content center"> - <a href="/emotes?id=<?php echo $row["id"] ?>"> - <img src="/static/userdata/emotes/<?php echo $row["id"] ?>/3x.webp" alt="<?php echo $row["code"] ?>" - width="192"> - </a> - </div> - </section> - <?php - ; - } -} - -function html_featured_emote(PDO &$db) -{ - $stmt = $db->prepare("SELECT e.id, e.code FROM emotes e - INNER JOIN emote_sets es ON es.is_featured = TRUE - INNER JOIN emote_set_contents esc ON es.id = esc.emote_set_id - WHERE e.visibility = 1 AND e.id = esc.emote_id ORDER BY esc.added_at DESC LIMIT 1"); - $stmt->execute(); - - if ($row = $stmt->fetch()) { - echo '' - ?> - <section class="box" id="box-featured-emote"> - <div class="box navtab"> - <p>Featured emote</p> - </div> - <div class="box content center"> - <a href="/emotes?id=<?php echo $row["id"] ?>"> - <img src="/static/userdata/emotes/<?php echo $row["id"] ?>/3x.webp" alt="<?php echo $row["code"] ?>" - width="192"> - </a> - </div> - </section> - <?php - ; - } -} - -function html_display_emotes(array $emotes, int $scale = 3) -{ - $emote_wall = intval($_COOKIE["emotelist_wall"] ?? "0") == 1; - - foreach ($emotes as $e) { - echo "<a class='box emote column justify-center items-center' href='/emotes?id={$e->id}'>"; - - if ($e->is_added_by_user()) { - echo '<img src="/static/img/icons/yes.png" class="emote-check" />'; - } - - // icon - echo '<div class="flex justify-center items-center grow emote-icon">'; - $scale = $emote_wall ? "3" : ((string) $scale); - echo "<img src='/static/userdata/emotes/{$e->id}/{$scale}x.webp' alt='{$e->code}' />"; - echo '</div>'; - - // info - echo '<div class="flex column justify-bottom items-center emote-desc'; - if ($emote_wall) { - echo ' none'; - } - echo '">'; - - echo "<h1 title='{$e->code}'>{$e->code}</h1>"; - if ($e->get_uploaded_by()) { - echo "<p>{$e->uploaded_by->username}</p>"; - } - - echo '</div></a>'; - } -} - -function html_display_emoteset(array $emotesets) -{ - foreach ($emotesets as $es) { - echo "<a href='/emotesets.php?id={$es->id}' class='box column small-gap'>"; - - echo '<div>'; - echo "<p>$es->name</p>"; - echo '</div>'; - - echo '<div class="small-gap row">'; - - foreach ($es->emotes as $e) { - echo "<img src='/static/userdata/emotes/{$e->id}/1x.webp' alt='{$e->code}' title='{$e->code}' height='16' />"; - } - - echo '</div></a>'; - - } -} - -function html_emotelist_mode() -{ - echo '' ?> - <div class="row small-gap" id="control-emotelist" style="display: none;"> - <a href="#" onclick="set_emotelist_mode('wall')"> - <img src="/static/img/icons/emotes/emote.png" alt="Emote Wall" title="Emote Wall"> - </a> - <a href="#" onclick="set_emotelist_mode('table')"> - <img src="/static/img/icons/table.png" alt="Emote Descriptions" title="Emote Descriptions"> - </a> - </div> - <script> - document.getElementById("control-emotelist").style.display = "flex"; - - function set_emotelist_mode(mode) { - const elements = document.querySelectorAll(".emote .emote-desc"); - - for (const element of elements) { - if (mode == "wall") { - element.classList.add("none"); - document.cookie = "emotelist_wall = 1; expires=Tue, 19 Jan 2038 00:00:00 UTC; path=/"; - } else { - element.classList.remove("none"); - document.cookie = "emotelist_wall = 0; expires=Tue, 19 Jan 2038 00:00:00 UTC; path=/"; - } - } - } - </script> - <?php ; -}
\ No newline at end of file |
