Seite 1 von 1

Mailversand mit Hook nach Objekt Erstellung / Änderung

Verfasst: Do 21. Apr 2022, 13:34
von Finn
Moin Moin,

ich habe bisher noch kaum Erfahrungen mit Hooks, hat jemand ein Beispiel wie man in WE 9.x einen Mailversand mit Hilfe eines Hooks realisiert?

LG
Finn

Re: Mailversand mit Hook nach Objekt Erstellung / Änderung

Verfasst: Do 21. Apr 2022, 14:21
von mokraemer
das ist nicht weiter kompliziert. Du nimmst den Hook aus
samples/hook/we_hook_publish.class.php
und kopierst den nach
custom/hook/we_hook_publish.class.php

Als Anpassung kannst du dann in der execute-Methode anpassen:

Code: Alles auswählen

	public function execute(): bool{
		switch(get_class($this->obj)){
			case 'we_contents_objectFile':
				we_mail('ich@ich.de', 'Änderung Objekt ' . $this->obj->ID, 'Das Objekt wurde geändert');
				break;
		}
		return true;
	}
Kannst du das vielleicht dann auch in unserer Doku zu dem Thema ergänzen?

Re: Mailversand mit Hook nach Objekt Erstellung / Änderung

Verfasst: Do 21. Apr 2022, 14:42
von Finn
Alles klar, danke! Dann guck ich mal, wie weit ich komme.

Ja pack ich gerne in die Doku rein.

Re: Mailversand mit Hook nach Objekt Erstellung / Änderung

Verfasst: Do 21. Apr 2022, 15:11
von Finn
Wie komme ich denn an die alten Werte der Felder?

Re: Mailversand mit Hook nach Objekt Erstellung / Änderung

Verfasst: Do 21. Apr 2022, 15:36
von mokraemer
im publish hook gar nicht mehr, da sind die Daten in die DB geschrieben. Im prePublish hook sind die Daten nur im Objekt, aber in der DB noch nicht geschrieben.
Ein explizites "vorher/nachher" im Objekt haben wir nicht - hat es bisher nicht gebraucht.

Re: Mailversand mit Hook nach Objekt Erstellung / Änderung

Verfasst: Do 21. Apr 2022, 16:36
von Finn
Alles klar.

Ich habe in dem obj dann ja auch Zugriff auf die
WebUserID
CreatorID
ModifierID

Allerdings sind die alle 0. Oder heißt 0 in dem Fall der webUser mit der ID 1?

Und ich müsste ja über die ID des Creators an die Felder des webUsers kommen um z.B dem creator des Objects (angelegt über Frontend)
eine Nachricht zu senden, dass sich z.B. das Feld Status geändert hat.

Re: Mailversand mit Hook nach Objekt Erstellung / Änderung

Verfasst: Do 21. Apr 2022, 16:46
von mokraemer
Die IDs werden idr. nur beim Speichern gesetzt (ModifierID) und die anderen idr nie ausgelesen.

Re: Mailversand mit Hook nach Objekt Erstellung / Änderung

Verfasst: Mo 25. Apr 2022, 13:04
von Finn
Verstehe, das bedeutet, ich muss mir dann wahrscheinlich selbst was basteln.

Komme ich denn mit der UserID z.B. an eine Mailadresse im Hook? Oder geht das aus Sicherheitsgründen nicht?

Re: Mailversand mit Hook nach Objekt Erstellung / Änderung

Verfasst: Do 21. Jul 2022, 18:03
von Finn
Bei dem Hook "publish" kann ich ja über den switch mithilfe der klasse obj checken ob ein Objekt oder Dokument veröffentlicht wurden, in dem Hook "prePublish" komme ich an die Infos aber so nicht dran. Gibts da einen anderen Weg?

Hier mal der Ausschnitt, den ich meine:

Code: Alles auswählen

class we_hook_publish extends we_hook_base
{
  /** @var we_document_base */
  protected $obj;

  /** @var ?DateTime */
  protected $prePublishTime;

  public function __construct(we_hook_handler $handler, array $params)
  {
    parent::__construct($handler, $params);
    $this->prePublishTime = $params['prePublishTime'];
    $this->obj = $params['obj'];
  }

  public function execute(): bool
  {
    switch (get_class($this->obj)) {
      case 'we_contents_objectFile':