Rev 1445 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1445 | Rev 1448 | ||
---|---|---|---|
Line 51... | Line 51... | ||
51 | } |
51 | } |
52 | 52 | ||
53 | $page = $parts[1] ?? null; |
53 | $page = $parts[1] ?? null; |
54 | if ($page == null) { |
54 | if ($page == null) { |
55 | $res = OIDplus::db()->query("select max(id) as cnt from ###log"); |
55 | $res = OIDplus::db()->query("select max(id) as cnt from ###log"); |
56 | $page = floor($res->fetch_array()['cnt'] / 50) + 1; |
56 | $page = floor($res->fetch_array()['cnt'] / 500) + 1; |
57 | } |
57 | } |
58 | $min = ($page-1) * 50 + 1; |
58 | $min = ($page-1) * 500 + 1; |
59 | $max = ($page ) * 50; |
59 | $max = ($page ) * 500; |
60 | 60 | ||
61 | $res = OIDplus::db()->query("select id, unix_ts, addr, event from ###log ". |
61 | $res = OIDplus::db()->query("select id, unix_ts, addr, event from ###log ". |
62 | "where id >= ? and id <= ? ". |
62 | "where id >= ? and id <= ? ". |
63 | "order by unix_ts desc", [$min, $max]); |
63 | "order by unix_ts desc", [$min, $max]); |
64 | 64 | ||
Line 67... | Line 67... | ||
67 | $out['text'] .= '<p>'; |
67 | $out['text'] .= '<p>'; |
68 | if (!is_null($parts[1] ?? null)) $out['text'] .= '<a '.OIDplus::gui()->link($parts[0].'$'.($page+1)).'>Newer log entries</a> -- '; |
68 | if (!is_null($parts[1] ?? null)) $out['text'] .= '<a '.OIDplus::gui()->link($parts[0].'$'.($page+1)).'>Newer log entries</a> -- '; |
69 | $out['text'] .= '<a '.OIDplus::gui()->link($parts[0].'$'.($page-1)).'>Older log entries</a>'; |
69 | $out['text'] .= '<a '.OIDplus::gui()->link($parts[0].'$'.($page-1)).'>Older log entries</a>'; |
70 | $out['text'] .= '<p>'; |
70 | $out['text'] .= '<p>'; |
71 | 71 | ||
- | 72 | $out['text'] .= '<div class="container box"><div id="suboid_table" class="table-responsive">'; |
|
- | 73 | $out['text'] .= '<table class="table table-bordered table-striped">'; |
|
- | 74 | $out['text'] .= '<thead>'; |
|
- | 75 | $out['text'] .= '<tr><th>'._L('Time').'</th><th>'._L('Event').'</th><th>'._L('Affected users').'</th><th>'._L('Affected objects').'</th><th>'._L('IP Address').'</th></tr>'; |
|
- | 76 | $out['text'] .= '</thead>'; |
|
- | 77 | $out['text'] .= '<tbody>'; |
|
- | 78 | ||
72 | if ($res->any()) { |
79 | if ($res->any()) { |
73 | $out['text'] .= '<pre>'; |
- | |
74 | while ($row = $res->fetch_array()) { |
80 | while ($row = $res->fetch_array()) { |
75 | $severity = 0; |
81 | $severity = 0; |
76 | $contains_messages_for_me = false; |
82 | $contains_messages_for_me = false; |
77 | // --- |
83 | // --- |
78 | $users = array(); |
84 | $users = array(); |
Line 83... | Line 89... | ||
83 | if ($row2['username'] == 'admin') { |
89 | if ($row2['username'] == 'admin') { |
84 | $severity = $row2['severity']; |
90 | $severity = $row2['severity']; |
85 | $contains_messages_for_me = true; |
91 | $contains_messages_for_me = true; |
86 | } |
92 | } |
87 | } |
93 | } |
88 | $users = count($users) > 0 ? '; '._L('affected users: %1',implode(', ',$users)) : ''; |
94 | $users = implode("\n",$users); |
89 | // --- |
95 | // --- |
90 | $objects = array(); |
96 | $objects = array(); |
91 | $res2 = OIDplus::db()->query("select object, severity from ###log_object ". |
97 | $res2 = OIDplus::db()->query("select object, severity from ###log_object ". |
92 | "where log_id = ?", array((int)$row['id'])); |
98 | "where log_id = ?", array((int)$row['id'])); |
93 | while ($row2 = $res2->fetch_array()) { |
99 | while ($row2 = $res2->fetch_array()) { |
94 | $objects[] = $row2['object']; |
100 | $objects[] = $row2['object']; |
95 | } |
101 | } |
96 | $objects = count($objects) > 0 ? '; '._L('affected objects: %1',implode(', ',$objects)) : ''; |
102 | $objects = implode("\n",$objects); |
97 | // --- |
103 | // --- |
98 | $addr = empty($row['addr']) ? _L('no address') : $row['addr']; |
104 | $addr = empty($row['addr']) ? _L('no address') : $row['addr']; |
99 | // --- |
105 | // --- |
- | 106 | ||
- | 107 | $a = '<span class="severity_'.$severity.'">'; |
|
- | 108 | $b = '</span>'; |
|
- | 109 | if ($contains_messages_for_me) $a = '<b>'.$a; |
|
100 | if ($contains_messages_for_me) $out['text'] .= '<b>'; |
110 | if ($contains_messages_for_me) $b = $b.'</b>'; |
- | 111 | $out['text'] .= '<tr>'; |
|
101 | $out['text'] .= '<span class="severity_'.$severity.'">' . date('Y-m-d H:i:s', (int)$row['unix_ts']) . ': ' . htmlentities($row["event"])." (" . htmlentities($addr.$users.$objects) . ")</span>\n"; |
112 | $out['text'] .= '<td>'.$a.date('Y-m-d H:i:s', (int)$row['unix_ts']).$b.'</td>'; |
102 | if ($contains_messages_for_me) $out['text'] .= '</b>'; |
113 | $out['text'] .= '<td>'.$a.htmlentities($row['event']).$b.'</td>'; |
- | 114 | $out['text'] .= '<td>'.$a.nl2br(htmlentities($users)).$b.'</td>'; |
|
- | 115 | $out['text'] .= '<td>'.$a.nl2br(htmlentities($objects)).$b.'</td>'; |
|
- | 116 | $out['text'] .= '<td>'.$a.htmlentities($addr).$b.'</td>'; |
|
- | 117 | $out['text'] .= '<tr>'; |
|
- | 118 | ||
103 | } |
119 | } |
104 | $out['text'] .= '</pre>'; |
- | |
105 | } else { |
120 | } else { |
106 | $out['text'] .= '<p>'._L('There are no log entries on this page').'</p>'; |
121 | $out['text'] .= '<tr><td colspan="5">'._L('There are no log entries on this page').'</td></tr>'; |
107 | } |
122 | } |
108 | 123 | ||
- | 124 | $out['text'] .= '</tbody>'; |
|
- | 125 | $out['text'] .= '</table>'; |
|
109 | // TODO: List logs in a table instead of a <pre> text |
126 | $out['text'] .= '</div></div>'; |
- | 127 | ||
110 | } |
128 | } |
111 | } |
129 | } |
112 | 130 | ||
113 | /** |
131 | /** |
114 | * @param array $json |
132 | * @param array $json |