hasRight($user_id, 'superuser') || $userObject->hasRight($user_id, 'view app logs')); // Get current page for pagination $currentPage = $_REQUEST['page_num'] ?? 1; $currentPage = (int)$currentPage; // Get selected tab $selected_tab = $_REQUEST['tab'] ?? 'user'; if ($selected_tab === 'system' && !$has_system_access) { $selected_tab = 'user'; } // Set scope based on selected tab $scope = ($selected_tab === 'system') ? 'system' : 'user'; // specify time range include '../app/helpers/time_range.php'; // Prepare search filters $filters = []; if (isset($_REQUEST['from_time']) && !empty($_REQUEST['from_time'])) { $filters['from_time'] = $_REQUEST['from_time']; } if (isset($_REQUEST['until_time']) && !empty($_REQUEST['until_time'])) { $filters['until_time'] = $_REQUEST['until_time']; } if (isset($_REQUEST['message']) && !empty($_REQUEST['message'])) { $filters['message'] = $_REQUEST['message']; } if ($scope === 'system' && isset($_REQUEST['id']) && !empty($_REQUEST['id'])) { $filters['id'] = $_REQUEST['id']; } // pagination variables $items_per_page = 15; $offset = ($currentPage - 1) * $items_per_page; // Build params for pagination $params = ''; if (!empty($_REQUEST['from_time'])) { $params .= '&from_time=' . urlencode($_REQUEST['from_time']); } if (!empty($_REQUEST['until_time'])) { $params .= '&until_time=' . urlencode($_REQUEST['until_time']); } if (!empty($_REQUEST['message'])) { $params .= '&message=' . urlencode($_REQUEST['message']); } if (!empty($_REQUEST['id'])) { $params .= '&id=' . urlencode($_REQUEST['id']); } if (isset($_REQUEST['tab'])) { $params .= '&tab=' . urlencode($_REQUEST['tab']); } // prepare the result $search = $logObject->readLog($user_id, $scope, $offset, $items_per_page, $filters); $search_all = $logObject->readLog($user_id, $scope, '', '', $filters); if (!empty($search)) { // we get total items and number of pages $item_count = count($search_all); $totalPages = ceil($item_count / $items_per_page); $logs = array(); $logs['records'] = array(); foreach ($search as $item) { // when we show only user's logs, omit user_id column if ($scope === 'user') { $log_record = array( // assign title to the field in the array record 'time' => $item['time'], 'log message' => $item['message'] ); } else { $log_record = array( // assign title to the field in the array record 'userID' => $item['user_id'], 'username' => $item['username'], 'time' => $item['time'], 'log message' => $item['message'] ); } // populate the result array array_push($logs['records'], $log_record); } } // prepare the widget $widget['full'] = false; $widget['name'] = 'Logs'; $username = $userObject->getUserDetails($user_id)[0]['username']; $widget['title'] = "Log events"; $widget['filter'] = true; $widget['scope'] = $scope; $widget['has_system_access'] = $has_system_access; if (!empty($logs['records'])) { $widget['full'] = true; $widget['table_records'] = $logs['records']; } $widget['pagination'] = true; // display the widget include '../app/templates/logs-list.php'; ?>