ICH HAB´S!!!
Folgendes:
Mann muss, um die Logs korrekt angezeigt zu bekommen, den
Mandanten ausgewählt haben dessen Logs man sehen will...
Nochmal an einem Beispiel:
Angenommen man hat in einer Contenido Installation 3 Mandanten A (Sprache 1), B(Sprache 2), C(Sprache 3).
Meldet man sich z.B. als sysadmin (volle Rechte - Alle Mandanten) am System an so befindet man sich standardmässig im Mandant A (Sprache 1).
Will man nun die Logs von Mandant B einsehen kann man kann man sich direkt unter Administration>Logs die Logs von Mandant A ansehen. ABER man erhält keine Kategorien bzw. Artikelnamen angezeigt!
Wechselt man in den Mandant B(Sprache 2) so werden Kategorien bzw. Artikelnamen angezeigt problemlos dargestellt.
Warum das ganze:
Um die Logs anuzueigen wird die Datei includes/include.logs.php ausgeführt.
Hier wird ab Zeile 212 folgender Code ausgeführt:
Code: Alles auswählen
$structureName = $structureclass->getStructureName($structureclass->getStructureIDForCatArt($db->f("idcatart")),$lang);
$artName = $artclass->getArtName($artclass->getArtIDForCatArt($db->f("idcatart")),$lang);
Die Variable
$lang enthält die ID der
aktuell gewählten Sprache! - Und
nicht die SprachID des unter "Mandant"
gewählten Mandanten.
Folglich wird den Methoden getStructureName (class.structure.php) und getArtName(class.art.php) ein falscher Parameter übergeben. Im genannten Beispiel also Sprache 1(Mandant A) obwohl wir die Ergebnisse von Sprache 2 (Mandant B) sehen wollen.
Die Folge ist eine leere Rückgabe derselben...
Lange Rede kurzer Bugfix:
Geändert wird die Datei:
includes/include.logs.php:
Das SQL- Statement ab Zeile 168
Alt:Code: Alles auswählen
$sql = 'SELECT
idlog,
user_id,
idaction,
idclient,
idcatart,
logtimestamp
FROM
'. $cfg["tab"]["actionlog"] . '
WHERE
user_id '.$userquery.' AND
idaction LIKE "'.$idqaction.'" AND
logtimestamp > "'.$fromdate.'" AND
logtimestamp < "'.$todate.'" AND
idclient LIKE "'.$idqclient.'"
ORDER BY logtimestamp DESC '
. $limitsql;
Neu:Code: Alles auswählen
$sql = 'SELECT
idlog,
user_id,
idaction,
idlang,
idclient,
idcatart,
logtimestamp
FROM
'. $cfg["tab"]["actionlog"] . '
WHERE
user_id '.$userquery.' AND
idaction LIKE "'.$idqaction.'" AND
logtimestamp > "'.$fromdate.'" AND
logtimestamp < "'.$todate.'" AND
idclient LIKE "'.$idqclient.'"
ORDER BY logtimestamp DESC '
. $limitsql;
Zeile 212
Alt:
Code: Alles auswählen
$structureName = $structureclass->getStructureName($structureclass->getStructureIDForCatArt($db->f("idcatart")),$lang);
$artName = $artclass->getArtName($artclass->getArtIDForCatArt($db->f("idcatart")),$lang);
Neu
Code: Alles auswählen
$structureName = $structureclass->getStructureName($structureclass->getStructureIDForCatArt($db->f("idcatart")),$db->f("idlang"));
$artName = $artclass->getArtName($artclass->getArtIDForCatArt($db->f("idcatart")),$db->f("idlang"));
Das war´s auch schon!
Ich hoffe das ich an alles gedacht habe.
Viel Spaß damit!
Gruß
Uli