Benutzer in mehreren Gruppen mit UND statt ODER identifizieren?

Es ist einfach, Kategorien und Unterkategorien zu verwenden, damit Benutzer sie nach der „ODER“-Logik anzeigen können – d. h. wenn ein Benutzer zu Gruppe X oder Gruppe Y gehört, kann er die Kategorie oder Unterkategorie sehen.
Ist es möglich, die „UND“-Logik effektiv zu nutzen, sodass ein Benutzer sowohl zu Gruppe X ALS AUCH zu Gruppe Y gehören muss, um eine Kategorie/Unterkategorie sehen zu können?

Unser Anwendungsfall ist, dass wir drei Zugriffsebenen haben. Am einfachsten ist es, sie als Schüler des 1. Jahres, Schüler des 2. Jahres und Schüler des 3. Jahres zu betrachten. Das 1. Jahr kann nur Inhalte des 1. Jahres sehen, das 2. Jahr kann Inhalte des 1. und 2. Jahres sehen, das 3. Jahr kann alle Inhalte sehen. Das funktioniert hervorragend.
Wir möchten eine weitere Ebene hinzufügen, indem wir Benutzern mit Vertrauensstufe 3 frühzeitigen Zugang zu bestimmten Veranstaltungen und Ressourcen gewähren.
Ich habe zuerst versucht, dies zu erreichen, indem ich nicht gelistete Veranstaltungen in den verschiedenen Jahresstufen verwendet und Links zu diesen Veranstaltungen an Benutzer mit Vertrauensstufe 3 gesendet habe. Allerdings können auch alle Benutzer mit Benachrichtigungen, die so eingestellt sind, dass sie das 1. oder 2. oder 3. Jahr überwachen, diese Veranstaltungen sofort sehen, nicht nur die mit Vertrauensstufe 3.
Ein anderer Weg wäre, eine Kategorie namens „Belohnungen für Vertrauensstufe 3“ zu erstellen und Unterkategorien für das 1., 2. und 3. Jahr zu haben, aber es ist nicht möglich, Berechtigungen auf diese Weise einzuschränken; da das 1., 2. und 3. Jahr Sichtbarkeit über die Kategorie haben müssen, können wieder alle Benutzer dieser Gruppen (mit jedem Vertrauenslevel) in die Unterkategorien sehen.

Ein sehr umständlicher Weg wäre, Benutzer mit Vertrauensstufe 3 zu exportieren, dann Benutzer mit (zum Beispiel) dem 2. Jahr zu exportieren, sie in Excel zusammenzuführen, um Duplikate zu finden, und dann diese Duplikate in eine Gruppe namens „Vertrauensstufe 3 und 2. Jahr“ zu importieren. Das würde funktionieren, erfordert aber jedes Mal einen erheblichen manuellen Aufwand, und es ist eine Aktion, die wir regelmäßig durchführen möchten.

Gibt es andere Möglichkeiten, das gleiche Ergebnis zu erzielen? Könnte ein benutzerdefiniertes Plugin oder Skript zumindest den Export- und Importprozess automatisieren?

Vielen Dank im Voraus.

2 „Gefällt mir“

Das Erstellen einer neuen Gruppe, die die Benutzer der Zielgruppe mit Vertrauensstufe 3 enthält, ist der einzige Weg, den ich mir vorstellen kann, um dies zu erreichen. Discourse hat keine UND-Regel, die bei den Sicherheitseinstellungen für Kategorien verwendet werden kann. Eine ähnliche Frage ist ein paar Mal aufgetaucht, wie man eine Kategorienregel erstellt, die Mitglieder einer oder mehrerer Gruppen ausschließt.

Wenn das Data Explorer-Plugin auf Ihrer Website verfügbar ist, könnten Sie eine Data Explorer-Abfrage verwenden, die eine Liste aller Benutzer der Zielgruppe mit Vertrauensstufe 3 zurückgibt. Wenn Sie nicht mit einer riesigen Anzahl von Benutzern zu tun haben, sollten Sie in der Lage sein, die Benutzernamen, die von der Abfrage zurückgegeben werden, direkt in das Formular „Benutzer hinzufügen“ einer Gruppe zu kopieren und einzufügen. Discourse scheint das Hinzufügen von Benutzernamen, die bereits in einer Gruppe vorhanden sind, in dieses Formular zu handhaben. Wenn Sie die Abfrage also regelmäßig ausführen, sollten Sie die zurückgegebenen Benutzernamen einfach immer wieder in das Formular „Benutzer hinzufügen“ der Gruppe kopieren können. Beachten Sie, dass ich mir nicht sicher bin, wie viele Benutzernamen maximal in das Formular eingefügt werden können. Ich habe es gerade mit 80 Benutzern getestet und das funktioniert ohne Probleme. Wenn Sie versuchen, eine exakte Duplikatliste von Benutzern in das Formular „Benutzer hinzufügen“ einzufügen, gibt Discourse anscheinend einen Fehler zurück. Der Fehler kann jedoch ignoriert werden.

