- Affected Version
- WoltLab Suite 5.4
- Affected App
- WoltLab Suite Core
Gem. dem Beitrag hier RE: Aktualisierung der Benutzerränge klappt erst beim zweiten mal und dem Wunsch von Tim habe ich hier mal ein Beispiel. Wenn ich dieses Beispiel normal im ACP ausführe oder z.B. mit einem Cronjob funktioniert auch alles.
Ich habe mal den folgenden Snipped in die TeamPage.class.php in den readData Bereich gepackt um es möglichst einfach zu reproduzieren.
$userGroupIDs = WCF::getUser()->getGroupIDs(true);
$neededGroupIDs = \array_merge($userGroupIDs, [7]);
if(!empty($neededGroupIDs)) {
$userAction = new UserAction([WCF::getUser()->userID], 'addToGroups', [
'groups' => \array_unique($neededGroupIDs),
'deleteOldGroups' => true,
'addDefaultGroups' => false,
]);
$userAction->executeAction();
}
exit();
Display More
Wenn ich dies ausführe, ist mein Benutzer zusätzlich in der groupID 7, und hat auch den aktuellen Benutzerrank. Wenn ich nun das exit(); entferne und die Team Seite fertig geladen wird, ist mein Benutzer zwar immer noch in der neuen Gruppe, aber der Benutzerrank ist wieder der alte. Beim überprüfen der UserStorage ist mir dann aufgefallen das userRank wieder überschrieben wurde. Ein reset dessen würde das korrekte Ergebnis herbeiführen.
Eine alleinige anzeige Aktualisieren setzt dies aber auch nicht zurück