server->get_hostname(), $ICON_ALLOWLIST)) { return null; } if ($room->has_nsfw_keywords()) { return null; } $room_id = $room->get_room_identifier(); $icon_cached = room_icon_path($room_id); $icon_resized = room_icon_path_resized($room_id, $size); if (file_exists($icon_resized)) { return room_icon_path_relative($room_id, $size); } if (!file_exists($icon_cached)) { $icon_url = $room->get_icon_url(); if (empty($icon_url)) { return null; } log_debug("Fetching icon for $room_id."); $icon = file_get_contents($icon_url); if (empty($icon)) { log_info("$room_id returned empty icon."); } // Cache result, no matter if empty file_put_contents($icon_cached, $icon); } $icon_cached_contents = file_get_contents($icon_cached); if (empty($icon_cached_contents)) { file_put_contents($icon_resized, ""); return ""; } // Resize image $gd_image = imagecreatefromstring($icon_cached_contents); $gd_resized = imagescale($gd_image, $width, $height); imagewebp($gd_resized, to: $icon_resized); return room_icon_path_relative($room_id, $size); } file_exists($ROOM_ICONS_CACHE) or mkdir($ROOM_ICONS_CACHE, 0755, true); file_exists($ROOM_ICONS) or mkdir($ROOM_ICONS, 0755, true); ?>