CrazyStat im Admin-Bereich ohne Grafiken
CrazyStat im Admin-Bereich ohne Grafiken
Nach der Umstellung auf PHP 8.x musste auch bei CrazyStat einiges gefummelt werden.
Mit viel Forenhilfe läuft das jetzt soweit auch und der Counter zählt, aaaber
Wenn ich jetzt die Statistiken aufrufe, dann wird mir nur die Tabelle mit den Hits angezeigt und ein Teil des Inhaltes der Tabelle Besucher/Wochentag
Alle anderen Tabellen werden nicht mehr angezeigt.
Gib es eine Chance CrazyStat auch unter php8x an dieser Stelle wieder zum laufen zu bringen?
Debug wirft mir diesen Fehler aus:
XH-DEPRECATED: Function initvar() is deprecated
..../abfc-online.de/cmsimple_xh/plugins/crazystat/admin.php:38
Mit viel Forenhilfe läuft das jetzt soweit auch und der Counter zählt, aaaber
Wenn ich jetzt die Statistiken aufrufe, dann wird mir nur die Tabelle mit den Hits angezeigt und ein Teil des Inhaltes der Tabelle Besucher/Wochentag
Alle anderen Tabellen werden nicht mehr angezeigt.
Gib es eine Chance CrazyStat auch unter php8x an dieser Stelle wieder zum laufen zu bringen?
Debug wirft mir diesen Fehler aus:
XH-DEPRECATED: Function initvar() is deprecated
..../abfc-online.de/cmsimple_xh/plugins/crazystat/admin.php:38
Re: CrazyStat im Admin-Bereich ohne Grafiken
Schau ich mir baldigst noch mal genauer an. Ist eigentlich ein nettes Skript, das halt doch ziemlich ins Alter gekommen ist. Versprechen kann ich nichts.
Christoph M. Becker – Plugins for CMSimple_XH
Re: CrazyStat im Admin-Bereich ohne Grafiken
Das wäre echt super, denn als Alternative zu Google und Co ist man mit diesem PLUGIN einigermaßen DSGVO-konform gewesen.
Re: CrazyStat im Admin-Bereich ohne Grafiken
Den kannst du getrost ignorieren; die Funktion wird nicht sobald verschwinden, und da gibt es vermutlich viel ärgere Probleme mit Crazystat.
Ich habe die Bilder zur Anzeige bringen können mit folgendem Patch: https://gist.github.com/cmb69/ccd5cf30c ... eab9874330.
Also in analyze.php die rote Zeile durch die grüne ersetzen (ohne das +/- am Zeilenanfang). Und in module_out.php muss wieder die rote Zeile durch die beiden grünen ersetzt werden (wieder ohne +/-).
Darüber hinaus muss man sich für anonymize_ip() in stat.php was einfallen lassen, da das nicht für IPv6 funktioniert. Ich meine, das wurde hier im Forum bereits besprochen, kann es aber nicht finden. Im schlimmsten Fall könnte man wohl _php_filter_validate_ipv6 nach PHP portieren und anpassen. Vielleicht geht es auch einfacher.
Und vermutlich sind da noch jede Menge weiterer Dinge zu überarbeiten. Gebt bitte Bescheid, wenn noch was auffällt.
Christoph M. Becker – Plugins for CMSimple_XH
Re: CrazyStat im Admin-Bereich ohne Grafiken
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“ Ludwig's XH-Templates for MultiPage & OnePage
Re: CrazyStat im Admin-Bereich ohne Grafiken
Vielen Dank, Ludwig! Eine echte Lösung ist da leider nicht zu finden; das Crazystat-Forum wurde wohl in der Zwischenzeit geschlossen, und auf das Ticket wurde auch nicht geantwortet, und das Repo ist mittlerweile archiviert. Sieht so aus als ob die Upstream-Entwicklung eingestellt wurde.
Immerhin fand ich dort einen PR von mir; im wesentlichen der gleiche Fix, den ich weiter oben vorgeschlagen habe (hab aber nicht bei mir selbst abgeschrieben).
Also schau ich mal selbst; inet_pton sollte helfen.
Christoph M. Becker – Plugins for CMSimple_XH
Re: CrazyStat im Admin-Bereich ohne Grafiken
Ja, tut es. Man sollte also in plugins/crazystat/stat/src/stat.php die Funktion anonymize_ip() durch folgende (grob getestete) ersetzen:
Code: Select all
function anonymize_ip($ip, $resolution, $colors) {
global $config_salt_str;
$bin = inet_pton($ip);
if ($bin === false) {
// if the IP can't be parsed for whatever reason, we just use its MD5 hash;
// that should be sufficient for anonymization purposes, and also for
// recognizing a certain user
$bin = md5($ip, true);
}
$octets = array_map('ord', str_split($bin));
// keep the first octets (2 for IPv4, 6 for IPv6)
$ip_a = implode(".", array_slice($octets, 0, count($octets) === 16 ? 6 : 2)) . ".";
// calculate user characteristic numbers
$user_ua = ord_all($_SERVER['HTTP_USER_AGENT']);
$user_res = ord_all($resolution);
$user_colors = ord_all($colors);
$user_salt = ord_all($config_salt_str);
$user_ip = ord_all(md5($config_salt_str . $ip));
// 3rd/7th octet: sum up user characteristics
$ip_a .= ($user_ip + $user_colors) % 256 . '.';
// 4th/8th octet: sum up user characteristics
$ip_a .= ($user_ip + $user_ua + $user_res + $user_salt) % 256;
// add an asterisk to make clear the IP has been anonymized
$ip_a .= '*';
return $ip_a;
}
PS: die obige Routine ist für IPv4 mapped IPv6 Adressen ungeeignet (da wird einfach zu viel anonymisiert). Ich weiß allerdings nicht, ob diese in der Praxis relevant sind.
Christoph M. Becker – Plugins for CMSimple_XH
Re: CrazyStat im Admin-Bereich ohne Grafiken
Hallo,
als langjähriger Nutzer von XH und Crazystat habe ich den Bugfix ausprobiert da bei mir eine Umstellung von PHP 7.4 auf PHP 8.x ansteht.
mit den Änderungen in den beiden Dateien trat eine leichte Verbesserung ein.
Es werden jetzt alle Fenster in der Statistik angezeigt.
In den Fenstern werden in den Spalten "Anzahl", "Anteil" und "Datei" die realen Werte nicht mehr angezeigt, da die Einträge in den Fenstern immer der gleiche Wert / Anzahl angezeigt wird.
Getestet mit 7.4, 8.0, 8.1, 8.2
Viele Grüße
Hartmut
als langjähriger Nutzer von XH und Crazystat habe ich den Bugfix ausprobiert da bei mir eine Umstellung von PHP 7.4 auf PHP 8.x ansteht.
Fazit.cmb wrote: ↑Sat Jan 21, 2023 10:59 amIch habe die Bilder zur Anzeige bringen können mit folgendem Patch: https://gist.github.com/cmb69/ccd5cf30c ... eab9874330.
Also in analyze.php die rote Zeile durch die grüne ersetzen (ohne das +/- am Zeilenanfang). Und in module_out.php muss wieder die rote Zeile durch die beiden grünen ersetzt werden (wieder ohne +/-).
....
mit den Änderungen in den beiden Dateien trat eine leichte Verbesserung ein.
Es werden jetzt alle Fenster in der Statistik angezeigt.
In den Fenstern werden in den Spalten "Anzahl", "Anteil" und "Datei" die realen Werte nicht mehr angezeigt, da die Einträge in den Fenstern immer der gleiche Wert / Anzahl angezeigt wird.
Getestet mit 7.4, 8.0, 8.1, 8.2
Viele Grüße
Hartmut
Re: CrazyStat im Admin-Bereich ohne Grafiken
Danke fürs Testen, Hartmut! Und ja, die each() Ersetzung ist mir tüchtig misslungen (ich habe diese Funktion allerdings auch nie genutzt). Da müsste noch eine Zeile einfügt werden:
Code: Select all
stat/src/module_out.php | 1 +
1 file changed, 1 insertion(+)
diff --git a/stat/src/module_out.php b/stat/src/module_out.php
index 43c248e..b1ec0d9 100644
--- a/stat/src/module_out.php
+++ b/stat/src/module_out.php
@@ -632,6 +632,7 @@ function module_out($modul) {
$separate = false;
$eintrag = key($module_werte);
$anzahl = current($module_werte);
+ next($module_werte);
if (!isset($config_stat_limit[$modul])
|| ($_SESSION['set_' . $modul . '_all']
|| $i < $config_stat_limit[$modul])) {
Passt es dann bei dir? (Beim Debuggen hatte ich jede Menge Fehler unter PHP 8.2, aber die treten möglicherweise in der Praxis nicht auf; ich musste halt manuelle Änderungen in Counter-Dateien vornehmen.)
Christoph M. Becker – Plugins for CMSimple_XH
Re: CrazyStat im Admin-Bereich ohne Grafiken
Hallo Christoph,cmb wrote: ↑Sun Jan 22, 2023 2:29 pm...
Danke fürs Testen, Hartmut! Und ja, die each() Ersetzung ist mir tüchtig misslungen (ich habe diese Funktion allerdings auch nie genutzt). Da müsste noch eine Zeile einfügt werden:
...
Passt es dann bei dir? (Beim Debuggen hatte ich jede Menge Fehler unter PHP 8.2, aber die treten möglicherweise in der Praxis nicht auf; ich musste halt manuelle Änderungen in Counter-Dateien vornehmen.)
ja, jetzt sehen die Statistikfenster unter den 4 PHP Versionen gut aus.
Beim Wechsel zwischen verschiedenen Darstellungsmodies der Anzeige ist mir nichts ungewöhnliches aufgefallen.
Wegen IPv6 habe ich mal ins Logfile geschaut und auf den "1. Blick" keine vollständigen IPs gesehen (anonymisierte IPs ist seit Jahren aktiviert).
Viele Grüße
Hartmut