logs.php
См. документацию.
1 <?php
2 
3 /**
4  * @file
5  * @brief выборка логов действий
6  */
7 
8 isset($user) or require $_SERVER['DOCUMENT_ROOT'] . '/page/404.php';
9 
10 header("Content-type: application/json");
11 
12 $table_name = basename($request);
13 
14 $columns = ['id', 'user_id', 'request', 'text', 'date_created', 'ip'];
15 
16 $order_column = isset($_GET['order'][0]['column']) && isset($columns[$_GET['order'][0]['column']]) ? $columns[$_GET['order'][0]['column']] : $columns[0];
17 $order_dir = isset($_GET['order'][0]['dir']) && $_GET['order'][0]['dir'] == 'asc' ? 'ASC' : 'DESC';
18 $start = abs(intval($_GET['start']));
19 $length = intval($_GET['length']);
20 
21 $query = "SELECT " . implode(', ', $columns) . " FROM `$table_name` ORDER BY `$order_column` $order_dir";
22 
23 $sth = $dbh->prepare($query);
24 $sth->execute();
25 $arr = $sth->fetchAll(PDO::FETCH_NUM);
26 
28 
29 if (!empty($_GET['search']['value'])) {
30  $searchable_columns = [];
31  $arr_filtered = [];
32  foreach ($_GET['columns'] as $key => $item) {
33  if ($item['searchable']) {
34  $searchable_columns[] = $key;
35  }
36  }
37 
38  if ($searchable_columns) {
39  foreach ($arr as $key => $item) {
40  $arr_search = array_intersect_key($item, $searchable_columns);
41  foreach ($arr_search as $word) {
42  if (mb_stripos(strip_tags($word), $_GET['search']['value']) !== false) {
43  $arr_filtered[] = $arr[$key];
44  continue 2;
45  }
46  }
47  }
48  }
49 }
50 
52 $hide_ip = !$user->access()->action(24);
53 
54 foreach ($response_arr as $key => $item) {
55  $response_arr[$key][1] = Wrong\Models\Users::find($item[1])->email . ' (ID: ' . $item[1] . ')';
56  $response_arr[$key][3] = '<pre class="log-show" style="max-width:1000px;white-space:normal;margin:0;display:none;-webkit-line-clamp: 1;-webkit-box-orient:vertical;overflow: hidden;text-overflow: ellipsis;">' . strip_tags($item[3]) . '</pre>';
57  if ($hide_ip) {
58  $response_arr[$key][5] = '******';
59  }
60 }
61 
62 $response = [];
63 $response['recordsTotal'] = count($arr);
64 $response['recordsFiltered'] = $response['recordsTotal'];
65 $length = $length == -1 ? $response['recordsTotal'] : $length;
66 $response['recordsFiltered'] = count($arr_filtered);
68 $response['draw'] = abs(intval($_GET['draw']));
69 if ($user->id == 1) {
70  $response['uptime'] = shell_exec('uptime');
71 }
72 
73 exit(json_encode($response, JSON_UNESCAPED_UNICODE));
$columns
Definition: logs.php:14
$order_column
Definition: logs.php:16
$start
Definition: logs.php:18
$arr_filtered
Definition: logs.php:27
$arr
Definition: logs.php:25
$table_name
Definition: logs.php:12
foreach($response_arr as $key=> $item) $response
Definition: logs.php:62
$hide_ip
Definition: logs.php:52
if(!empty($_GET['search']['value'])) $response_arr
Definition: logs.php:51
$order_dir
Definition: logs.php:17
$length
Definition: logs.php:19
$query
Definition: logs.php:21
$sth
Definition: logs.php:23
static find($value, $column='id', $table='')
Definition: Controller.php:31
$user
Definition: from-user.php:38
setcookie('FROM_UID', $uid, [ 'expires'=> time()+31536000, 'path'=> '/', 'domain'=> $_SERVER['HTTP_HOST'], 'secure'=> Wrong\Start\Env::$e->IS_SECURE, 'httponly'=> false, 'samesite'=> Wrong\Start\Env::$e->IS_SECURE ? 'None' :'Lax']) or setcookie('FROM_UID' $_SERVER['HTTP_HOST']
Definition: from-user.php:36
if(($dbh=Connect::getInstance(true) ->dbh) && $dbh->query("SHOW TABLES") ->fetchAll() && $dbh->query("SELECT COUNT(*) FROM `users`") ->fetchColumn()) if(!empty($_POST)) exit
Definition: install.php:198
catch(\Throwable $th) $request
Definition: session.php:28
$dbh
Definition: session.php:19