Joomla 5 Mitteilung

Wir freuen uns mitteilen zu können, dass seit dem 29. Januar 2024 alle unsere Joomla Erweiterungen mit Joomla 5 kompatible sind.

Für alle die gerade noch von Joomla 3 auf 4 aktualisieren: Anleitungen für die Joomla 4 Migration gibt es hier:

Es gibt nun auch eine eigenständige Dokumentation für Visforms für Joomla 4 und für Visforms auf Joomla 5

Forum

Visforms Subscription Inhaber können in unserem Forum Fragen stellen. Bitte mit dem entsprechenden Benutzer anmelden.
Jeder kann lesend auf das Forum zugreifen.

Bitte stellen Sie nur 1 Frage pro Thema.

Trigger für Edit-Benutzermail und Edit-Ergebnismail [gelöst]

Mehr
1 Monat 1 Woche her - 1 Monat 1 Woche her #10187 von MaliRaj
Um den Bearbeiter eines Datensatzes den Benutzer- und Ergebnismails im Betreff in der Form (geändert durch) anzuhängen, benutze ich aus Ermangelung der Nutzbarkeit eines Platzhalters {$modified_by} seit längerem ein Custom-Plugin.
Allerdings wird der Bearbeiter nur bei Benutzermails angehängt, nicht bei Ergebnismails, obwohl ich mit folgendem Code auf beide Trigger reagiere (dachte ich zumindest):

Code:
    public function onVisformsEmailPrepare($context, $mail, $form): bool     {          // triggered in VisformsModel after the mail object is instantiated and directly before the mail is sent:         // can be used to modify the mail object: mail object is instantiated and all properties are set and can be modified                  // Skip plugin if context is wrong (nur bei Benutzer- & Ergebnis-Mail ausführen)         if (($context != 'com_visforms.form.receiptmail') && ($context != 'com_visforms.form.resultmail')) {             return true;         }         $app = Factory::getApplication();                  // only perform action, if we are in front end                  if ($app->isClient('administrator')) {             return true;         }                  if ($form->context != "vfedit{$form->id}") {    // Script nur in Edit-Mail ausführen             return;         }         $user         = JFactory::getUser();            // Userdaten (Bearbeiter)         $Subject      = $mail->Subject;                // Subject auslesen         $modified_by  = " (geändert durch {$user->name})";                  $mail->setSubject($Subject.$modified_by);        // 'modified by' hinzufügen          return true;     }

Die Mails selbst werden alle gesendet, nur der Betreff der Ergebnismail wird durch das Script nicht (mehr?) angepasst.
Was habe ich da nur übersehen? Ich weiß gar nicht mehr, seit wann das nicht mehr funktioniert.
Joomla 4.4.3, PHP 8.2, aktuelle Subscription.

Freundliche Grüße aus PM
Heinz
Letzte Änderung: 1 Monat 1 Woche her von MaliRaj.

Mehr
1 Monat 1 Woche her #10207 von Administrator IV
Hallo Heinz,

ein kleine Frage vorweg.

Du entwickelst deinen eigenen PHP-Code und machst unmögliches möglich.
Welche Möglichkeiten des Debugging stehen dir zur Verfügung?

Liebe Grüße, Ingmar

:idea: I recommend you the new and up-to-date documentation for Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/en/docs/
Most of this also applies retrospectively to Joomla 3.
Please only ask 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/docs/
Das meiste gilt rückwirkend auch für Joomla 3.
Bitte immer nur 1 Frage pro Thema stellen :-).

Mehr
1 Monat 1 Woche her #10209 von MaliRaj
Hallo Ingmar,
Hmm, Debugging beschränkt sich bei mir eigentlich ganz oldscool auf das Mitloggen meiner Scripte, in dem ich immer den aktuellen Eventhandler zusammen mit den mir wichtigen Variablen in einer eigenen Logdatei aufzeichne. Außerdem setze ich dann in allen 4 Mails (Benutzer/Ergebnis und jeweils Edit) eine Log-/Debugmail-Adresse in BCC.
War es das, was du wissen wolltest?

