streams/Code/Module/Admin/Logs.php

102 lines
3.1 KiB
PHP
Raw Normal View History

<?php
2022-02-16 04:08:28 +00:00
namespace Code\Module\Admin;
2022-02-16 04:08:28 +00:00
use Code\Render\Theme;
2022-02-12 20:43:29 +00:00
2021-12-02 23:02:31 +00:00
class Logs
{
/**
* @brief POST handler for logs admin page.
*
*/
public function post()
{
if (x($_POST, 'page_logs')) {
check_form_security_token_redirectOnErr('/admin/logs', 'admin_logs');
$logfile = ((x($_POST, 'logfile')) ? notags(trim($_POST['logfile'])) : '');
$debugging = ((x($_POST, 'debugging')) ? true : false);
$loglevel = ((x($_POST, 'loglevel')) ? intval(trim($_POST['loglevel'])) : 0);
set_config('system', 'logfile', $logfile);
set_config('system', 'debugging', $debugging);
set_config('system', 'loglevel', $loglevel);
}
info(t('Log settings updated.'));
goaway(z_root() . '/admin/logs');
}
/**
* @brief Logs admin page.
*
* @return string
*/
public function get()
{
2022-09-02 23:45:58 +00:00
$log_choices = [
2021-12-02 23:02:31 +00:00
LOGGER_NORMAL => 'Normal',
LOGGER_TRACE => 'Trace',
LOGGER_DEBUG => 'Debug',
LOGGER_DATA => 'Data',
LOGGER_ALL => 'All'
2022-09-02 23:45:58 +00:00
];
2021-12-02 23:02:31 +00:00
2022-02-12 20:43:29 +00:00
$t = Theme::get_template('admin_logs.tpl');
2021-12-02 23:02:31 +00:00
$f = get_config('system', 'logfile');
$data = '';
if (!file_exists($f)) {
$data = t("Error trying to open <strong>$f</strong> log file.\r\n<br/>Check to see if file $f exist and is
readable.");
2021-12-02 23:02:31 +00:00
} else {
$fp = fopen($f, 'r');
if (!$fp) {
$data = t("Couldn't open <strong>$f</strong> log file.\r\n<br/>Check to see if file $f is readable.");
} else {
$fstat = fstat($fp);
$size = $fstat['size'];
if ($size != 0) {
2021-12-03 03:01:39 +00:00
if ($size > 5000000 || $size < 0) {
2021-12-02 23:02:31 +00:00
$size = 5000000;
2021-12-03 03:01:39 +00:00
}
2021-12-02 23:02:31 +00:00
$seek = fseek($fp, 0 - $size, SEEK_END);
if ($seek === 0) {
$data = escape_tags(fread($fp, $size));
2021-12-03 03:01:39 +00:00
while (!feof($fp)) {
2021-12-02 23:02:31 +00:00
$data .= escape_tags(fread($fp, 4096));
2021-12-03 03:01:39 +00:00
}
2021-12-02 23:02:31 +00:00
}
}
fclose($fp);
}
}
2022-09-02 23:45:58 +00:00
return replace_macros($t, [
2021-12-02 23:02:31 +00:00
'$title' => t('Administration'),
'$page' => t('Logs'),
'$submit' => t('Submit'),
'$clear' => t('Clear'),
'$data' => $data,
'$baseurl' => z_root(),
'$logname' => get_config('system', 'logfile'),
// name, label, value, help string, extra data...
2022-09-02 23:45:58 +00:00
'$debugging' => ['debugging', t('Debugging'), get_config('system', 'debugging'), ""],
'$logfile' => ['logfile', t('Log file'), get_config('system', 'logfile'), t("Must be writable by web server. Relative to your top-level webserver directory.")],
'$loglevel' => ['loglevel', t('Log level'), get_config('system', 'loglevel'), "", $log_choices],
2021-12-02 23:02:31 +00:00
'$form_security_token' => get_form_security_token('admin_logs'),
2022-09-02 23:45:58 +00:00
]);
2021-12-02 23:02:31 +00:00
}
2021-12-03 03:01:39 +00:00
}