OXIESEC PANEL
- Current Dir:
/
/
var
/
www
/
cream
/
groupchat
/
backup
/
backup
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
05/19/2025 10:07:13 AM
rwxrwxr-x
📄
bfunction.php
11.61 KB
05/19/2025 10:07:13 AM
rw-rw-r--
📄
bgroup.php
14.44 KB
05/19/2025 10:07:13 AM
rw-rw-r--
📄
bindex.php
26.59 KB
05/19/2025 10:07:13 AM
rw-rw-r--
📄
create_group.php
1.03 KB
05/19/2025 10:07:13 AM
rw-rw-r--
📄
dashboard.php
8.53 KB
05/19/2025 10:07:13 AM
rw-rw-r--
📄
db_connect.php
614 bytes
05/19/2025 10:07:13 AM
rw-rw-r--
📄
delete_chat.php
369 bytes
05/19/2025 10:07:13 AM
rw-rw-r--
📄
delete_group.php
362 bytes
05/19/2025 10:07:13 AM
rw-rw-r--
📁
dump
-
05/19/2025 10:07:13 AM
rwxrwxr-x
📄
exit_group.php
404 bytes
05/19/2025 10:07:13 AM
rw-rw-r--
📄
function.php
12.33 KB
05/19/2025 10:07:13 AM
rw-rw-r--
📄
group.php
19.26 KB
05/19/2025 10:07:13 AM
rw-rw-r--
📄
index.php
27.94 KB
05/19/2025 10:07:13 AM
rw-rw-r--
📄
memberSearch.php
1.32 KB
05/19/2025 10:07:13 AM
rw-rw-r--
📄
register.php
5.08 KB
05/19/2025 10:07:13 AM
rw-rw-r--
📄
sendreview.php
626 bytes
05/19/2025 10:07:13 AM
rw-rw-r--
📄
signin.php
5.52 KB
05/19/2025 10:07:13 AM
rw-rw-r--
📄
signout.php
295 bytes
05/19/2025 10:07:13 AM
rw-rw-r--
📄
test.php
2 KB
05/19/2025 10:07:13 AM
rw-rw-r--
📄
test1.html
1.4 KB
11/28/2024 01:24:17 PM
rw-rw-r--
📄
test1.php
125 bytes
05/19/2025 10:07:13 AM
rw-rw-r--
📄
update_member.php
729 bytes
05/19/2025 10:07:13 AM
rw-rw-r--
📄
validate.logged.php
580 bytes
05/19/2025 10:07:13 AM
rw-rw-r--
Editing: bindex.php
Close
<!doctype html> <html lang="en"> <?php include '../inc/validate.logged.php'; include '../inc/config.php'; include 'db_connect.php'; include 'function.php'; $user_id = $gUserId; $user_name = $gUserName; $groups = []; // $chat = []; // Fetching the group name from the database $groups = display_groups($conn, $user_id); ?> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>Group Chat • Knobly Cream</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <!-- Font Awesome CSS --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.0.0/animate.min.css" /> <link rel="stylesheet" href="../inc/fontawesome/css/all.min.css" /> <link rel="stylesheet" href="../inc/magnific-popup.css" /> <link rel="stylesheet" href="../inc/style.css" /> <link rel="stylesheet" href="../inc/genai_style.css" /> <link rel="icon" type="image/x-icon" href="/img/logo.ico"> <script src="../inc/jquery.magnific-popup.min.js"></script> <script src="../inc/common.js"></script> <script src="../inc/genai_func.js"></script> <script> $(document).ready(function() { $('.create-chat').hide(); $('.chat-message').hide(); $('.panelContent').hide(); }); </script> <style> body { font-family: Arial, sans-serif; margin: 0; padding: 0; display: flex; min-height: 100vh; flex-direction: column; } .header { background-color: #343a40 !important; color: white; padding: 10px 0; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); position: fixed; top: 0; left: 0; width: 100%; z-index: 3; } .header img { width: auto; height: 40px; cursor: pointer; margin-right: 10px; padding-left: 10px; } .sidebar { height: 100%; width: 250px; overflow-y: scroll; position: fixed; top: 54px; left: 0; background-color: #212529; color: rgba(255, 255, 255, 0.5); padding-top: 20px; transition: width 0.3s ease, left 0.3s ease; z-index: 2; } .sidebar.collapsed { width: 0px; } .sidebar ul { list-style-type: none; padding: 0; } .sidebar ul li a { color: white; text-decoration: none; display: block; padding: 10px; text-align: center; } .group-name { display: block; height: 70%; overflow-y: scroll; overflow-x: hidden; } .group-name::-webkit-scrollbar { display: none; } .group-name a { padding: 5px 20px; color: rgba(255, 255, 255, 0.5); } .group-name a:hover { color: #fff; } .content { margin-left: 250px; flex: 1; padding: 20px; transition: margin-left 0.3s ease; margin-top: 40px; } .create-chat { background-color: #f2f2f2; padding: 20px; } .sidebar-toggle-btn { position: absolute; /* right: 0px; */ top: 0; border: none; z-index: 3; } .sidebar-toggle-btn:hover { background-color: #555; } .sidebar-toggle-btn:hover .toggle-icon { transform: scale(1.1); } .toggle-icon { font-size: 24px; transition: transform 0.3s ease; } .side-nav { width: 250px; background-color: #333; color: white; height: 100%; position: fixed; top: 40px; left: -250px; overflow-x: hidden; padding-top: 20px; transition: left 0.3s ease; z-index: 1; } .side-nav a { padding: 10px; text-decoration: none; color: white; display: block; text-align: center; } .side-nav a:hover { background-color: #555; } .main-icons { margin-left: 50px; transition: margin-left 0.3s ease; } .group-link { font-family: 'Work Sans', sans-serif; font-size: 14px; display: flex; align-items: center; padding-top: 0.75rem; padding-bottom: 0.75rem; position: relative; } .button { display: inline-block; padding: 10px 20px; color: #fff; text-decoration: none; border-radius: 5px; margin-right: 10px; } #signout-btn .group-link { text-decoration: none; } .sidebar .sidebar-link { display: block; } .sidebar.hidden .sidebar-link { display: none; } .group-name { /* Your styles for group name */ display: block; /* Ensure it's initially visible */ } .sidebar.hidden .group-name { display: none; /* Hide group-name when sidebar is hidden */ } .chat-message { background-color: #fff; border-radius: 8px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); overflow: hidden; /* width: 100%; */ max-width: 100%; height: 100vh; display: flex; flex-direction: column; } .chat-box { flex: 1; padding: 10px; overflow-y: auto; display: flex; flex-direction: column; } .message-input { display: flex; align-items: center; padding: 10px; border-top: 1px solid #ccc; } textarea { flex: 1; resize: none; padding: 8px; border: 1px solid #ccc; border-radius: 4px; margin-right: 10px; } .chat-message button { padding: 8px 16px; background-color: #007bff; color: #fff; border: none; border-radius: 4px; cursor: pointer; transition: background-color 0.3s; } .chat-message button:hover { background-color: #0056b3; } .message { border-radius: 8px; padding: 8px 12px; margin-bottom: 8px; max-width: 70%; } .outgoing { background-color: #007bff; color: #fff; align-self: flex-end; text-align: left; /* Ensure text is left-aligned within outgoing message */ margin-left: auto; /* Pushes outgoing messages to the right side */ } .header-keys { display: flex; justify-content: space-between; } .user-details { display: flex; padding: 10px; font-weight: bold; font-family: sans-serif; padding-right: 30px; } form { max-width: 600px; background-color: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } label { font-weight: bold; margin-bottom: 5px; } input[type=text], textarea { width: calc(100% - 20px); padding: 10px; margin-bottom: 15px; border: 1px solid #ccc; border-radius: 4px; font-size: 16px; } .scrollable-list { max-height: 200px; overflow-y: auto; border: 1px solid #ccc; padding: 10px; border-radius: 4px; margin-bottom: 15px; } .scrollable-list-item { margin-bottom: 5px; } .selected-options { border: 1px solid #ccc; padding: 10px; border-radius: 4px; margin-bottom: 15px; } .selected-options h3 { margin-top: 0; } #selected-members-info { margin-bottom: 10px; } .member-link { text-decoration: none; color: #333; display: block; padding: 8px; background-color: #f9f9f9; border-radius: 4px; transition: background-color 0.3s ease; } .member-link:hover { background-color: #e0e0e0; } input[type=submit] { padding: 10px 20px; font-size: 18px; background-color: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer; transition: background-color 0.3s ease; } input[type=submit]:hover { background-color: #0069d9; } #signout-btn { position: relative; bottom: 0px; } .a .button .group-link { padding: 5px 10px; } .delete-button { position: absolute; top: 5px; right: 5px; } .context-menu { display: none; position: absolute; z-index: 10000; background-color: #f9f9f9; border-radius: 3px; color: #212529; border: 1px solid #ccc; padding: 5px 0; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1); } .context-menu a { color: #212529; text-decoration: none; font-family: 'Work Sans', sans-serif; font-size: 14px; } .context-menu li { list-style: none; padding: 5px 15px; cursor: pointer; } .context-menu li:hover { background-color: #f0f0f0; } </style> </head> <body class="sb-nav-fixed"> <nav class="sb-topnav navbar navbar-expand navbar-dark bg-dark"> <a class="navbar-brand" href="/dashboard.php"><img src="../grfx/logo.png" width="120"></a> <button class="btn btn-link btn-sm order-1 order-lg-0" id="sidebarToggle" href="#"><i class="fas fa-bars"></i></button> <div class="navbar-nav ml-auto"> <!-- <div class="navbar-nav text-light" style="margin-top:6px;margin-right:20px"><?= strtok($gUserName, " "); ?></div> --> <div class="navbar-nav text-light" style="margin-top:6px;margin-right:20px"><? if ($gUserPlan == 1) { ?>Pro<? } else { ?>Free<? } ?></div> <div class="navbar-nav text-light" style="margin-top:6px;margin-right:10px"><b><?= $user_name?></b></div> </div> </nav> <div id="layoutSidenav"> <div id="layoutSidenav_nav"> <nav class="sb-sidenav accordion sb-sidenav-dark" id="sidenavAccordion"> <div class="sb-sidenav-menu"> <div class="nav mt-4"> <a class="nav-link " href="#create-group" onclick="showCreateGroup()">✚ Create a Group </a> <a class="nav-link active">My Groups</a> <div class="group-name"> <?php if ($groups) { foreach ($groups as $group) : ?> <div class="group-item" id="group_<?php echo $group['group_id']; ?>"> <a id="group-btn-<?php echo $group['group_id']; ?>" class="button group-link" href="#group_id=<?php echo $group['group_id']; ?>" onclick="showGroupContent(<?php echo $user_id; ?>, <?php echo $group['group_id']; ?>, '<?php echo $user_name; ?>')"><?php echo htmlspecialchars($group['group_name']); ?></a> </div> <?php endforeach; } else { ?> <a class="button group-link"><strong>No group</strong></a> <?php } ?> </div> <!-- <a class="nav-link active" href="javascript:np()" onclick="goSection('dashboard', this)"><div class="sb-nav-link-icon"><i class="fas fa-rss"></i></div> Dashboard</a> <a class="nav-link" href="javascript:np()" onclick="goSection('curated', this)"> <div class="sb-nav-link-icon"><i class="fas fa-rss"></i></div> Cream Curated </a>--> </div> </div> <div class="sb-sidenav-footer"> <div class="small">Version: 2.1</div> </div> </nav> </div> <div id="layoutSidenav_content"> <main> <div id="panelContent" class="container-fluid"></div> <!-- <section> <div id="contentLoader"> <div class="lds-ring"> <div></div> <div></div> <div></div> <div></div> </div> </div> </section> --> <div class="create-chat" id="create-chat"> <h2>Create a New Group</h2> <form id="create-group-form" method="post" action="create_group.php"> <label for="group_name">Group Name:</label><br> <input type="text" id="group_name" name="group_name" required><br><br> <label for="group_description">Group Description:</label><br> <textarea id="group_description" name="group_description" required></textarea><br><br> <label for="members_list">Add Members:</label><br> <input type="text" id="search-input" placeholder="Search by name..."> <div class="scrollable-list"> <?php // List of members (you can fetch from database dynamically if needed) $members = display_all_members($conn); foreach ($members as $member) { echo '<div class="scrollable-list-item">'; echo '<a href="#" class="member-link" data-user_id="' . htmlspecialchars($member['user_id']) . '" data-user_name="' . htmlspecialchars($member['user_name']) . '">' . htmlspecialchars($member['user_name']) . ', ' . htmlspecialchars($member['user_email']) . '</a>'; echo '</div>'; } ?> </div> <br> <div class="selected-options"> <h3>Selected Members:</h3> <div id="selected-members-info"> <p>No members selected.</p> </div> <input type="hidden" name="selected_members" id="selected-members-hidden" value=""> </div> <br><br> <label for="group_image">Group Image URL:</label><br> <input type="text" id="group_image" name="group_image"><br><br> <input type="submit" value="Create Group"> </form> </div> <div class="chat-message"> </div> </main> <footer class="py-2 bg-light"> <div class="container-fluid"> <div class="text-muted text-right small">© <?= date('Y') ?>, Knobly Consulting</div> </div> </footer> </div> </div> <ul id="context-menu" class="context-menu"> <li class="delete-group"><a href="#">Delete Group</a></li> <li class="exit-group"><a href="#">Exit Group</a></li> </ul> </body> <script> function searchMembers() { var searchItem = $('#searchMem'); $.ajax({ url: 'memberSearch.php', method: 'POST', data: { item: searchItem }, success: function(response) { $('.scrollable-list').html() = ''; $('.scrollable-list').html(response); }, error: function(xhr, status, error) { // Handle errors console.error(xhr.responseText); } }); } function showCreateGroup() { $('.create-chat').show(); $('.chat-message').hide(); $('.panelContent').hide(); } function showGroupContent(user_id, group_id, user_name) { $('.create-chat').hide(); $('.chat-message').show(); $('.panelContent').hide(); console.log(user_id); console.log(group_id); console.log(user_name); $.ajax({ url: 'group.php', method: 'POST', data: { group_id: group_id, user_id: user_id, user_name: user_name }, success: function(response) { // Handle the response $('.chat-message').html(response); }, error: function(xhr, status, error) { // Handle errors console.error(xhr.responseText); } }); } function sendMessage($group_id, $user_id, $user_name) { var messageText = $('#message-input').val().trim(); var group_id = $group_id; var user_id = $user_id; var user_name = $user_name; var current_utc_timestamp = new Date(); console.log(current_utc_timestamp); console.log(current_utc_timestamp.toLocaleString()); console.log(messageText); console.log(current_utc_timestamp); // Convert to ISO string in the format YYYY-MM-DD HH:mm:ss var posted_on_sql = current_utc_timestamp.toISOString().replace('T', ' ').replace(/\.\d+Z$/, ''); var posted_on = current_utc_timestamp.toLocaleString(); if (messageText === '') { return; } var $chatBox = $('#chat-box'); var $messageElement = $('<div></div>'); var messageHtml = `<div class='incoming'> <div class="incoming-text">${messageText}</div> <div class="nameWithTime" style="display: flex; column-gap: 5px;"> <div class="Sendername">${user_name}</div> <div class="dateWithTime">${posted_on}</div> </div> </div>`; $chatBox.append(messageHtml); $('#message-input').val('').focus(); // Scroll to bottom of chat box $chatBox.scrollTop($chatBox.prop("scrollHeight")); console.log('test'); $.ajax({ url: 'sendreview.php', method: 'POST', data: { group_id: group_id, userid: user_id, message: messageText, posted_on: posted_on_sql }, success: function(response) { // Handle the response // alert('Message sent successfully!'); console.log(response); // Log response to console }, error: function(xhr, status, error) { // Handle errors console.error(xhr.responseText); } }); } function deleteGroup(groupId) { if (confirm("Are you sure you want to delete this group?")) { $.ajax({ url: 'delete_group.php', type: 'POST', data: { group_id: groupId }, success: function(data) { console.log(data); }, error: function(xhr, status, error, ) { console.error('Error deleting group:', error); } }); } } function exitgroup(userid, groupId) { if (confirm("Are you sure you want to exit the group?")) { $.ajax({ url: 'exit_group.php', type: 'POST', data: { user_id: userid, group_id: groupId }, success: function(data) { console.log(data); }, error: function(xhr, status, error, ) { console.error('Error exiting group:', error); } }); } } // Function to update selected members display function updateSelectedMembersInfo() { const selectedMemberNames = $('.member-link.selected').map(function() { return $(this).data('user_name'); }).get(); $('#selected-members-info').html(selectedMemberNames.length > 0 ? selectedMemberNames.map(member => '<p>' + member + '</p>').join('') : '<p>No members selected.</p>' ); // Update hidden input with selected member IDs const selectedMembersIds = $('.member-link.selected').map(function() { return $(this).data('user_id'); }).get(); $('#selected-members-hidden').val(selectedMembersIds.join(',')); } $(document).ready(function() { // Initialize context menu on .group-link anchors $('.group-item .group-link').contextmenu(function(e) { // Prevent default right-click context menu e.preventDefault(); // Hide any previous context menus $('.context-menu').hide(); // Show context menu at mouse position var contextMenu = $('#context-menu'); contextMenu.css({ display: 'block', left: e.pageX, top: e.pageY }); // Store the group item ID contextMenu.data('group-id', $(this).parent().attr('id')); }); // Click handler for context menu items $('#context-menu').on('click', '.delete-group', function(e) { e.preventDefault(); // Prevent the default link behavior var groupId = $('#context-menu').data('group-id').replace('group_', ''); deleteGroup(groupId); }); $('#context-menu').on('click', '.exit-group', function(e) { e.preventDefault(); // Prevent the default link behavior var userid = <?php echo $user_id ?>; var groupId = $('#context-menu').data('group-id').replace('group_', ''); exitgroup(userid, groupId); // Handle exit group action (if needed) // alert('Exit Group clicked'); }); // Click handler to hide context menu on document click $(document).on('click', function() { $('.context-menu').hide(); }); // Function to handle input change $('#search-input').on('input', function() { var searchText = $(this).val().trim().toLowerCase(); // Get input value and normalize // Iterate over each div with class scrollable-list-item $('div.scrollable-list-item').each(function() { var memberName = $(this).find('a.member-link').text().trim().toLowerCase(); // Get member name // Check if member name contains the search text if (memberName.includes(searchText)) { $(this).show(); // Show the div if it matches } else { $(this).hide(); // Hide the div if it does not match } }); }); // Click handler for member links $('.member-link').on('click', function(event) { event.preventDefault(); $(this).toggleClass('selected'); updateSelectedMembersInfo(); }); // Submit handler for create group form $('#create-group-form').on('submit', function(event) { var json_data = $('#selected-members-hidden').val(); event.preventDefault(); // Prevent default form submission // Submit the form programmatically this.submit(); // This refers to the form element }); // Click handler for selected members info (to remove selection) $('#selected-members-info').on('click', 'p', function(event) { event.preventDefault(); const selectedMember = $(this).text().trim(); $('.member-link').each(function() { if ($(this).data('user_name') === selectedMember) { $(this).removeClass('selected'); return false; // Exit the loop once found } }); updateSelectedMembersInfo(); // Update display and hidden input }); }); </script> </html>