Nachrichtensystem

Dieser Bereich dient dazu, eure Tricks und Erweiterungen vorzustellen, damit diese auch andere Anwender nutzen können. // This area can be used to publish your tricks and extensions to the APF to be used by other developers.
Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: Nachrichtensystem

Beitrag von Megger » 03.03.2011, 18:33:04

Eine Assoc zwischen User und User "User2BlockedUser". Beim Hinzufügen eines Lesers zu einem Channel wird geprüft ob der Leser den User blockiert, und wenn ja fliegt ne exception, die man in der GUI abfangen kann und ne Fehlermeldung draus formen kann.
Assoc auf sich selbst ist nicht möglich, weil von den verlinkten Objekten der Primärschlüssel genommen wird und du dadurch in der ass_* Tabelle 2 gleiche Spaltennamen hättest.

Ein blockieren sollte meiner Meinung nach schon mit in die Extension rein, weil es den Vorteil hat, dass du den Channel mit den Nachrichten gar nicht erst erstellen brauchst wenn der User geblockt ist. Andererseits könnte ich mir auch vorstellen, es über die GUI zu lösen, sodass diese Nachrichten in der normalen Ansicht nicht auftauchen, ich aber in einer anderen Ansicht sehen kann, dass ich 50.000 Nachrichten von einem geblockten User habe.

Da sollte man vielleicht die Möglichkeit haben zu entscheiden. Dadurch, dass du keine Assoc auf das gleiche Objekt anlegen kannst, wäre vielleicht ein "StatusObjekt" der richtige Weg. Über die GUI könnte man dann abfragen, ob das StatusObjekt vorhanden ist oder nicht, wenn ja, dann zeigt man diese Nachrichten nicht normal an, sondern nur in der anderen Ansicht. Wenn das StatusObjekt einen bestimmten Wert hat, dann wird der Channel mit dem User gar nicht erst angelegt.
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Nachrichtensystem

Beitrag von Screeze » 03.03.2011, 18:44:24

Assoc auf sich selbst ist nicht möglich, weil von den verlinkten Objekten der Primärschlüssel genommen wird und du dadurch in der ass_* Tabelle 2 gleiche Spaltennamen hättest.
Hm bist du dir da sicher? Erklärung klingt logisch, aber ich bin der Meinung das schonmal gemacht zu haben vor einiger Zeit...
Aber so gedacht müsstest du Recht haben...
Da sollte man vielleicht die Möglichkeit haben zu entscheiden. Dadurch, dass du keine Assoc auf das gleiche Objekt anlegen kannst, wäre vielleicht ein "StatusObjekt" der richtige Weg. Über die GUI könnte man dann abfragen, ob das StatusObjekt vorhanden ist oder nicht, wenn ja, dann zeigt man diese Nachrichten nicht normal an, sondern nur in der anderen Ansicht. Wenn das StatusObjekt einen bestimmten Wert hat, dann wird der Channel mit dem User gar nicht erst angelegt.
Ich halte es für unsinn nachrichten zu speichern, die eine Partei sowieso nicht lesen will. Und wenn ich ne Blockliste habe, schau ich nicht nach welcher geblockte User mir welchen Müll wieder getextet hat.
Aber das man keine user-user Beziehung erstellen kann ist echt ungünstig...

Wie machen wir das dann?

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: Nachrichtensystem

Beitrag von Megger » 03.03.2011, 18:49:54

Da hast du auch wieder Recht. Wenn man zukünftig wieder Nachrichten lesen will, dann kann man die Blockade ja wieder rausnehmen. Ein zusätzliches Objekt brauchst du so oder so bei der ganzen Sache.
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
dr.e.
Administrator
Beiträge: 4538
Registriert: 04.11.2007, 16:13:53

Re: Nachrichtensystem

Beitrag von dr.e. » 03.03.2011, 19:21:49

Hallo zusammen,

Ralf und ich haben gerade per Skype über das Thema diskutiert. Ich persönlich würde einen gebannten User auf den ersten Blick über eine Beziehung zu einem Zustands-Objekt "Banned" repräsentieren. Sofern das über eine direkte Beziehung gelöst werden soll, muss der GORM erweitert werden.

Eine Lösung kann sein, die Spalten um die Richtung zu erweitern. Das geht für den Benutzer so:
  • Source_UserID
  • Target_UserID
Sofern das der Implementierung hilft, können wir das in 1.14 einbauen. @Ralf: machst du das?
Viele Grüße,
Christian

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: Nachrichtensystem

Beitrag von Megger » 03.03.2011, 19:47:45

d.h.

Code: Alles auswählen

[User2Banned]
[Banned2User]
?
Weil der User ist ja nicht generell gebannt, sondern nur für einen bestimmten User. So meinte ich das dann auch mit dem StatusObjekt
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Nachrichtensystem

Beitrag von Screeze » 03.03.2011, 19:53:48

