[TYPO3-german] Paid Membership Extension
bernd wilke
x00nsji02 at sneakemail.com
Tue Jul 7 01:34:13 CEST 2009
Am Mon, 06 Jul 2009 15:42:54 +0200 schrieb JoH asenau:
>> Problem: Das ganze kann so nicht im BE gepflegt werden, da das BE zwar
>> mn- Beziehungen mit eigenen Datensätzen unterstützt, aber keine
>> Zusatzinformation in diesen Datensätzen.
>
> Seit wann?
>
> IRRE macht da etwas ziemlich gut vor, was aber auch schon vor IRRE
> möglich war:
> Eine MM-Tabelle kann mit weitaus mehr Feldern bestückt werden, als man
> für die reine Verknüpfung benötigen würde und - und das ist das
> eigentlich Wichtige für die Zusatzinformationen - man kann sie genauso
> mit einem TCA versehen und editierbar machen wie "normale" Tabellen.
>
> Wenn Du also in Deiner Tabelle die üblichen "enable fields" einbaust,
> kannst Du auch für eine MM Relation mit "Start/Stop" etc. arbeiten. Was
> Du daraus im Frontend machst, liegt ja sowieso beim PHP Code des
> jeweiligen Plugins. Sollte also kein Akt sein, damit eine befristete
> Aktivierung hinzubekommen.
das macht mich jetzt neugierig. kannst du das näher erläutern?
mal zum verständnis:
aktuell werden die Usergruppen (genauer deren uid) in einer
kommaseparierten Liste im User-Datensatz gespeichert.
also zwei Tabellen:
user (felder: uid, pid, ... ,usergroups, ...)
usergroup (felder: uid, pid, ...)
hier bräuchte man erstmal zeitlich steuerbare usergroups. ist das
machbar? selbst wenn die entsprechenden Felder existieren müssten auch
die Corefunktionen zum Auswerten enable_fields() auf die usergroups
machen.
die usergroups können dann zwar zeitlich gesteuert werden, das würde aber
für alle user gelten und direkte Benutzer-individuelle usergroups sind
nicht mehr vernünftig realisierbar indem man alle möglichen Inhalte für
alle entsprechenden Gruppen erlaubt. [1]
bei mn-relationen gibt es drei Tabellen:
user (felder: uid, pid, ...)
usergroup (felder: uid, pid, ...)
user_mn_usergroup (felder: user-uid, usergroup-id)
daraus wird (soweit ich es weiß) beim handling ein join gemacht in dem
nur die uid-felder des Relationen-Datensatzes in einer fixierten Art
benutzt werden.
für eine zeitliche Begrenzung müssten jetzt start- und stop-felder in
user_mn_usergroup existieren und auch überprüft werden.
in einem eigenen FE-Plugin kann ich natürlich alles selber abfragen.
d.h. aber dass ich den 'normalen' Gebrauch der access-Felder überall
selber realiseren müsste.
Mein Idee wäre: sobald der user identifiziert und seine Daten geladen
werden (das passiert ja bei jedem Seitenaufruf) klinkt sich eine Funktion
(xclass?) ein und 'korrigiert' das usergroups-feld um die aktuell aktiven
zugeordneten usergroups (enable_fields auf user_mn_usergroup)
aber wie wird das im BE gepflegt?
statt der selectbox die ja nur 'enthalten' oder 'nicht enthalten'
verwalten kann. muss jetzt für jede Verbindung auch eine zeitliche
Begrenzung (Start- und Stop-Datum) pflegbar sein.
kommt da dann IRRE?
so weit ich das verstehe wären das dann aber nicht mehr echte mn-
Datensätze, sondern unabhängige Datensätze, die vier Felder haben (die
user-id entfällt zwar, dafür hat dieser mn-Datensatz aber eine uid, die
beim user in ein neues Feld eingetragen wird. Dazu dann start und stop
und (als selectbox) eine usergroup. damit müsste es dann realisierbar
sein.
Da diese Datensätze nur in der (service?)-Funktion beim Laden des
Userdatensatzes angefasst werden kann es eigentlich auch egal sein ob es
echte mn-Datensätze sind oder eigenständige Datensätze, die 'zufällig'
mit den Tabellen fe_user und fe_groups verbunden sind.
jetzt brauchen wir nur noch jemanden, der diese xclass-funktion als
Extension bastelt. wer kennt sich da aus? ;-)
[1] d.h. mit den kaskadierbaren usergroups wäre das eigentlich schon
möglich.
man müsste nur passende usergruppen anlegen.
z.B.:
user1, user2, user3, ...
gruppe1, gruppe2, gruppe3, ...
um jetzt user2 zeitlich befristet in gruppe3 aufzunehmen müsste man einen
Hilfsgruppe user2_gruppe3 anlegen, die zeitliche Befristung hat, die als
Untergruppe gruppe3 enthält und in der user2 eingetragen ist. Solange
die Gruppe user2_gruppe3 aktiv ist gehört user2 auch zu gruppe3.
die eigentlichen Gruppen sind vermutlich nicht so viele, aber es können
ja tausende von usern sein. Das würde sehr viele Hilfsgruppen
erforderlich machen, was zumindest für die Pflege im BE ziemlich
kompliziert werden kann. Vor allem weil diese Hilfsgruppen ja alle in der
Tabelle mit den echten Gruppen untergebracht werden müssen. Da
funktioniert dann auch die Selectbox für Usergruppen nicht mehr.
bernd
--
http://www.pi-phi.de/t3v4/cheatsheet.html
More information about the TYPO3-german
mailing list