diff --git a/index.php b/index.php
index a16ffe4..1246c37 100644
--- a/index.php
+++ b/index.php
@@ -1,5 +1,15 @@
';
+ } else {
+ return '' . htmlspecialchars($icon) . '';
+ }
+}
requireLogin();
$user = getCurrentUser();
@@ -81,8 +91,10 @@ if ($is_dm_view) {
$is_owner = false;
$can_manage_channels = false;
$can_manage_server = false;
+ $active_server = null;
foreach($servers as $s) {
if($s['id'] == $active_server_id) {
+ $active_server = $s;
$is_owner = ($s['owner_id'] == $current_user_id);
$can_manage_channels = Permissions::hasPermission($current_user_id, $active_server_id, Permissions::MANAGE_CHANNELS) || $is_owner;
$can_manage_server = Permissions::hasPermission($current_user_id, $active_server_id, Permissions::MANAGE_SERVER) || Permissions::hasPermission($current_user_id, $active_server_id, Permissions::ADMINISTRATOR) || $is_owner;
@@ -90,7 +102,7 @@ if ($is_dm_view) {
}
}
- $channel_theme = $active_channel['theme_color'] ?? null;
+ $channel_theme = $active_server['theme_color'] ?? null;
$channel_type = $active_channel['type'] ?? 'chat';
$active_thread_id = $_GET['thread_id'] ?? null;
@@ -104,13 +116,14 @@ if ($is_dm_view) {
if ($active_thread) {
$stmt = db()->prepare("
SELECT m.*, u.username, u.avatar_url,
- (SELECT r.color FROM roles r JOIN user_roles ur ON r.id = ur.role_id WHERE ur.user_id = u.id AND r.server_id = ? ORDER BY r.position DESC LIMIT 1) as role_color
+ (SELECT r.color FROM roles r JOIN user_roles ur ON r.id = ur.role_id WHERE ur.user_id = u.id AND r.server_id = ? ORDER BY r.position DESC LIMIT 1) as role_color,
+ (SELECT r.icon_url FROM roles r JOIN user_roles ur ON r.id = ur.role_id WHERE ur.user_id = u.id AND r.server_id = ? ORDER BY r.position DESC LIMIT 1) as role_icon
FROM messages m
JOIN users u ON m.user_id = u.id
WHERE m.thread_id = ?
ORDER BY m.created_at ASC
");
- $stmt->execute([$active_server_id, $active_thread_id]);
+ $stmt->execute([$active_server_id, $active_server_id, $active_thread_id]);
$messages = $stmt->fetchAll();
}
}
@@ -133,27 +146,29 @@ if ($is_dm_view) {
(SELECT COUNT(*) FROM messages m WHERE m.thread_id = t.id) as message_count,
(SELECT MAX(created_at) FROM messages m WHERE m.thread_id = t.id) as last_activity,
(SELECT r.color FROM roles r JOIN user_roles ur ON r.id = ur.role_id WHERE ur.user_id = u.id AND r.server_id = ? ORDER BY r.position DESC LIMIT 1) as role_color,
+ (SELECT r.icon_url FROM roles r JOIN user_roles ur ON r.id = ur.role_id WHERE ur.user_id = u.id AND r.server_id = ? ORDER BY r.position DESC LIMIT 1) as role_icon,
(SELECT GROUP_CONCAT(CONCAT(ft.name, ':', ft.color) SEPARATOR '|') FROM thread_tags tt JOIN forum_tags ft ON tt.tag_id = ft.id WHERE tt.thread_id = t.id) as tags
FROM forum_threads t
JOIN users u ON t.user_id = u.id
WHERE t.channel_id = ? " . $status_where . "
ORDER BY last_activity DESC, t.created_at DESC
");
- $stmt->execute([$active_server_id, $active_channel_id]);
+ $stmt->execute([$active_server_id, $active_server_id, $active_channel_id]);
$threads = $stmt->fetchAll();
} else {
// Fetch messages
$display_limit = !empty($active_channel['message_limit']) ? (int)$active_channel['message_limit'] : 50;
$stmt = db()->prepare("
SELECT m.*, u.username, u.avatar_url,
- (SELECT r.color FROM roles r JOIN user_roles ur ON r.id = ur.role_id WHERE ur.user_id = u.id AND r.server_id = ? ORDER BY r.position DESC LIMIT 1) as role_color
+ (SELECT r.color FROM roles r JOIN user_roles ur ON r.id = ur.role_id WHERE ur.user_id = u.id AND r.server_id = ? ORDER BY r.position DESC LIMIT 1) as role_color,
+ (SELECT r.icon_url FROM roles r JOIN user_roles ur ON r.id = ur.role_id WHERE ur.user_id = u.id AND r.server_id = ? ORDER BY r.position DESC LIMIT 1) as role_icon
FROM messages m
JOIN users u ON m.user_id = u.id
WHERE m.channel_id = ?
ORDER BY m.created_at ASC
LIMIT " . $display_limit . "
");
- $stmt->execute([$active_server_id, $active_channel_id]);
+ $stmt->execute([$active_server_id, $active_server_id, $active_channel_id]);
$messages = $stmt->fetchAll();
}
@@ -163,12 +178,13 @@ if ($is_dm_view) {
// Fetch members
$stmt = db()->prepare("
SELECT u.id, u.username, u.avatar_url, u.status,
- (SELECT r.color FROM roles r JOIN user_roles ur ON r.id = ur.role_id WHERE ur.user_id = u.id AND r.server_id = ? ORDER BY r.position DESC LIMIT 1) as role_color
+ (SELECT r.color FROM roles r JOIN user_roles ur ON r.id = ur.role_id WHERE ur.user_id = u.id AND r.server_id = ? ORDER BY r.position DESC LIMIT 1) as role_color,
+ (SELECT r.icon_url FROM roles r JOIN user_roles ur ON r.id = ur.role_id WHERE ur.user_id = u.id AND r.server_id = ? ORDER BY r.position DESC LIMIT 1) as role_icon
FROM users u
JOIN server_members sm ON u.id = sm.user_id
WHERE sm.server_id = ?
");
- $stmt->execute([$active_server_id, $active_server_id]);
+ $stmt->execute([$active_server_id, $active_server_id, $active_server_id]);
$members = $stmt->fetchAll();
}
@@ -236,7 +252,13 @@ $projectImageUrl = $_SERVER['PROJECT_IMAGE_URL'] ?? '';
">
+ style="">
@@ -331,8 +353,7 @@ $projectImageUrl = $_SERVER['PROJECT_IMAGE_URL'] ?? '';
data-limit=""
data-status=""
data-icon=""
- data-category=""
- data-theme="">
+ data-category="">
@@ -474,6 +495,7 @@ $projectImageUrl = $_SERVER['PROJECT_IMAGE_URL'] ?? '';