Nein [User2BannedUser] reicht.

A blockt B:
source: A | target: B

B blockt A:
source: B | target: A

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: Nachrichtensystem

Beitrag von Megger » 03.03.2011, 20:45:58

Das geht aber nur wenn man den GORM erweitert, aktuell ist es so doch nicht möglich?
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Nachrichtensystem

Beitrag von Screeze » 03.03.2011, 20:48:08

Wieso nicht?
Sobald das problem mit dem Schlüsselname gelöst ist, was ich für 1.14 machen werde sobald ich das hier soweit fertig hab, und noch ein paar Änderungen die ich machen muss in 1.14 erledigt habe, sollte das Problemlos möglich sein.
Wo siehst du da ein Problem?

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: Nachrichtensystem

Beitrag von Megger » 03.03.2011, 20:54:53

Passt schon, wir reden eigentlich von der gleichen Sache
Version <= 1.13
meine Lösung
Version >= 1.14
deine Lösung
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Nachrichtensystem

Beitrag von Screeze » 03.03.2011, 21:09:29

und da Postbox definitiv >= 1.14 wegen GORM funktionen -> meine Lösung ;)

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: Nachrichtensystem

Beitrag von Megger » 03.03.2011, 21:57:32

1:0 für dich
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Nachrichtensystem

Beitrag von Screeze » 07.03.2011, 19:15:08

Das ganze verzögert sich halt jetzt ein klein wenig durch die Blocking-Geschichte, nicht wundern ;)


Was ich noch Vorschlagen würde:
Empfängerlisten.

User -----User2RecipientList---> RecipientList ----RecipientList2Recipient---> User
wobei RecipientList als einziges Attribut "Name" bekommt.

Jeder User soll sich also Empfängerlisten anlegen können, und diese mit beliebig vielen (?) Usern verknüpfen können. An der Postbox selber würde ich nichts ändern, außer dass "Postbox" die Methoden "getRecipientLists()" und "getRecipientList()" bekomt, an der Logik zum Senden würde ich nichts ändern, die GUI soll dann entsprechend wenn man eine Liste auswählt einfach die Namen der Empfänger eintragen, und die normale API verwenden.

Was haltet ihr davon?

Coach83
Beiträge: 271
Registriert: 13.05.2010, 17:33:12
Kontaktdaten:

Re: Nachrichtensystem

Beitrag von Coach83 » 07.03.2011, 20:11:46

Hört sich gut an - vor allem im Hinblick auf kleine Newsletter für bestimmte Benutzergruppen sinnvoll.

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Nachrichtensystem

Beitrag von dave » 07.03.2011, 21:36:57

Jau,

sorry für Delay, war in einer Funktion vertieft und habe alles um mich herum abgeschottet um heute noch zu einem Ergebnis zu kommen :?

Hinweise zur Config:
Context ist "projectone"! Die Database-Config muss angepasst werden. Habe die Werte mal durch xxx ersetzt. Alles andere sollte auch so funktionieren. Es kann sein, dass ein paar Configs überflüssig sind. Habe die eben aus meinen aktuellen Stand heraus gezogen ;).

Das Usermanagemend-Modul ist erweitert! Dort gibt es eine neue Relation: DEFAULT_umgt_relations.ini

Code: Alles auswählen

[Activation2User]
sowie ein enues Object: DEFAULT_umgt_objects.ini

Code: Alles auswählen

[Activation]
Solltest du diese nicht benötigen, einfach raus löschen. Ich kann dir jedoch nicht mehr sagen, ob es zu einem Problem werden könnte, da der login_controller sowie register_controller die Aktivierung in meinem aktuellen Stand abfragen. Ich denke aber, dass es keine Probleme gibt.

Ich glaube, es ist besser, einfach nochmal ein neues Paket zu schnüren? Sag einfach Bescheid, das würde ich dann allerdings morgen früh machen, da bin ich fitter als heute Abend ;)

Zur Empfängerliste:
Da das Nachrichtensystem doch eh in Kanäle aufgeteilt ist, wüsste ich jetzt nicht, wozu ich das genau nutzen könnte.
Dateianhänge
config.zip
config-Ordner
(6.22 KiB) 46-mal heruntergeladen

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Nachrichtensystem

Beitrag von Screeze » 07.03.2011, 21:56:48

ich lass das erweiterte umgt einfach drin, stört ja nicht.
Danke schonmal, werd dann auch vermutlich morgen erst weitermachen.

Zu den Empfängerlisten:
Ich würde in meiner Anwendung neben dem Empfängerfeld für "Premiumkunden" noch eine dropdownliste einfügen, die vordefinierte Listen beinhaltet. Du kannst dir also Listen anlegen und dann per klick z.b. 20 empfänger auf einmal einfügen, ohne die alle einzeln eingeben zu müssen, wenn du diese empfänger öfters brauchst.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast