Fehlerhafte Avatar-URL

  • Affected Version
    WoltLab Suite 5.3
    Affected App
    WoltLab Suite Core

    Im Rahmen meines Avatar-Plugins (Link siehe unten) ist mir etwas eigenartiges aufgefallen.

    Obwohl UserAvatarAction::fetchRemoteAvatar() den richtigen User und die Korrekte URL https://cravatar.eu/helmavatar/kev2k2/192.png bekommt, kommt am Ende mit $__wcf->getUserProfileHandler()->getAvatar()->getImageTag(32) folgende Avatar-URL im Header raus: /images/avatars//0-.

    Jetzt bin ich mal im Debugger das Ganze durchgegangen. Er geht bei UserProfile::getAvatar() in die Zeile $this->avatar = new UserAvatar(null, $this->getDecoratedObject()->data); - das AvatarObjekt wird also mit den Daten vom Profil initialisiert. Ich bin mir nicht sicher, ob das so gewollt ist.

    Zum Reproduzieren kann der Nickname kev2k2 verwendet werden.

    Darkwood.Design
    October 26, 2023 at 12:07 PM
  • Hallo,

    das Problem liegt daran, dass die Daten des aktuellen Nutzers vor dem Download des Avatars bereits geladen wurden und somit unveränderlich sind. In deinem konkreten Fall kannst du das Problem nach dem Download durch ein explizites Neuladen des Profils beseitigen, genau dafür existiert der folgende Aufruf:

    PHP
    \wcf\system\user\UserProfileHandler::getInstance()->reloadUserProfile();

    Alexander Ebert
    Senior Developer WoltLab® GmbH

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!