pdo->query("DELETE FROM ttrss_error_log");
}
private function log_viewer(int $page, int $severity) {
$errno_values = [];
switch ($severity) {
case E_USER_ERROR:
$errno_values = [ E_ERROR, E_USER_ERROR, E_PARSE ];
break;
case E_USER_WARNING:
$errno_values = [ E_ERROR, E_USER_ERROR, E_PARSE, E_WARNING, E_USER_WARNING, E_DEPRECATED, E_USER_DEPRECATED ];
break;
}
if (count($errno_values) > 0) {
$errno_qmarks = arr_qmarks($errno_values);
$errno_filter_qpart = "errno IN ($errno_qmarks)";
} else {
$errno_filter_qpart = "true";
}
$limit = $this->log_page_limit;
$offset = $limit * $page;
$sth = $this->pdo->prepare("SELECT
COUNT(id) AS total_pages
FROM
ttrss_error_log
WHERE
$errno_filter_qpart");
$sth->execute($errno_values);
if ($res = $sth->fetch()) {
$total_pages = (int)($res["total_pages"] / $limit);
} else {
$total_pages = 0;
}
print "
";
print "
";
print "
".__('Refresh')." ";
print "
".__('<<')." ";
print "
".T_sprintf('Page %d of %d', $page+1, $total_pages+1)." ";
$next_page_disabled = $page >= $total_pages ? "disabled" : "";
print "
".__('>>')." ";
print "
".__('Clear')." ";
print "
";
print __("Severity:") . " ";
print_select_hash("severity", $severity,
[
E_USER_ERROR => __("Errors"),
E_USER_WARNING => __("Warnings"),
E_USER_NOTICE => __("Everything")
], 'dojoType="fox.form.Select" onchange="Helpers.EventLog.refresh()"');
print "
"; # pull-right
print "
"; # toolbar
print '
';
print "
";
print "
".__("Error")."
".__("Filename")."
".__("Message")."
".__("User")."
".__("Date")."
";
$sth = $this->pdo->prepare("SELECT
errno, errstr, filename, lineno, created_at, login, context
FROM
ttrss_error_log LEFT JOIN ttrss_users ON (owner_uid = ttrss_users.id)
WHERE
$errno_filter_qpart
ORDER BY
ttrss_error_log.id DESC
LIMIT $limit OFFSET $offset");
$sth->execute($errno_values);
while ($line = $sth->fetch()) {
print "";
foreach ($line as $k => $v) {
$line[$k] = htmlspecialchars($v);
}
print "" . Logger::$errornames[$line["errno"]] . " (" . $line["errno"] . ") ";
print "" . $line["filename"] . ":" . $line["lineno"] . " ";
print "" . $line["errstr"] . "\n" . $line["context"] . " ";
print "" . $line["login"] . " ";
print "" .
TimeHelper::make_local_datetime($line["created_at"], false) . " ";
print " ";
}
print "
";
}
function index() {
$severity = (int) ($_REQUEST["severity"] ?? E_USER_WARNING);
$page = (int) ($_REQUEST["page"] ?? 0);
print "
";
print "
";
if (LOG_DESTINATION == "sql") {
$this->log_viewer($page, $severity);
} else {
print_notice("Please set LOG_DESTINATION to 'sql' in config.php to enable database logging.");
}
print "
"; # content pane
print "
"; # container
print "
"; # accordion pane
print "
";
ob_start();
phpinfo();
$info = ob_get_contents();
ob_end_clean();
print "
";
print preg_replace( '%^.*(.*).*$%ms','$1', $info);
print "
";
print "
"; # accordion pane
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB, "prefSystem");
print "
"; #container
}
}