includes/dashboard/global.php
<?php
declare(strict_types=1);
/*
|--------------------------------------------------------------------------
| Global
|--------------------------------------------------------------------------
*/
$global = [];
$globalTotal = [
'unique_visitors' => (int)($totalSqlite['unique_visitors'] ?? 0) + (int)($archivesTotal['unique_visitors'] ?? 0),
'visits' => (int)($totalSqlite['visits'] ?? 0) + (int)($archivesTotal['visits'] ?? 0),
'pageviews' => (int)($totalSqlite['pageviews'] ?? 0) + (int)($archivesTotal['pageviews'] ?? 0),
'bots' => (int)($totalSqlite['bots'] ?? 0) + (int)($archivesTotal['bots'] ?? 0),
];
$globalCountries = [];
if ($showCountries) {
$globalCountriesRaw = fetchAll($db, '
SELECT country, SUM(views) AS views
FROM countries_daily
GROUP BY country
ORDER BY views DESC
');
foreach ($globalCountriesRaw as $row) {
$country = (string)($row['country'] ?? '');
if ($country === '') {
continue;
}
$globalCountries[$country] = [
'country' => $country,
'views' => (int)($row['views'] ?? 0),
];
}
foreach (archiveGroupedViews('countries', 'country') as $row) {
$country = (string)($row['country'] ?? '');
if ($country === '') {
continue;
}
$globalCountries[$country] ??= [
'country' => $country,
'views' => 0,
];
$globalCountries[$country]['views'] += (int)($row['views'] ?? 0);
}
$globalCountries = array_values($globalCountries);
usort($globalCountries, fn($a, $b) => $b['views'] <=> $a['views']);
$globalTotal['countries'] = count($globalCountries);
}
$globalReferrersRaw = fetchAll($db, '
SELECT referrer, SUM(views) AS views
FROM referrers_daily
GROUP BY referrer
ORDER BY views DESC
');
foreach (archiveGroupedViews('referrers', 'referrer') as $row) {
$globalReferrersRaw[] = $row;
}
$globalSearchEnginesGrouped = [];
$globalReferrersGrouped = [];
foreach ($globalReferrersRaw as $row) {
$referrer = (string)($row['referrer'] ?? '');
if ($referrer === '') {
continue;
}
$realCategory = referrerCategory($referrer);
if (
referrerBlocked($referrer) ||
$realCategory === BRIVACIA_CATEGORY_BLOCKED
) {
$canonical = BRIVACIA_BLOCKED;
$label = t('ui.blocked');
$category = BRIVACIA_CATEGORY_BLOCKED;
} elseif (strcasecmp($referrer, BRIVACIA_UNKNOWN) === 0) {
$canonical = BRIVACIA_UNKNOWN;
$label = t('ui.unknown');
$category = BRIVACIA_CATEGORY_REFERRER;
} else {
$canonical = referrerCanonical($referrer);
$label = referrerLabel($referrer);
$category = $realCategory;
}
if ($category === BRIVACIA_CATEGORY_SEARCH) {
$target =& $globalSearchEnginesGrouped;
} else {
$target =& $globalReferrersGrouped;
}
if (!isset($target[$canonical])) {
$target[$canonical] = [
'referrer' => $canonical,
'label' => $label,
'category' => $category,
'views' => 0,
];
}
$target[$canonical]['views'] += (int)($row['views'] ?? 0);
unset($target);
}
$globalSearchEngines = array_values($globalSearchEnginesGrouped);
$globalReferrers = array_values($globalReferrersGrouped);
usort($globalSearchEngines, fn($a, $b) => $b['views'] <=> $a['views']);
usort($globalReferrers, fn($a, $b) => $b['views'] <=> $a['views']);
$globalTotal['search_engines'] = count($globalSearchEngines);
$globalTotal['referrers'] = count($globalReferrers);