Trophy wird bei einem User angezeigt obwohl er diese nicht hat?

  • Affected Version
    WoltLab Suite 5.2

    Hallo,


    Mir ist eben bei einem User aufgefallen dass bei Ihm eine Trophäe angezeigt wird die er gar nicht besitzt.

    Wie ist das Möglich? Cronjobs sind alle korrekt durchgelaufen, ihm wurde auch länger keine zugefügt oder entzogen (siehe Screenshots).



    Noch was ist mir aufgefallen, andere wiederrum haben zB eine weitere automatisch zugeordnete Trophäe erhalten jedoch wird diese nicht automatisch im Profil angezeigt obwohl Maximale Anzahl an besonderen Trophäen auf 3 steht. Die müsste dann doch automatisch angezeigt werden wenn der Benutzer weniger als 3 Trophäen besitzt?


    Dies liegt wahrscheinlich daran wenn eine automatisch noch vergeben wird und nachfolgende eine entzogen wird, so bleibt die andere wohl nicht automatisch aktiv? Wenn ja sollte das geändert werden.


    EDIT: Hängt das eventuell mit diesem Bug zusammen?:

    https://github.com/WoltLab/WCF…fb8cbdc6e795c182d7b044ee6


    Wenn ja wird das mit dem nächsten Update und Cronjob dann richtig gestellt?

    ┌П┐(◉_◉)┌П┐

    Edited 5 times, last by TeRRible__KHONS ().

    • Official Post

    Hallo,


    das Problem behebt sich mit der nächsten Trophäen-Änderung bei dem Benutzer. Alternativ kann einfach der User-Storage gelöscht werden, mit folgendem SQL-Befehl:


    SQL
    DELETE FROM wcf1_user_storage;


    Grüße


    Josh

  • Also einfach den query so ausführen ohne Nebeneffekte für andere?


    Weil die nächste trophy bei dem User kann dauern.

    ┌П┐(◉_◉)┌П┐

  • Hab ich eben gemacht ist aber alles unverändert.

    Auch ein manueller Start des Trophy-Cronjobs hat nichts gebracht.

    ┌П┐(◉_◉)┌П┐

  • Bei dem betroffenen Benutzer ist nach dem leeren dieser Tabelle dieser Eintrag vorhanden, der betroffene hat 2 Trophäen, im Profil und Sidebar der Threads werden aber 3 angezeigt:


    Cache vielleicht?

    ┌П┐(◉_◉)┌П┐

  • Wie lasse ich in phpmyadmin hier den ganzen Inhalt anzeigen?


    EDIT:

    SQL
    CREATE TABLE `wcf1_user_special_trophy` (
     `trophyID` int(10) NOT NULL,
     `userID` int(10) NOT NULL,
     UNIQUE KEY `trophyID` (`trophyID`,`userID`),
     KEY `fcf553ce30ea9219207c4a8a35674893_fk` (`userID`),
     CONSTRAINT `e9b8bd5473c575e6e24cd3bf40da2547_fk` FOREIGN KEY (`trophyID`) REFERENCES `wcf1_trophy` (`trophyID`) ON DELETE CASCADE,
     CONSTRAINT `fcf553ce30ea9219207c4a8a35674893_fk` FOREIGN KEY (`userID`) REFERENCES `wcf1_user` (`userID`) ON DELETE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

    ┌П┐(◉_◉)┌П┐

    • Official Post

    Hallo,


    mea culpa, ich hatte dir nur eine SQL-Abfrage reingeworfen. Führe folgende Queries bitte nochmal aus, damit ist das Problem dann behoben:


    SQL
    DELETE FROM wcf1_user_special_trophy WHERE NOT EXISTS (SELECT * FROM wcf1_user_trophy WHERE userID = wcf1_user_special_trophy.userID AND trophyID = wcf1_user_special_trophy.trophyID);
    DELETE FROM wcf1_user_storage; 


    PS: Ich kann nicht immer direkt antworten, auch wenn ich die Beiträge manchmal schon lese.

  • Danke funktioniert :)


    Bei einigen anderen Mitgliedern ist es zB andersrum:


    Auch hier nach dem Cronjob keine änderung.

    ┌П┐(◉_◉)┌П┐

  • Der User hat 3 Trophäen erhalten, es werden aber nur 2 im Profil und in der Sidebar angezeigt, eigentlich müssten alle 3 angezeigt werden (ist so eingestellt im ACP), aber das funktionierte anscheinend ja auch nicht durch den Bug vorher.


    Muss ich jetzt die Benutzer aktualisieren dass es richtig angezeigt wird?

    ┌П┐(◉_◉)┌П┐

    • Official Post

    Hallo,


    nein, die Trophäen werden nicht nachträglich mehr als „Speziell“ markiert. Es gibt hier keinen sinnvollen weg, um diese Trophäen automatisch als „Speziell“ zu markieren. Das Problem ist, dass man nicht genau bestimmen kann, ob der Benutzer diese Trophäe ggf. manuell abgewählt hatte, da es dafür keinen Indikator gibt. Der Benutzer müsste hier manuell die Trophäe anwählen.


    Grüße


    Josh

  • Okay alles klar dann belasse ich das jetzt einfach so, in Zukunft werden aber alle Trophäen korrekt ausgegeben und als Speziell markiert?

    ┌П┐(◉_◉)┌П┐

Participate now!

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