$emojiBase.$m, $mods); } } header('Content-Type: application/json; charset=utf-8'); $tier = detectTier(); $slug = trim($_GET['slug'] ?? ''); $data = json_decode(file_get_contents(__DIR__.'/../data/emojis.json'), true); $found = null; foreach ($data['emojis'] as $e) { if (($e['slug'] ?? '') === $slug) { $found = $e; break; } } if (!$found) { http_response_code(404); echo json_encode(['error'=>'not_found']); exit; } $out = filterEmoji($found, $tier, false); // Add tone support & modifiers for single emoji response $out['supports_skin_tone'] = dw_supports_skin_tone($found) || dw_supports_skin_tone($out); if (!isset($out['skin_tone_modifiers'])) { $out['skin_tone_modifiers'] = dw_skin_tone_modifiers(); } if (!empty($out['supports_skin_tone']) && !empty($out['emoji'])) { $base = dw_strip_tone($out['emoji']); if ($base !== '') { $out['emoji_base'] = $base; $out['variants'] = dw_build_tone_variants($base); } } $etag = '"'.sha1(json_encode([$slug,$tier,$out])).'"'; header('ETag: '.$etag); header('Cache-Control: public, max-age=300'); if (($_SERVER['HTTP_IF_NONE_MATCH'] ?? '') === $etag) { http_response_code(304); exit; } echo json_encode($out, JSON_UNESCAPED_UNICODE);