membres roles canaux affichage

This commit is contained in:
Flatlogic Bot 2026-02-16 00:36:16 +00:00
parent 79d65ef265
commit 7aa3b7d910
4 changed files with 59 additions and 10 deletions

View File

@ -43,10 +43,22 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$stmt->execute([$server_id, $server_id, $server_id, $server_id]);
$members = $stmt->fetchAll();
$filtered_members = null;
$channel_id = $_GET['channel_id'] ?? 0;
if ($channel_id) {
$filtered_members = [];
foreach ($members as $m) {
if (Permissions::canViewChannel($m['id'], $channel_id)) {
$filtered_members[] = $m;
}
}
}
echo json_encode([
'success' => true,
'roles' => $roles,
'members' => $members,
'filtered_members' => $filtered_members,
'permissions_list' => [
['value' => 1, 'name' => 'View Channels'],
['value' => 2, 'name' => 'Send Messages'],

View File

@ -1204,18 +1204,17 @@ document.addEventListener('DOMContentLoaded', () => {
membersTabBtn?.addEventListener('click', loadRoles); // Both tabs need roles data
async function loadRoles() {
if (rolesList) rolesList.innerHTML = '<div class="text-center p-3 text-muted">Loading...</div>';
if (membersList) membersList.innerHTML = '<div class="text-center p-3 text-muted">Loading...</div>';
try {
const resp = await fetch(`api_v1_roles.php?server_id=${activeServerId}`);
const channelIdParam = window.activeChannelId ? `&channel_id=${window.activeChannelId}` : '';
const resp = await fetch(`api_v1_roles.php?server_id=${activeServerId}${channelIdParam}`);
const data = await resp.json();
if (data.success) {
serverRoles = data.roles;
serverPermissions = data.permissions_list;
if (rolesList) renderRoles(data.roles);
if (membersList) renderMembers(data.members);
updateGlobalUI(data.members);
// Use filtered members for sidebar, all members for colors
updateGlobalUI(data.filtered_members || data.members, data.members);
}
} catch (e) { console.error(e); }
}
@ -1230,19 +1229,20 @@ document.addEventListener('DOMContentLoaded', () => {
}
}
function updateGlobalUI(members) {
function updateGlobalUI(sidebarMembers, allMembers = null) {
if (!allMembers) allMembers = sidebarMembers;
// Update members sidebar
const sidebar = document.querySelector('.members-sidebar');
if (sidebar) {
const countEl = sidebar.querySelector('div[style*="text-transform: uppercase"]');
if (countEl) countEl.textContent = `Members — ${members.length}`;
if (countEl) countEl.textContent = `Members — ${sidebarMembers.length}`;
// We need to keep the "Members - X" div and replace everything else
const header = sidebar.firstElementChild;
sidebar.innerHTML = '';
sidebar.appendChild(header);
members.forEach(m => {
sidebarMembers.forEach(m => {
const item = document.createElement('div');
item.className = 'channel-item member-item';
item.dataset.userId = m.id;
@ -1273,7 +1273,7 @@ document.addEventListener('DOMContentLoaded', () => {
// Update chat colors
document.querySelectorAll('.message-author').forEach(authorEl => {
const username = authorEl.childNodes[0].textContent.trim();
const member = members.find(m => m.username === username);
const member = allMembers.find(m => m.username === username);
if (member) {
authorEl.style.color = member.role_color || 'inherit';
// Try to update icon if it exists or add it if it doesn't

View File

@ -200,7 +200,14 @@ if ($is_dm_view) {
WHERE sm.server_id = ?
");
$stmt->execute([$active_server_id, $active_server_id, $active_server_id, $active_server_id]);
$members = $stmt->fetchAll();
$all_server_members = $stmt->fetchAll();
$members = [];
foreach($all_server_members as $m) {
if (Permissions::canViewChannel($m['id'], $active_channel_id)) {
$members[] = $m;
}
}
// Fetch all server roles
$stmt = db()->prepare("SELECT * FROM roles WHERE server_id = ? ORDER BY position DESC");

View File

@ -94,3 +94,33 @@
2026-02-16 00:25:16 - GET /index.php?server_id=1&channel_id=6 - POST: []
2026-02-16 00:25:18 - GET /index.php?server_id=1&channel_id=15 - POST: []
2026-02-16 00:25:27 - GET /index.php?server_id=1&channel_id=2 - POST: []
2026-02-16 00:28:38 - GET / - POST: []
2026-02-16 00:28:56 - GET /?fl_project=38443 - POST: []
2026-02-16 00:29:17 - GET /index.php?server_id=1&channel_id=2 - POST: []
2026-02-16 00:29:44 - GET /index.php?server_id=1&channel_id=15 - POST: []
2026-02-16 00:29:47 - GET /index.php?server_id=1&channel_id=2 - POST: []
2026-02-16 00:30:05 - GET /index.php?server_id=1&channel_id=11 - POST: []
2026-02-16 00:30:37 - GET /index.php?server_id=1&channel_id=15 - POST: []
2026-02-16 00:30:39 - GET /index.php?server_id=1&channel_id=2 - POST: []
2026-02-16 00:30:55 - GET /index.php?server_id=1&channel_id=15 - POST: []
2026-02-16 00:30:57 - GET /index.php?server_id=1&channel_id=2 - POST: []
2026-02-16 00:30:59 - GET /index.php?server_id=1&channel_id=2 - POST: []
2026-02-16 00:31:02 - GET /index.php?server_id=1&channel_id=6 - POST: []
2026-02-16 00:31:04 - GET /index.php?server_id=1&channel_id=1 - POST: []
2026-02-16 00:31:06 - GET /index.php?server_id=1&channel_id=2 - POST: []
2026-02-16 00:31:09 - GET /index.php?server_id=1&channel_id=15 - POST: []
2026-02-16 00:31:11 - GET /index.php?server_id=1&channel_id=15 - POST: []
2026-02-16 00:31:13 - GET /index.php?server_id=1&channel_id=6 - POST: []
2026-02-16 00:31:15 - GET /index.php?server_id=1&channel_id=1 - POST: []
2026-02-16 00:31:16 - GET /index.php?server_id=1&channel_id=15 - POST: []
2026-02-16 00:31:59 - GET /index.php?server_id=1&channel_id=15 - POST: []
2026-02-16 00:32:08 - GET /index.php?server_id=1&channel_id=15 - POST: []
2026-02-16 00:32:15 - GET /index.php?server_id=1&channel_id=15 - POST: []
2026-02-16 00:32:19 - GET /index.php?server_id=1&channel_id=6 - POST: []
2026-02-16 00:32:21 - GET /index.php?server_id=1&channel_id=2 - POST: []
2026-02-16 00:32:45 - GET /index.php?server_id=1&channel_id=2 - POST: []
2026-02-16 00:34:01 - GET /index.php?server_id=1&channel_id=15 - POST: []
2026-02-16 00:34:31 - GET /index.php?server_id=1&channel_id=2 - POST: []
2026-02-16 00:34:34 - GET /index.php?server_id=1&channel_id=15 - POST: []
2026-02-16 00:34:36 - GET /index.php?server_id=1&channel_id=6 - POST: []
2026-02-16 00:34:39 - GET /index.php?server_id=1&channel_id=1 - POST: []