Freundliche Grüße aus PM
Heinz

Mehr
1 Monat 1 Woche her #10215 von Administrator IV
Hallo Heinz,

Ja, es war das, was ich wissen wollte.
Ich habe dein Beispiel samt deinem PHP-Code nachgestellt.

Der Code enthält ein: return;
Richtig ist an dieser Stelle: return true;

Je nachdem, welche PHP-Version du hast führt dies zu einem fatalen Fehler.
PHP Version 8.2.6: Compile Error: A function with return type must return a value.
Ältere PHP-Versionen tolerieren dies noch.

Es werden beide E-Mails versendet und beide Betreff um den Benutzernamen erweitert.
Es muss also an etwas anderem liegen.

Wichtig ist auch die Plugin-Konfiguration.
Dein Plugin muss auch aktiviert sein.

Wichtig ist auch die Formular-Konfiguration.
Dort legst du auf dem Reiter 'Edit Mail Options' ja fest
- welche Edit-E-Mails überhaupt versendet werden sollen und
- ob der Benutzer dies beim Speichern der Änderungen selbst entscheiden kann.

Dein Debugging ist wie du selbst feststellst, etwas aufwendig.
Trotzdem kannst du auch damit erfahren:
- für welche E-Mail-Art der Code überhaupt anläuft,
- ob er erfolgreich durchläuft.

Liebe Grüße, Ingmar

:idea: I recommend you the new and up-to-date documentation for Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/en/docs/
Most of this also applies retrospectively to Joomla 3.
Please only ask 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/docs/
Das meiste gilt rückwirkend auch für Joomla 3.
Bitte immer nur 1 Frage pro Thema stellen :-).

Mehr
1 Monat 1 Woche her #10216 von MaliRaj
Ich habe tatsächlich gerade die php-Version von 8.0 auf 8.2 umgestellt. Danke für den Fehlerhinweis. Habe ich sofort korrigiert. Ich weiß nicht, ob es bei mir wirklich negative Auswirkungen hat, da ich die Scripte für jedes von mir bearbeitete Event in eine eigene Datei ausgelagert habe, die ich wiederum vom Custom-Plugin innerhalb des Eventhandlers aus aufrufe. So habe ich einen besseren Überblick für alle Formulare und die dort benutzten/erweiterten Events. Und dort steht immer ein "return true;" am Ende. Aber es soll natürlich korrekt und sicher sein. Deshalb nochmals Danke für die Korrektur. Ich muss mich unbedingt mal mit einem Debugger auseinandersetzen. Vielleicht XDebug? Bis dahin muss ich mit Logfiles arbeiten. Mal sehen, was nach ein paar Tagen loggen herauszufinden ist.

Freundliche Grüße aus PM
Heinz

Mehr
1 Monat 1 Woche her #10218 von Administrator IV
Hallo Heinz,

nur damit es keine Missverständnisse gibt.

Zu: Und dort steht immer ein "return true;" am Ende.

Es ging bei meinem Hinweise nicht um exakt das eine 'return;' am Ende.
Bei höheren PHP-Versionen reicht schon ein Code-Bereich, der gar nicht anläuft und tatsächlich abläuft, um einen fatalen Fehler zu erhalten.
Etwa die PHP Version 8.2.6 meldet hier einen 'Compile Error' und keinen 'Runtime-Error'.

Es ging um das folgende Code-Stück mittendrin:
Code:
if ($form->context != "vfedit{$form->id}") {     // Script nur in Edit-Mail ausführen     return; }

Liebe Grüße, Ingmar

:idea: I recommend you the new and up-to-date documentation for Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/en/docs/
Most of this also applies retrospectively to Joomla 3.
Please only ask 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/docs/
Das meiste gilt rückwirkend auch für Joomla 3.
Bitte immer nur 1 Frage pro Thema stellen :-).
Folgende Benutzer bedankten sich: MaliRaj

Moderatoren: Administrator AVAdministrator IV
Powered by Kunena Forum