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.schu...@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:i...@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-boun...@lists.typo3.org 
[mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von Stefan Frömken
Gesendet: Freitag, 12. November 2010 10:31
An: typo3-german@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@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-----

_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an