[TYPO3-german] Re: direct_mail: Benutzergruppen in Empfängerliste

Stefan Frömken firma at sfroemken.de
Fri Nov 12 11:22:07 CET 2010


Au...wahnsinn hast Du viel geschrieben. Finger noch OK? :-) Danke Dir

Antworten siehe im Text

Stefan

Am 12.11.2010 10:58, schrieb Stephan Schuler:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
> Hallo Stefan.
>
>
> Du sprichst sicherlich von Special-Querys, nehm ich an.

Ganz genau

> Dein konkretes Problem hat eine recht abenteuerliche Lösung. Die will ich kurz aufzählen, halte das aber für eine dermaßen abartige Variante dass ich das selbst nicht verwenden würde:
> WHERE (
>          usergroup LIKE '2,%'
>          OR
>          usergroup LIKE ',2'
>          OR
>          usergroup LIKE '%,2,%'
>          OR
>          usergroup = 2
> )

Diese Art "Konstrukt" kenne ich zwar, aber es lässt sich nicht mit dem 
queryGenerator abbilden, da dieser bei "contains" meinen Text immer in 
%|% wrapt. Wenn ich also wie in Deinem Beispiel sage: "2,%", dann mach 
der queryGenerator daraus: "%2,%%"

> Durch die Pfeil-Einrückbuttons im Spqcial-Query-Editor von Direct Mail kriegst du das auch so hingebaut, dass dieses Klammerkonstrukt als Ganzes mit anderen Bedingungen Und-Verknüpft werden kann. Schön ist aber auch anders. Das wohl größte Problem das ich bei Special-Querys habe ist, dass der Queryanteil nicht Teil der vom Benutzer als beschreibbaren angegebenen TCA-Definition ist. Wenn du den Empfängergruppen-Record im TCEmain-Formular öffnest fehlt eben der Block in dem der Query hinterlegt ist. Das führt dazu, dass du die Empfängergruppe zwar kopieren kannst, dass bei der Kopie allerdings die Special-Querys nicht übertragen werden. Wenn ich 15 solcher Gruppen anlegen muss würde ich wahnsinnig werden bei dem Versuch ein solches Monster per Backend-Click-Orgie entsprechend häufig zu erzeugen.

Das mit den Klammerkonstrukten habe ich verstanden...klappt ganz gut.
Das mit dem Kopieren soll mir ja noch egal sein, weil ich das nur einmal 
machen muss und dann "hoffentlich" nie wieder.

>
> Sofern du keinen Special-Query brauchst kannst du die Recipient list einfach als "Type: From pages" definieren, im "Starting Point" den Sysfolder wählen in dem deine Gruppe liegt und unten die Checkbox "Website User Group" auswählen. Nachdem fe_users und fe_user_groups nicht zwingend im gleichen Sysfolder liegen, kannst du für jede Gruppe einen eigenen Sysfolder hernehmen und den dann als Startingpoint angeben. Dadurch bekommst du unterschiedliche Recipient lists für unterschiedliche fe_user_groups.

Heißt aber auch ich muss zig Bedingungen in die sr_feuser_register 
reinwurschteln, damit er mit den User auch ja in den richtigen Ordner 
ablegt. Weiterhin sollen Redakteure entscheiden können, ob ein User nun 
Berechtigung X oder Y hat. Die werden begeistert sein, die User zwischen 
den Sysfoldern hin und her zu verschieben.

>
> Wenn du einen Special-Query benötigst klappt das natürlich nicht mehr.
>
>
> Was ich da für gewöhnlich treibe ist zwar auch nicht die schönste Lösung, bietet mir aber den größten Freiraum was zusätzliche Verarbeitung der Benutzerdatensätze betrifft, ist mit ein wenig Geschick auch schnell getippt und lässt sich recht leicht auf diverse andere Projekte portieren:
>
> Zunächst hängt es davon ab ob du tt_address odre fe_user verwendest.

fe_users

> Fe_users hat die Gruppen des Benutzers durch Kommas getrennt im "usergroup"-Attribut des Users. Ich gehe deshalb davon aus dass du mit fe_users hantierst.

Jup

> Tt_address verwendet MM-Beziehungen. Die eigenen sich in meinen Augen grundsätzlich besser für solche Anforderungen weil die SQL-Querys dadurch einfacher werden -- nicht zuletzt auch was deren Anspruch an die Datenbankleistung betrifft.

Die User erhalten nicht nur einen Newsletter, sie müssen sich auch and 
er Webseite anmelden können...deshalb wird das ein bissl schwierig mit 
tt_address

