| 
									
										
										
										
											2025-04-25 07:02:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         <!-- log events --> | 
					
						
							|  |  |  |         <div class="container-fluid mt-4"> | 
					
						
							|  |  |  |             <div class="row mb-4"> | 
					
						
							|  |  |  |                 <div class="col-md-6"> | 
					
						
							|  |  |  |                     <h2 class="mb-0">Log events</h2> | 
					
						
							|  |  |  |                     <small>events recorded in the platform</small> | 
					
						
							|  |  |  |                 </div> | 
					
						
							|  |  |  |             </div> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             <!-- Tabs navigation --> | 
					
						
							|  |  |  |             <ul class="nav nav-tabs mb-4"> | 
					
						
							|  |  |  |                 <li class="nav-item"> | 
					
						
							|  |  |  |                     <a class="nav-link <?= $scope === 'user' ? 'active' : '' ?>" href="?page=logs&tab=user"> | 
					
						
							|  |  |  |                         Logs for current user | 
					
						
							|  |  |  |                     </a> | 
					
						
							|  |  |  |                 </li> | 
					
						
							|  |  |  | <?php if ($has_system_access) { ?>
 | 
					
						
							|  |  |  |                 <li class="nav-item"> | 
					
						
							|  |  |  |                     <a class="nav-link <?= $scope === 'system' ? 'active' : '' ?>" href="?page=logs&tab=system"> | 
					
						
							|  |  |  |                         Logs for all users | 
					
						
							|  |  |  |                     </a> | 
					
						
							|  |  |  |                 </li> | 
					
						
							|  |  |  | <?php } ?>
 | 
					
						
							|  |  |  |             </ul> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             <!-- logs filter --> | 
					
						
							|  |  |  |             <div class="card mb-3"> | 
					
						
							|  |  |  |                 <div class="card-body"> | 
					
						
							|  |  |  |                     <form method="GET" action="" class="row g-3 align-items-end"> | 
					
						
							|  |  |  |                         <input type="hidden" name="page" value="logs"> | 
					
						
							|  |  |  |                         <input type="hidden" name="tab" value="<?= htmlspecialchars($scope) ?>"> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                         <div class="col-md-3"> | 
					
						
							|  |  |  |                             <label for="from_time" class="form-label">From date</label> | 
					
						
							|  |  |  |                             <input type="date" class="form-control" id="from_time" name="from_time" value="<?= htmlspecialchars($_REQUEST['from_time'] ?? '') ?>"> | 
					
						
							|  |  |  |                         </div> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                         <div class="col-md-3"> | 
					
						
							|  |  |  |                             <label for="until_time" class="form-label">Until date</label> | 
					
						
							|  |  |  |                             <input type="date" class="form-control" id="until_time" name="until_time" value="<?= htmlspecialchars($_REQUEST['until_time'] ?? '') ?>"> | 
					
						
							|  |  |  |                         </div> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <?php if ($scope === 'system') { ?>
 | 
					
						
							|  |  |  |                         <div class="col-md-2"> | 
					
						
							|  |  |  |                             <label for="id" class="form-label">User ID</label> | 
					
						
							|  |  |  |                             <input type="text" class="form-control" id="id" name="id" value="<?= htmlspecialchars($_REQUEST['id'] ?? '') ?>" placeholder="Enter user ID"> | 
					
						
							|  |  |  |                         </div> | 
					
						
							|  |  |  | <?php } ?>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                         <div class="col-md"> | 
					
						
							|  |  |  |                             <label for="message" class="form-label">Message</label> | 
					
						
							|  |  |  |                             <input type="text" class="form-control" id="message" name="message" value="<?= htmlspecialchars($_REQUEST['message'] ?? '') ?>" placeholder="Search in log messages"> | 
					
						
							|  |  |  |                         </div> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                         <div class="col-md-auto"> | 
					
						
							|  |  |  |                             <button type="submit" class="btn btn-primary me-2"> | 
					
						
							|  |  |  |                                 <i class="fas fa-search me-2"></i>Search | 
					
						
							|  |  |  |                             </button> | 
					
						
							|  |  |  |                             <a href="?page=logs&tab=<?= htmlspecialchars($scope) ?>" class="btn btn-outline-secondary"> | 
					
						
							|  |  |  |                                 <i class="fas fa-times me-2"></i>Clear | 
					
						
							|  |  |  |                             </a> | 
					
						
							|  |  |  |                         </div> | 
					
						
							|  |  |  |                     </form> | 
					
						
							|  |  |  |                 </div> | 
					
						
							|  |  |  |             </div> | 
					
						
							|  |  |  |             <!-- /logs filter --> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             <!-- logs --> | 
					
						
							|  |  |  | <?php if ($time_range_specified) { ?>
 | 
					
						
							|  |  |  |             <div class="alert alert-info m-3"> | 
					
						
							|  |  |  |                 <i class="fas fa-calendar-alt me-2"></i>Time period: <strong><?= htmlspecialchars($from_time) ?> - <?= htmlspecialchars($until_time) ?></strong>
 | 
					
						
							|  |  |  |             </div> | 
					
						
							|  |  |  | <?php } ?>
 | 
					
						
							|  |  |  |             <div class="mb-5"> | 
					
						
							|  |  |  | <?php if (!empty($logs['records'])) { ?>
 | 
					
						
							|  |  |  |                 <div class="table-responsive"> | 
					
						
							| 
									
										
										
										
											2025-04-27 18:20:14 +00:00
										 |  |  |                     <table class="table table-hover align-middle mb-0" style="width: 100%;"> | 
					
						
							| 
									
										
										
										
											2025-04-25 07:02:49 +00:00
										 |  |  |                         <thead class="table-light"> | 
					
						
							|  |  |  |                             <tr> | 
					
						
							|  |  |  | <?php if ($scope === 'system') { ?>
 | 
					
						
							|  |  |  |                                 <th>Username (id)</th> | 
					
						
							|  |  |  | <?php } ?>
 | 
					
						
							| 
									
										
										
										
											2025-04-27 18:20:14 +00:00
										 |  |  |                                 <th style="white-space: nowrap;">Time</th> | 
					
						
							|  |  |  |                                 <th style="white-space: nowrap;">Log level</th> | 
					
						
							| 
									
										
										
										
											2025-04-25 07:02:49 +00:00
										 |  |  |                                 <th>Log message</th> | 
					
						
							|  |  |  |                             </tr> | 
					
						
							|  |  |  |                         </thead> | 
					
						
							|  |  |  |                         <tbody> | 
					
						
							|  |  |  | <?php     foreach ($logs['records'] as $row) { ?>
 | 
					
						
							|  |  |  |                             <tr> | 
					
						
							|  |  |  | <?php         if ($scope === 'system') { ?>
 | 
					
						
							| 
									
										
										
										
											2025-04-27 18:20:14 +00:00
										 |  |  |                                 <td style="white-space: nowrap;"><?= $row['userID'] ? '<strong>' . htmlspecialchars($row['username'] . " ({$row['userID']})") . '</strong>' : '<span class="text-muted font-weight-normal small">SYSTEM</span>' ?></td>
 | 
					
						
							| 
									
										
										
										
											2025-04-25 07:02:49 +00:00
										 |  |  | <?php         } ?>
 | 
					
						
							| 
									
										
										
										
											2025-04-27 18:20:14 +00:00
										 |  |  |                                 <td style="white-space: nowrap;"><span class="text-muted"><?= date('d M Y H:i', strtotime($row['time'])) ?></span></td>
 | 
					
						
							| 
									
										
										
										
											2025-04-27 18:38:24 +00:00
										 |  |  |                                 <td style="white-space: nowrap;"><span class="<?= getLogLevelClass($row['log level']) ?>"><?= htmlspecialchars($row['log level']) ?></span></td>
 | 
					
						
							| 
									
										
										
										
											2025-04-27 18:20:14 +00:00
										 |  |  |                                 <td style="width: 100%; word-break: break-word;"><?= htmlspecialchars($row['log message']) ?></td>
 | 
					
						
							| 
									
										
										
										
											2025-04-25 07:02:49 +00:00
										 |  |  |                             </tr> | 
					
						
							|  |  |  | <?php     } ?>
 | 
					
						
							|  |  |  |                         </tbody> | 
					
						
							|  |  |  |                     </table> | 
					
						
							|  |  |  |                 </div> | 
					
						
							|  |  |  | <?php include '../app/templates/pagination.php'; ?>
 | 
					
						
							|  |  |  | <?php } else { ?>
 | 
					
						
							|  |  |  |                 <div class="alert alert-info m-3"> | 
					
						
							|  |  |  |                     <i class="fas fa-info-circle me-2"></i>No log entries found for the specified criteria. | 
					
						
							|  |  |  |                 </div> | 
					
						
							|  |  |  | <?php } ?>
 | 
					
						
							|  |  |  |             </div> | 
					
						
							|  |  |  |         </div> | 
					
						
							|  |  |  |         <!-- /log events --> |