[3.2][3.3][RC] Userreminder

In diesem Forum können Extension-Autoren ihre Extensions vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 16399
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [3.2] User reminder

Beitrag von Dr.Death »

Ja, hab ich gerade gesehen.

Du kannst jetzt die 2 alten "Branches" --> Mike-on-Tour-patch-1 und Mike-on-Tour-patch-2 löschen. Die hast du ja schon erfolgreich in den Master gemerged.

Da nun Master und Develop auf dem gleichen Stand sind, kannst du die Weiterentwicklungen im Develop Branch machen, solange bist du sagst, hey ich hab die nächste Version fertig....dann wechselst du in den Master und merged den Develop Branch hinein.

Ich werde dann ggf. weitere Pull Request in den Develop Branch einstellen..... nicht mehr in den Master

Benutzeravatar
Mike-on-Tour
Mitglied
Beiträge: 96
Registriert: 13.01.2020 21:09

Re: [3.2] User reminder

Beitrag von Mike-on-Tour »

Erledigt, soeben gelöscht.
Will jetzt die ganzen sql Queries mal optimieren, die reduzierte Abfrage über den user_type hat in meinem Versuchsforum wunderbar geklappt, also kann ich die anderen auch entsprechend anpassen. Und wenn ich schon dabei bin, werde ich die Insert- und Update-Queries auch optimieren.

Benutzeravatar
Mike-on-Tour
Mitglied
Beiträge: 96
Registriert: 13.01.2020 21:09

Re: [3.2] User reminder

Beitrag von Mike-on-Tour »

Dr.Death hat geschrieben:
06.02.2020 17:33
Der User reminder sollte auch das phpBB Datumsformat der User beachten.

Momentan gibst Du das Datum zwar dem User Format Wunsch entsprechend aus, allerdings werden die Tag und Monatsnamen nicht der gewünschten Sprache ausgegeben. ( Und die Zeitzone wird nicht berücksichtigt )

Um das entsprechend korrekt auszugeben gibt es die phpBB Funktion user->format_date()

Hier ein Vorschlag das zu ändern:
https://github.com/Mike-on-Tour/userrem ... 5d4f7acca4
Hallo Doc,
das ist ja inzwischen umgesetzt und funktioniert bei den Tabellen im ACP auch wunderbar, aber wenn ich diese Funktion für die Formatierung der Datums-/Zeitangaben in den eMails verwende, erhalte ich ja die Formatierung des Users, der die Mail verschickt und nicht die Formatierung des adressierten Users (der ja nicht nicht dem hier verwendeten User-Objekt entspricht). Der Adressat der Erinnerungs-Mail erhält also unter Umständen eine Datums-/Zeitangabe, die nicht seiner Sprache und seiner Zeitzone entspricht. Wenn ich hier falsch liege, ist der Rest meiner Ausführung erledigt.

Auf dieser Basis habe ich mir also eine Funktion geschrieben, die das Datumsformat und die Zeitzone des angeschriebenen Users berücksichtigt, damit die von ihm in der DB hinterlegten Werte genutzt werden. So weit, so gut, aber wie berücksichtigt man dabei die Spracheinstellung dieses Users? Alle Funktionen, die ich in phpbb gefunden habe, gehen vom User-Objekt aus, aber das ist ja wieder derjenige, der das Versenden der eMail veranlasst, und dann ist es wieder zufallsabhängig, ob die beiden Spracheinstellungen identisch sind. Oder übersehe ich da was?

Als ich diesen Post das erste Mal las, ging ich davon aus, dass phpbb alle Unix-Timestamps in der DB auf UTC normiert, aber das ist nach mehreren Versuchen wohl nicht zutreffend, es müsste die in der Server-Konfiguration (nicht die von phpbb) eingestellte Default_Timezone sein, ist das korrekt? Macht die Berechnung des Zeitzonen-Offsets nämlich etwas umständlicher.

Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 16399
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [3.2] User reminder

Beitrag von Dr.Death »

Ein guter Einwand..... aber da zerbreche ich mir auch immer den Kopf.