>
> Ich lege (eigentlich immer) einen View auf tt_address der mir die gewünschten Parameter abbildet. Im einfachsten Fall:
> SELECT t.*, g.uid AS tt_address_group
> FROM tt_address AS t LEFT JOIN tt_address_group_mm AS mm ON t.uid = mm.uid_local LEFT JOIN tt_address_group AS g ON mm.uid_foreign = g.uid
>
> Der Query enthält anschließend jeden tt_address-Record für jede Gruppe in der er ist exakt einmal. Dadurch vervielfacht sich zwar die Datenmenge und übers TYPO3-Backend wird die Sache auch nur noch bedingt auswertbar (weil die einzelnen Inkarnationen der unterschiedlichen Benutzer natürlich die gleiche UID haben) aber man kann das dann leicht über den Special Query ansprechen.
>
> Zu diesem View lege ich mittels kleiner eigener Extension einen TCA-Eintrag an: Ich kopiere den tt_address-TCA-Eintrag ($TCA['nxttaddressview'] = $TCA['tt_address']) und erweitere meinen TCA-Eintrag dann um die Spalten die mein View ergänzt.
>
> Das Konstrukt ist zwar zunächst aufwendig, allerdings hab ich alle Informationen anschließend schön in der DB abgebildet. Dazu kommt praktisch bei jedem Projekt noch die Anforderung, die Anrede "Sehr geehrter Herr XYZ," bzw. "Sehr geehrte Frau XYZ," zu wählen sofern das Geschlecht definiert ist und der Nachname eingetragen und "Sehr geehrte Damen und Herren," wenn wahlweise kein Geschlecht angegeben ist oder kein Nachname dran ist. Das bekommt man ohne View-Query schon überhaupt nicht hin.
>

Ich wurschtel mal ein bissl in der class.t3lib_querygenerator.php rum. 
Vielleicht nehmen die TYPO3ler unseren Featurewunsch ja noch für die 4.5 
auf.

>
> Gruß,
>
>
> Stephan Schuler
> Web-Entwickler
>
> Telefon: +49 (911) 539909 - 0
> E-Mail: Stephan.Schuler at netlogix.de
> Internet: http://media.netlogix.de
>
> - --
> netlogix GmbH&  Co. KG
> IT-Services | IT-Training | Media
> Andernacher Straße 53 | 90411 Nürnberg
> Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99
> E-Mail: mailto:info at netlogix.de | Internet: http://www.netlogix.de/
>
> netlogix GmbH&  Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA 13338)
> Persönlich haftende Gesellschafterin: netlogix Verwaltungs GmbH (HRB 20634)
> Umsatzsteuer-Identifikationsnummer: DE 233472254
> Geschäftsführer: Stefan Buchta, Matthias Schmidt
>
> - -----Ursprüngliche Nachricht-----
>
>
> Von: typo3-german-bounces at lists.typo3.org [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von Stefan Frömken
> Gesendet: Freitag, 12. November 2010 10:31
> An: typo3-german at lists.typo3.org
> Betreff: [TYPO3-german] direct_mail: Benutzergruppen in Empfängerliste
>
> Hallo zusammen,
>
> ich möchte eine Empfängerliste erstellen, die alle User beinhaltet, die
> der Gruppe mit der UID 2 zugeordnet sind.
>
> Wenn ich aber sage:
> WHERE usergroup = 2
> dann findet er nicht die User, die den Gruppen 2,5,8 zugeordnet sind,
> sondern nur die, die NUR diese eine Gruppe mit der UID 2 beinhalten.
>
> Sage ich:
> WHERE usergroup LIKE '%2%'
> dann findet er zusätzliche User, die nur den Gruppen 21,25,32 zugeordnet
> sind
>
> Sage ich:
> WHERE usergroup IN (2)
> dann habe ich das gleiche Problem wie oben schon erwähnt.
>
> Wie macht ihr das?
>
> Stefan
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>
>
> -----BEGIN PGP SIGNATURE-----
> Version: PGP Universal 3.0.0 (Build 2881)
> Charset: Windows-1252
>
> wpUDBQFM3Q/gpp0IwsibV8MBCC4sA/4+00KlUsCedECPB11Gd2b7V5GnPJ/PU8wp
> oftRUgA22c8fhpUCxyz0N+q0QvNE35qF04Rzsk8+MQO9LVhI5REYWxeMAdw7h64C
> jvUOF8C0CkLb2zRdaw/HH95RSVlog5EQHNXoM+kGGBxC2QrTtv9Av7Uo0krwLStY
> HVoL6KZdxA==
> =ACpD
> -----END PGP SIGNATURE-----



More information about the TYPO3-german mailing list