Hier ist die Abfrage, die ich damit getestet habe. Sie müssen den Gruppennamen angeben, zum Beispiel „year_2“, bevor Sie die Abfrage ausführen.

--[params]
-- string :group_name

SELECT u.username
FROM group_users gu
JOIN groups g ON g.id = gu.group_id
JOIN users u ON u.id = gu.user_id
WHERE g.name = :group_name
AND u.trust_level = 3

Es wäre möglich, den obigen Prozess zu automatisieren, indem die Data Explorer-Abfrage über die API ausgeführt wird und dann die Ergebnisse der API-Anfrage verwendet werden, um die Gruppe zu aktualisieren. Details dazu finden Sie hier: Data Explorer-Abfragen mit der Discourse-API ausführen. Sie müssten dann die Gruppenmitglieder über die API aktualisieren.

Es wäre interessant, einige Arten von Aktionen direkt auf die Ergebnisse einer Data Explorer-Abfrage anwenden zu können. Zum Beispiel mit einer Abfrage, die eine Liste von Benutzernamen zurückgibt, alle Benutzer zu einer Gruppe hinzuzufügen, ohne den Kopier- und Einfügeschritt durchlaufen zu müssen.

4 „Gefällt mir“

Danke!
Ich habe den Data Explorer noch nicht ausprobiert, aber er steht auf meiner Liste der Dinge, die ich erkunden möchte, und das klingt nach einer plausiblen Methode, um das zu erreichen, was ich versuche. Ich werde es mir ansehen…
Danke auch für die Abfrage.

2 „Gefällt mir“

Hallo @CC_people,
Ich bin mir nicht sicher, ob Ihnen das helfen würde, aber nur für den Fall:

3 „Gefällt mir“

Die andere Option wäre ein benutzerdefiniertes Plugin, das den Benutzer zur speziellen Gruppe hinzufügt, wenn die Bedingungen erfüllt sind.

2 „Gefällt mir“

Nur eine Rückmeldung, was wir hier gemacht haben, falls es für andere nützlich ist. Kurz gesagt: Wir exportieren nach Excel, lassen Excel ermitteln, wer unseren „UND“-Kriterien entspricht, und fügen dann diese Benutzer in Stapeln einer Gruppe hinzu.
Wir haben unseren technischen Assistenten gebeten, sich ein benutzerdefiniertes Plugin anzusehen, um dasselbe zu tun, aber es scheint etwas knifflig zu sein, daher bleiben wir vorerst bei Excel.

Mehr Details:

  1. Gesamte Benutzerdatenbank exportieren.
  2. In Excel importieren. Verwenden Sie ISNUMBER und SEARCH, um Benutzer aus einer bestimmten Gruppe auf dem ersten Blatt in ein zweites Blatt zu extrahieren.
  3. Verwenden Sie erneut ISNUMBER und SEARCH, um Benutzer aus der zweiten spezifischen Gruppe in ein drittes Blatt zu extrahieren.
  4. Fügen Sie diese Benutzer in Stapeln zu ihren entsprechenden Gruppen hinzu.

Ich stelle mir vor, dass es einen saubereren Weg gibt, dasselbe Ergebnis zu erzielen. Da es jedoch jetzt eingerichtet ist, geht es nur noch darum, die exportierten Daten jedes Mal einzufügen und dann die Ergebnisse zu importieren, ohne darüber nachdenken zu müssen.
Wir nutzen dieses System, um tl3-„Stamm“-Benutzer mit zusätzlichen Privilegien und frühem Zugang zu Dingen zu belohnen, und es hat die gewünschte Wirkung, höhere Qualität und höhere Quantität der Nutzung zu fördern. Also Erfolg, wenn auch etwas umständlich und nicht automatisiert. Wir haben unsere Funktion „diese Gruppe UND jene Gruppe“.

Sie könnten das neue Automatisierungsskript „Benutzergruppenmitgliedschaft über Abzeichen“ verwenden, um dies vielleicht zu verknüpfen? Insbesondere wenn Sie benutzerdefinierte ausgelöste Abzeichen aktiviert haben.

1 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.