Problem: Beim Verlassen eines Clans wird die Benutzergruppe nicht verlassen

    • Fixed

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Problem: Beim Verlassen eines Clans wird die Benutzergruppe nicht verlassen

      Hallo,

      wir betrieben ein WoltLab Suite™ 3.1.6 pl 1 mit ClanVerwaltungsplugin v2.1.3.
      Wenn wir einen Clan anlegen und ein User diesem Beitritt, bekommt er automatisch die Verknüpfte Benutzergruppe. Soweit, so gut.
      Wenn ein User den Clan allerdings wieder verlässt, behält er die Benutzergruppe.

      Wir haben folgende Tests durchgeführt, um Effekte mit anderen Plugins auszuschliessen:
      - Neue, saubere WSC/WBB Installation ohne Datenimport
      - Clanverwaltung installiert (aus Pluginstore)
      - Clanverwaltung eine Benutzergruppe erstellen lassen
      - Eine Benutzergruppe manuell erstellt und mit einem Clan nachträglich verknüpft.

      In jedem Fall funktioniert das Aufnehmen in die Benutzergruppe, aber nie das entfernen.
      Wenn man allerdings eine existierende Benutzergruppe mit einem Spiel verknüpft, werden alle nicht im Clan enthaltenen Benutzer aus der Benutzergruppe entfernt.
      Allerdings scheint das Verlassen eines Clans diese Funktion nicht auszulösen.

      Wir bitten um Unterstützung.

      Vielen Dank und Beste Grüße
      Sebastian
    • Sieht in der DB so aus:

      SQL-Query

      1. mysql> select * from wcf1_user_to_group where groupID=7; select * from clan1_user_to_group;
      2. +--------+---------+
      3. | userID | groupID |
      4. +--------+---------+
      5. | 1 | 7 |
      6. +--------+---------+
      7. 1 row in set (0,00 sec)
      8. +---------+--------+--------+-------------+
      9. | groupID | clanID | userID | enteredTime |
      10. +---------+--------+--------+-------------+
      11. | 4 | 2 | 1 | 1546050837 |
      12. +---------+--------+--------+-------------+
      13. 1 row in set (0,00 sec)
      14. mysql> select * from wcf1_user_to_group where groupID=7; select * from clan1_user_to_group;
      15. +--------+---------+
      16. | userID | groupID |
      17. +--------+---------+
      18. | 1 | 7 |
      19. | 2 | 7 |
      20. +--------+---------+
      21. 2 rows in set (0,00 sec)
      22. +---------+--------+--------+-------------+
      23. | groupID | clanID | userID | enteredTime |
      24. +---------+--------+--------+-------------+
      25. | 4 | 2 | 1 | 1546050837 |
      26. | 5 | 2 | 2 | 1546121240 |
      27. +---------+--------+--------+-------------+
      28. 2 rows in set (0,00 sec)
      29. mysql> select * from wcf1_user_to_group where groupID=7; select * from clan1_user_to_group;
      30. +--------+---------+
      31. | userID | groupID |
      32. +--------+---------+
      33. | 1 | 7 |
      34. | 2 | 7 |
      35. +--------+---------+
      36. 2 rows in set (0,00 sec)
      37. +---------+--------+--------+-------------+
      38. | groupID | clanID | userID | enteredTime |
      39. +---------+--------+--------+-------------+
      40. | 4 | 2 | 1 | 1546050837 |
      41. +---------+--------+--------+-------------+
      42. 1 row in set (0,00 sec)
      Display All
      Erste Abfrage=Nur der Ersteller in der Gruppe
      Zweite Abfrage=Testuser ist Clan gejoined
      Dritte Abfage=Testuser hat Clan verlassen.

      die clan1_user_to_group wird korrekt geupdated, die wcf1_user_to_group nicht.
    • So, 3 Stunden debugging später hab ich das Problem gefunden, denke ich.

      Der Nullvergleich in lib/data/clan/ClanEditor.class.php Z65 soll der Logik nach vermutlich eher ein NOT NULLvergleich sein

      Source Code

      1. # diff /tmp/ClanEditor.class.php lib/data/clan/ClanEditor.class.php
      2. 65c65
      3. < if (CLAN_ASSOCIATE_USERGROUP && $cache['infos']->groupID == null) {
      4. ---
      5. > if (CLAN_ASSOCIATE_USERGROUP && $cache['infos']->groupID != null) {

      So funktioniert es jedenfalls.
      Bitte trotzdem um Validierung @Marcel Beckers ;)

      Grüße
      Sebastian