OG / Rules / deaktivierte User
am 25.02.2015 - 09:57 Uhr in
Hallo zusammen,
ich habe mit mir Drupal / OrganicGroups / Rules ein kleines Informationsportal für registrierte Mitglieder aufgebaut. Die Benutzer sind einer oder mehrerer Gruppen zugeordnet. Wird ein Inhalt erstellt, der zu einer Gruppe gehört, bekommen die entsprechenden Benutzer eine Email mit der Benachrichtigung, dass ein neuer Inhalt erstellt wurde. Soweit ist es ja recht standardmäßig. Soweit funktioniert das auch.
Nun habe ich festgestellt, dass auch deaktivierte Nutzer, diese Emailbenachrichtigung bekommen. Das möchte ich natürlich nicht.
Ich habe an unterschiedlichen Stellen gelesen, dass man in TPL-Dateien ändern oder Hooks programmieren kann, die dieses Verhalten übersteuern. Lieber wäre mir allerdings, einfach eine UND-Bedingung hinzuzufügen "Benutzer = AKTIV ?". Wenn ja, wird versandt, wenn nein wird aus der Schleife ausgestiegen.
Kann mir jemand einen Tipp geben, wie ich diese Bedingung hinzufüge?
Danke im voraus für Eure Hilfe.
Beste Grüße
Oliver
- Anmelden oder Registrieren um Kommentare zu schreiben
Dazu musst du natürlich
am 25.02.2015 - 10:15 Uhr
Dazu musst du natürlich wissen, welches Modul die Benachrichtigungen versendet. Wenn es durch Rules geschieht, sollte das kein Problem sein. Lass dir einfach mal die Rules debug Infos darstellen (siehe http://www.drupalcenter.de/node/52778#comment-184048).
Es kann aber auch ein anderes Modul sein. Hast du die Website nicht selbst aufgesetzt oder eine Distribution benutzt?
Baste Grüße
Marco
– Grüße aus Franken –
"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)
www.bienlein-kommunikation.de
Danke für die schnelle
am 25.02.2015 - 15:00 Uhr
Danke für die schnelle Antwort :-)
Ich habe die Website selbst aufgesetzt. Über Ruleslink wird der Versand auf Knopfdruck angetriggert und per Rules werden die Emails dann versandt. Ich müsste also nur eine per AND verbundene Condition hinzufügen. Wie das geht, glaube ich zu wissen. Ich weiß nur nicht, welches Feld ich wie abfragen muss.
Wie das heisst, ist in deiner
am 25.02.2015 - 16:18 Uhr
Wie das heisst, ist in deiner Rule unter der Aktion zu sehen, die die Mails versendet. Damit musst du eine neue Bedingung setzen.
An dieser Stelle eine tutorial empfehlung, die sich sehr lohnt, durchzuarbeiten: http://nodeone.se/en/learn-the-rules-framework
Beste Grüße
Marco
– Grüße aus Franken –
"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)
www.bienlein-kommunikation.de
Rules habe ich verstanden
am 25.02.2015 - 16:31 Uhr
Da Prinzip der Rules ist mir klar. Nur das Feld, welches ich benutzen muss, kenne ich nicht.
In der Drupal-Datenbank gibt es die Tabelle 'users' und dort ein Feld 'status'. Im Status steht, ob der Benutzer aktiv oder geblockt ist. Diese Information möchte ich also in meiner vorhanden Rule verwenden.
Und ja, es gibt dort schon eine Bedingung: die Bedingung nämlich, ob der Benutzer zu der Gruppe gehört, der auch der Node angehört, über dessen Aktualisierung ich per Email benachrichtigen will. Dazu muss also per AND die Abfrage verknüpft werden, ob der Benutzer aktiv oder geblockt ist.
Meine Frage ist also ganz speziell: wie frage ich o.g. Feld in meiner Bedingung ab?
Beste Grüße
Oliver
Es gibt eine Rules Condition
am 25.02.2015 - 16:49 Uhr
Es gibt eine Rules Condition "Benutzer ist gesperrt". Füge diese negiert hinzu.
Zu and und or conditions: Wenn du nicht in Rules conditions mit "or" verknüpfst, gilt immer "and". Also musst du hier nichts machen, nur die Bedingung hinzufügen.
– Grüße aus Franken –
"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)
www.bienlein-kommunikation.de
Das mit der default-mäßigen
am 25.02.2015 - 17:34 Uhr
Das mit der default-mäßigen AND-Verknüpfuing wusste ich nicht.
Aber es hilft mir leider noch nicht weiter. Meine Rule sieht bisher so aus
{ "rules_og_new_content" : {
"LABEL" : "OG new content notification",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "og", "rules" ],
"ON" : { "node_insert" : [] },
"IF" : [ { "og_entity_is_group_content" : { "entity" : [ "node" ] } } ],
"DO" : [
{ "og_get_members" : {
"USING" : { "group_content" : [ "node" ] },
"PROVIDE" : { "group_members" : { "group_members" : "List of group members" } }
}
},
{ "LOOP" : {
"USING" : { "list" : [ "group-members" ] },
"ITEM" : { "list_item" : "Current list item" },
"DO" : [
{ "mail" : {
"to" : [ "list-item:mail" ],
"subject" : "Neuer Beitrag im Portal: [node:title]",
"message" : "Hallo [list-item:name],\r\n\r\nder Beitrag \u0022[node:title]\u0022 ist erstellt worden:\r\n[node:url]\r\n---\r\nBitte beachten: Aktualisierungen dieses Beitrages werden nicht erneut versendet.\r\n---\r\nZuordnung:\r\n[list-item:og-membership]\r\n\r\n",
"from" : [ "site:mail" ],
"language" : [ "" ]
}
}
]
}
}
]
}
}
In dem Moment, wo die "List of group members" aufgebaut wird, muss die Bedingung "Benutzer gesperrt" eingarbeitet werden. Nur wie geht das?
Jetzt sehe ich dein Problem
am 25.02.2015 - 18:15 Uhr
In Conditions kommst du noch nicht an diese Daten, weil der Bezug zum User object noch nicht da ist.
Unter Actions ruftst du die user erst über den Loop auf: Der user ist list-item und kommt aus der "List of group members"
Um die Bedingung danach setzen zu können, kannst du entweder die Rule in components zerlegen oder
https://www.drupal.org/project/rules_conditional einsetzen. Damit kannst du unter den rules actions noch Bedingungen setzen. Ich empfehle letzteres.
– Grüße aus Franken –
"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)
www.bienlein-kommunikation.de
Ja genau...
am 25.02.2015 - 20:43 Uhr
Soweit war ich damals, wusste dann aber nicht, wo ich genau an der Stelle die Condition group-members:list_item.status==active einsetzen kann. Deshalb kam ich auf das schmale Brett, den active-Status schon früher in der Condition abzufragen.
In der Schleife (Parameter: Liste: [group-members] - List item: Current list item (list_item)) kann ich nur eine action oder eine weitere loop einbringen.
Wie gesagt: installiere dir
am 25.02.2015 - 22:19 Uhr
Wie gesagt: installiere dir conditional rules, füge ein conditional ein, dann eine if condition (ob deine userraktiv sind) und die mail actions dahinter (optisch eingerückt).
– Grüße aus Franken –
"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)
www.bienlein-kommunikation.de
Ich teste das einmal.
am 26.02.2015 - 08:57 Uhr
Das werde ich einmal ausprobieren. Ich habe nur versucht, ein Beta-Modul zu vermeiden, da ich nicht einschätzen kann, inwieweit dann die Stabilität meiner Seite oder der Funktionalität OG beeinflusst wird. Muss ich mir da Sorgen machen?
OffTopic: Bezugnehmend auf meinen Kommentar in http://www.drupalcenter.de/node/51791#comment-180840 fand ich bemerkenswert, dass auch ich hier an dieser Stelle die Benachrichtigung zweimal bekomme. Ist dieser Teil der Seite auch mit OG und Rules organisiert?
Nur Mut
am 26.02.2015 - 11:36 Uhr
Das Modul kannst du benutzen, ich nutze es auch in mehreren Projekten.
Es ist zwar gut, auf die Versionen und Stabilität zu achten, aber für die Modulqualität gibt es viel mehr Kriterien, z.B. was der Maintainer sonst noch alles für Module hält etc. Es gibt richtig gute Module im dev Stadium, während andere Module in stable Releases verbugt (siehe Datum der Veröffentlichung) sind. Das heisst aber nicht, dass alle Module älteren Datums verwahrlost sind, einige sind einfach ausgereift.
Es kommt auf die Komplexität im einzelnen an und rules_conditional ist recht schlank.
– Grüße aus Franken –
"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)
www.bienlein-kommunikation.de
OffTopic
am 26.02.2015 - 11:38 Uhr
OffTopic: Bezugnehmend auf meinen Kommentar in http://www.drupalcenter.de/node/51791#comment-180840 fand ich bemerkenswert, dass auch ich hier an dieser Stelle die Benachrichtigung zweimal bekomme. Ist dieser Teil der Seite auch mit OG und Rules organisiert?
Ich hatte meinen vorletzten Kommentar editiert, was eine weitere Nachricht ausgelöst hatte. Kriegst du alle Messages 2x ?
– Grüße aus Franken –
"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)
www.bienlein-kommunikation.de
Offtopic
am 26.02.2015 - 12:04 Uhr
Ich hatte meinen vorletzten Kommentar editiert, was eine weitere Nachricht ausgelöst hatte. Kriegst du alle Messages 2x ?
Beiliegend als Screenshot meine Benachrichtigungsemails. Wenn die mit Deinen Editionen passt, ist ja alles ok.
Und wieder zum Thema...
am 26.02.2015 - 12:08 Uhr
Leider funktioniert es so noch nicht (siehe Screenshot). Hmm...
Ich sehe keinen Fehler.
am 26.02.2015 - 13:49 Uhr
Ich sehe keinen Fehler. Versuch mal, die condition mit "Benutzer gesperrt" (negieren) zu ersetzen.
– Grüße aus Franken –
"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)
www.bienlein-kommunikation.de
Habe ich gemacht...
am 26.02.2015 - 17:26 Uhr
Siehe Screenshot.
Funktioniert leider immer noch nicht. Drupal meldet zwar "Die Mitglieder der Gruppe werden per E-Mail benachrichtigt." es kommt aber keine Email an.
Asche auf mein Haupt :-/
am 26.02.2015 - 21:04 Uhr
Nach der Installation von rules_conditional saß der Fehler vor dem Computer - sooooooooorrrrry
Das Modul rules_conditional funktioniert. Problem hier war, dass ich gleichzeitig meinen Server umgezogen habe und der neue Server, auf dem auch das Portal läuft, schon so konfiguriert war, dass er die Empfänger-Emailadresse angenommen hat (also lokal), obwohl Postfix noch nicht fertig eingerichtet war.
Zuviele Aufgaben während des Umzugs gleichzeitig - nochmals 'tschuldigung.
Jetzt sieht alles gut aus, Email werden versendet und kommen auch an.
Danke für den Tipp und auch vielen Dank für die psychologische und technische Hilfe :-)