Hab da auch momentan keine echte Lösung, ich selbst habe das gleiche Problem bei meinem Cron Task, der die Erinnerungsmails versendet:

https://github.com/DrDeath/phpbb-ext-f1 ... r.php#L153

Benutzeravatar
Mike-on-Tour
Mitglied
Beiträge: 96
Registriert: 13.01.2020 21:09

Re: [3.2] User reminder

Beitrag von Mike-on-Tour »

Ich hatte schon die Idee, eine weitere User-Instanz zu erzeugen, aber das ist nach meinem bisherigen Studium dieser Klasse von einer Session abhängig und kann nicht einfach mittels Übergabe der user_id erfolgen, also auch eine Sackgasse. :cry:
Auch der Umweg über die Messenger-Funktionen führt zu nichts, weil auch dort mit $user gearbeitet wird, damit stehe ich wieder am Ende des vorherigen Satzes und komme nicht weiter.

Benutzeravatar
chris1278
Mitglied
Beiträge: 1902
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: [3.2] User reminder

Beitrag von chris1278 »

Hi also sorry, wenn ich mich da einklinke. Falls ich das richtig verstehe, geht es hier um die Abfrage Sprache/-zeitzone des Empfängers.

Wenn man die Endwerte des Empfängers nicht fixieren kann. Wäre es nicht sinnvoll dann die Zeitangabe fest zumachen an der Standard Zeit des Forums.

Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 16399
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [3.2] User reminder

Beitrag von Dr.Death »

Das haben wir jetzt ja schon lange..... aber wir möchten gerne genauer werden und die Zeitzone des Empfängers berücksichtigen.

Benutzeravatar
chris1278
Mitglied
Beiträge: 1902
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: [3.2] User reminder

Beitrag von chris1278 »

Ok. Dann habe ich nix gesagt.

Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 16399
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [3.2] User reminder

Beitrag von Dr.Death »

Hab evtl. die Lösung.

Anstelle die Zeit von $this->user zu nehmen, holt man sich die Zeit aus dem Array der zu benachrichtigen User.

In der while Schleife kann man das Datum dann jederzeit neu berechnen.

Beispiel:

https://github.com/DrDeath/phpbb-ext-f1 ... f7c148ba3a

Habe dann ein Rennen für "UTC : 20.02.2020 - Uhrzeit: 05:00" gesetzt.

Ein User mit UTC+1 und ein User mit UTC+11 angelegt und die Mail versenden lassen:

Ergebnis User mit UTC+1:
Deadline für das Rennen in Australien / Melbourne ist am
Datum: 20.02.2020
Uhrzeit: 06:00
Ergebnis User mit UTC+11:
Deadline für das Rennen in Australien / Melbourne ist am
Datum: 20.02.2020
Uhrzeit: 16:00

Benutzeravatar
Mike-on-Tour
Mitglied
Beiträge: 96
Registriert: 13.01.2020 21:09

Re: [3.2] User reminder

Beitrag von Mike-on-Tour »

Das ist die Lösung, die ich mit meiner Funktion (wertet die Einträge user_timezone und user_dateformat aus der Users Tabelle aus) auch gefunden habe, funktioniert auch (aber deine Lösung sieht deutlich eleganter aus als meine, deswegen poste ich meine mal besser nicht). Aber ich habe es damit immer noch nicht in der Sprache des jeweiligen eMail-Empfängers, weil ich den Eintrag user_lang (noch) nicht verwerten kann. Dazu müsste ich die jeweiligen Einträge aus dem Array 'datetime' der common.php in den Sprachunterverzeichnissen für die Ersetzungen im Datum/Zeit-String auslesen, aber dazu scheint es keine Funktion zu geben, die nicht an das User-Objekt gebunden ist - zumindest habe ich noch keine gefunden. Und auch alle bisherigen Suchen hier, in phpbb.com, area51 und stackoverflow waren vergeblich. Und eine wirklich zündende, eigene Idee habe ich auch nicht.

Antworten

Zurück zu „Extensions in Entwicklung“