prepare('SELECT key, value FROM project_settings WHERE project_id = ?'); $pStmt->execute([$pid]); $pSettings = []; foreach ($pStmt->fetchAll() as $row) $pSettings[$row['key']] = $row['value']; ?>
Analytics
Loading…
Server-log import setup

Imports page-view data from the web server's access log. No JS, no pixel, no client-side change to the managed site. Set the path of the access log below; HackmanCMS tails new lines on each import. Asset hits, non-GETs and obvious bots are dropped.

Last import: ( rows total). No imports yet.

Continuous tracking — install once as a user that can read the log:
*/5 * * * * /usr/bin/php /opt/hackmancms/bin/import-site-logs.php

Retention: raw events for 90 days, hourly rollups for 365 days, daily rollups forever. Visitor IPs are hashed with a daily-rotating salt so visitors look like new visitors across days — "uniques over a multi-day window" is therefore the sum of per-day unique counts. Last rollup: .