1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
<?php
/**
* Compact overview for awstats multi-domain HTML web statistics
*
* Lists all years + months for each domain.
* Put it as index.php in the base output directory of "buildstatic.sh",
* "/var/cache/awstats/".
* Can also be symlinked into the domain subdirectories.
*
* @author Christian Weiske <cweiske+awstats-overview@cweiske.de>
*/
$hiddenDomains = [
'old-ahso4',
];
$domains = glob('*', GLOB_ONLYDIR);
$domains = array_filter(
$domains,
function ($domain) use ($hiddenDomains) {
return !in_array($domain, $hiddenDomains);
}
);
$singleDomainView = array_reduce(
$domains,
function ($carry, $domain) {
return $carry && strlen($domain) == 4 && ctype_digit($domain);
},
true
);
if ($singleDomainView) {
//we are in a domain directory
$domains = [basename(getcwd())];
chdir('..');
}
$struct = [];
foreach ($domains as $domain) {
$dyears = glob($domain . '/*', GLOB_ONLYDIR);
foreach ($dyears as $dyear) {
$year = basename($dyear);
$dymonths = glob($dyear . '/*', GLOB_ONLYDIR | GLOB_MARK);
foreach ($dymonths as $num => $dymonth) {
$month = basename($dymonth);
if ($num == 0 && $month != '01') {
foreach (range(1, $month - 1) as $dummy) {
$struct[$domain][$year][str_pad($dummy, 2, '0', STR_PAD_LEFT)] = null;
}
}
$struct[$domain][$year][$month] = $dymonth;
}
}
}
$title = 'awstats overview';
if ($singleDomainView) {
$title .= ': ' . array_key_first($struct);
}
?>
<!DOCTYPE html>
<html>
<head>
<title><?= $title ?></title>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<?php if ($singleDomainView): ?>
<base href="../"/>
<?php endif; ?>
<style type="text/css">
div.domains {
display: flex;
flex-wrap: wrap;
gap: 1em;
}
dl {
display: grid;
grid-template-columns: max-content auto;
}
dt {
grid-column-start: 1;
}
dd {
grid-column-start: 2;
margin-left: 1em;
}
ul {
padding-left: 0;
}
ul > li {
display: inline;
}
li.disabled {
color: #DDD;
}
</style>
</head>
<body>
<h1><?= $title ?></h1>
<div class="domains">
<?php foreach ($struct as $domain => $years): ?>
<div class="domain" id="<?= $domain ?>">
<?php if (!$singleDomainView): ?>
<h2><a href="<?= $domain ?>"><?= $domain ?></a></h2>
<?php endif; ?>
<dl>
<?php foreach ($years as $year => $months): ?>
<dt><?= $year ?></dt>
<dd>
<ul>
<?php foreach ($months as $month => $path): ?>
<?php if ($path === null): ?>
<li class="disabled"><?= $month ?></li>
<?php else: ?>
<li><a href="<?= $path ?>"><?= $month ?></a></li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
</dd>
<?php endforeach; ?>
</dl>
</div>
<?php endforeach; ?>
</div>
</body>
</html>
|