Richtige Methode, um Digest festzulegen und Kategorie aus den neuesten auszublenden

Hallo,

als Admin des Forums möchte ich, dass alle Benutzer automatisch bestimmten Kategorien mit aktivierter E-Mail-Liste-Funktion folgen.

Ich habe versucht, Kategorien in meinem Profil (beobachtet, verfolgt und stummgeschaltet) einzustellen, um diese Einstellungen in der Datenbank zu finden. Ich möchte dieselben Einstellungen auf andere Benutzer anwenden; es scheint, als ob dies über die Tabelle category_users geschieht.

Habe ich recht, dass ich dies durch einige Einfügeoperationen (INSERTs) erreichen kann?

Zuvor habe ich versucht, einige Kategorien als „mail listed" zu markieren, um sicherzustellen, dass der Digest nur diese Kategorien enthält. Das war jedoch nicht korrekt – diese Einstellung beeinflusst den Inhalt des Digests nicht.

Vielleicht ist die Logik anders? Das Ziel ist:

  • Neue Benutzer dazu zu zwingen, einen Digest aus bestimmten Kategorien zu erhalten (okay, sie können dies später selbst ändern)
  • Bestimmte Kategorien auf ihrer „Latest"-Seite nicht anzuzeigen

Ich habe ein Thema gefunden, das meinem Fall nahekommt: Viewing a list of users who are watching a category. Ich war mir jedoch nicht sicher, ob ich es nach fünf Jahren noch einmal hochbringen sollte.

Warum verwendest du diese Einstellungen nicht?

Ich bin mir nicht sicher, ob das hilft. Ich suche nach einer Möglichkeit, dies für 100 weitere Benutzer im Batch-Verfahren einzustellen.

Wenn du es auswählst, erscheint ein Feld, das fragt, ob du es für alle oder nur ab jetzt ändern möchtest. :+1:

Ich möchte meine Lösung teilen.

Ich habe in der Benutzeroberfläche die erforderlichen Einstellungen vorgenommen (Kategorien stummschalten und verfolgen), wie Gavin erwähnt hat:

Anschließend habe ich eine Verbindung zur Datenbank hergestellt, um die IDs der Kategorien und Benutzer zu ermitteln. Tabellen: category_users und users.

Ich habe die Einstellungen für mich selbst gefiltert (für user_id=5), wie auf dem folgenden Bild zu sehen ist:

Als Nächstes möchte ich dieselben Einstellungen für zwei weitere Benutzer mit den IDs 33 und 34 anwenden. Offensichtlich muss ich entsprechende Zeilen in die Tabelle category_users einfügen.

Beispiel:

  • Es gibt 6 Kategorien: ID 1, 2, 15, 17, 19 und 24.
  • Stummschaltete Kategorien 15 und 17.
  • Beobachte den ersten Beitrag in den Kategorien 1, 2 und 24.
  • Verfolge die Kategorie 19.

Zunächst habe ich ein Skript erstellt, das alle ausgewählten Kategorien in den stummschalteten Bereich einfügt (notification_level=0):

INSERT INTO 
	"category_users" 
	("category_id", "user_id", "notification_level", "last_seen_at") 
VALUES
(24, 34, 0, NULL),
(2,  34, 0, NULL),
(1,  34, 0, NULL),
(19, 34, 0, NULL),
(15, 34, 0, NULL),
(17, 34, 0, NULL),

(24, 33, 0, NULL),
(2,  33, 0, NULL),
(1,  33, 0, NULL),
(19, 33, 0, NULL),
(15, 33, 0, NULL),
(17, 33, 0, NULL);

Sie können bis zu 1000 Zeilen auf einmal hinzufügen.

Danach habe ich die Zeilen für die verfolgten und beobachteten Kategorien (erster Beitrag) aktualisiert:

-- Ersten Beitrag beobachten
UPDATE "public"."category_users" SET "notification_level"='4' WHERE  "category_id" in (1,2,24);
-- Verfolgen
UPDATE "public"."category_users" SET "notification_level"='2' WHERE  "category_id"=19;

Danach sind die Benutzereinstellungen aktualisiert. Stummschaltete Kategorien werden auf der Hauptseite und bei den neuesten Themen ausgeblendet.

изображение

Lassen Sie mich wissen, ob es eine andere einfache Möglichkeit gibt, die Benutzereinstellungen bezüglich stummschalteter oder beobachteter Kategorien im Bulk zu bearbeiten.