diff --git a/app/classes/log.php b/app/classes/log.php
index 63a5ce0..ae87210 100644
--- a/app/classes/log.php
+++ b/app/classes/log.php
@@ -30,16 +30,26 @@ class Log {
}
// read logs
- public function readLog($user_id, $scope='user') {
- $sql = 'SELECT * FROM logs';
+ public function readLog($user_id, $scope, $offset=0, $items_per_page='') {
if ($scope === 'user') {
- $sql .= ' WHERE user_id = :user_id';
+ $sql = 'SELECT * FROM logs WHERE user_id = :user_id ORDER BY time DESC';
+ if ($items_per_page) {
+ $items_per_page = (int)$items_per_page;
+ $sql .= ' LIMIT ' . $offset . ',' . $items_per_page;
+ }
+
$query = $this->db->prepare($sql);
$query->execute([
':user_id' => $user_id,
]);
}
if ($scope === 'system') {
+ $sql = 'SELECT * FROM logs ORDER BY time DESC';
+ if ($items_per_page) {
+ $items_per_page = (int)$items_per_page;
+ $sql .= ' LIMIT ' . $offset . ',' . $items_per_page;
+ }
+
$query = $this->db->prepare($sql);
$query->execute();
}
diff --git a/app/pages/login.php b/app/pages/login.php
index 9c64b89..076465e 100644
--- a/app/pages/login.php
+++ b/app/pages/login.php
@@ -8,8 +8,8 @@ try {
// connect to database
$dbWeb = connectDB($config);
- require '../app/classes/user.php';
- $userObject = new User($dbWeb);
+// require '../app/classes/user.php';
+// $userObject = new User($dbWeb);
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
$username = $_POST['username'];
@@ -44,7 +44,7 @@ try {
// redirect to index
$_SESSION['notice'] = "Login successful";
$user_id = $userObject->getUserId($username)[0]['id'];
- $logObject->insertLog($user_id, "User \"$username\" logged in.", 'user');
+ $logObject->insertLog($user_id, "Login: User \"$username\" logged in.", 'user');
header('Location: index.php');
exit();
@@ -52,7 +52,7 @@ try {
} else {
$_SESSION['error'] = "Login failed.";
$user_id = $userObject->getUserId($username)[0]['id'];
- $logObject->insertLog($user_id, "Failed login attempt for user \"$username\".", 'user');
+ $logObject->insertLog($user_id, "Login: Failed login attempt for user \"$username\".", 'user');
header('Location: index.php');
exit();
}
diff --git a/app/pages/logs.php b/app/pages/logs.php
index a853292..a7828f4 100644
--- a/app/pages/logs.php
+++ b/app/pages/logs.php
@@ -7,22 +7,45 @@
// specify time range
include '../app/helpers/time_range.php';
+// pagination variables
+$items_per_page = 15;
+$browse_page = $_REQUEST['p'] ?? 1;
+$browse_page = (int)$browse_page;
+$offset = ($browse_page -1) * $items_per_page;
+
+// user or system
+$scope = 'user';
+
// prepare the result
-$search = $logObject->readLog($user_id, 'user');
+$search = $logObject->readLog($user_id, $scope, $offset, $items_per_page);
+$search_all = $logObject->readLog($user_id, $scope);
if (!empty($search)) {
+ // we get total items and number of pages
+ $item_count = count($search_all);
+ $page_count = ceil($item_count / $items_per_page);
+
$logs = array();
$logs['records'] = array();
foreach ($search as $item) {
- extract($item);
- $log_record = array(
- // assign title to the field in the array record
- 'user ID' => $user_id,
- 'time' => $time,
- 'log message' => $message
- );
+ // 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'],
+ 'time' => $item['time'],
+ 'log message' => $item['message']
+ );
+ }
+
// populate the result array
array_push($logs['records'], $log_record);
}
@@ -35,7 +58,7 @@ $widget['name'] = 'Logs';
$username = $userObject->getUserDetails($user_id)[0]['username'];
$widget['title'] = "Log events for user \"$username\"";
$widget['filter'] = true;
-if (!empty($conferences['records'])) {
+if (!empty($logs['records'])) {
$widget['full'] = true;
$widget['table_headers'] = array_keys($logs['records'][0]);
$widget['table_records'] = $logs['records'];
diff --git a/app/pages/register.php b/app/pages/register.php
index e23345b..9c56b0b 100644
--- a/app/pages/register.php
+++ b/app/pages/register.php
@@ -3,7 +3,7 @@
// registration is allowed, go on
if ($config['registration_enabled'] === true) {
- require '../app/classes/user.php';
+// require '../app/classes/user.php';
unset($error);
try {
@@ -11,7 +11,7 @@ if ($config['registration_enabled'] === true) {
// connect to database
$dbWeb = connectDB($config);
- $userObject = new User($dbWeb);
+// $userObject = new User($dbWeb);
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
$username = $_POST['username'];
diff --git a/app/templates/logs-list.php b/app/templates/logs-list.php
index fe32faf..b88ba2c 100644
--- a/app/templates/logs-list.php
+++ b/app/templates/logs-list.php
@@ -24,7 +24,7 @@
- = htmlspecialchars($header) ?> |
+
diff --git a/public_html/index.php b/public_html/index.php
index a504b72..36bbd8d 100644
--- a/public_html/index.php
+++ b/public_html/index.php
@@ -123,15 +123,23 @@ $firstPlatform = $platformsAll[0]['id'];
$platform_id = $_REQUEST['platform'] ?? $firstPlatform;
$platformDetails = $platformObject->getPlatformDetails($platform_id);
+// init user functions
+require '../app/classes/user.php';
+include '../app/helpers/profile.php';
+$userObject = new User($dbWeb);
+
// logout is a special case, as we can't use session vars for notices
if ($page == 'logout') {
+ $notice = "You were logged out.
You can log in again.";
+ $user_id = $userObject->getUserId($currentUser)[0]['id'];
+ $logObject->insertLog($user_id, "Logout: User \"$currentUser\" logged out.", 'user');
+
// clean up session
session_unset();
session_destroy();
setcookie('username', "", time() - 100, $config['folder'], $config['domain'], isset($_SERVER['HTTPS']), true);
- $notice = "You were logged out.
You can log in again.";
include '../app/templates/page-header.php';
include '../app/templates/page-menu.php';
include '../app/templates/block-message.php';
@@ -141,9 +149,6 @@ if ($page == 'logout') {
// if user is logged in, we need user details and rights
if (isset($currentUser)) {
- require '../app/classes/user.php';
- include '../app/helpers/profile.php';
- $userObject = new User($dbWeb);
$user_id = $userObject->getUserId($currentUser)[0]['id'];
$userDetails = $userObject->getUserDetails($user_id);
$userRights = $userObject->getUserRights($user_id);
diff --git a/public_html/static/all.css b/public_html/static/all.css
index 18429d9..c14e5b5 100644
--- a/public_html/static/all.css
+++ b/public_html/static/all.css
@@ -240,3 +240,7 @@
margin-left: 5px;
margin-right: 5px;
}
+
+.th-time {
+ width: 200px;
+}