Der Autor bekommt beim Block nach dem letzten Rot (oder Gelb mit eingeschalteter Queue) eine kurze Mail statt Stillstand: was passiert ist, dass nichts zu tun ist, und dass das Ergebnis per Mail kommt. Laeuft ueber notifyAuthor() wie Veroeffentlichung und Ablehnung (API-Regel, Sperrliste, adressbezogene Abmeldung, Bounce-Referenz); Opt-out am Typ "abgelehnt". Neue ConversionSource mail_review fuer den Link ins Konto. BladePhpBlockGuardTest wendet das Compiler-Muster auf alle Views an und faengt inline @php( vor einem spaeteren @endphp ab — fand den eigenen Erklaer-Kommentar im Modal, der nur zufaellig funktionierte. Regel in CLAUDE.md. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
50 lines
1.6 KiB
PHP
50 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\Enums;
|
|
|
|
/**
|
|
* Herkunft eines Konversionsereignisses (Roadmap Block 0).
|
|
*
|
|
* Der entscheidende Punkt: Der Wert wird auf dem MAGIC-LINK-TOKEN gespeichert,
|
|
* nicht in einer Session. Die zu messende Strecke führt über zwei Domains
|
|
* (presseecho.de → pressekonto.com), einen Mailclient und mögliche
|
|
* Weiterleitungen. Eine Session überlebt das nicht, ein Token schon. Ohne
|
|
* diesen Schritt wüsste man am Ende, dass jemand gebucht hat, aber nicht, ob er
|
|
* aus einer Ablehnungsmail kam — und genau das ist die Frage.
|
|
*/
|
|
enum ConversionSource: string
|
|
{
|
|
case MailPublish = 'mail_publish';
|
|
|
|
case MailReject = 'mail_reject';
|
|
|
|
/** Hinweis „ein Mensch prüft jetzt" nach erschöpfter Automatik (Roadmap 1d, E3). */
|
|
case MailReview = 'mail_review';
|
|
|
|
case ProfileClaim = 'profile_claim';
|
|
|
|
case Organic = 'organic';
|
|
|
|
public function label(): string
|
|
{
|
|
return match ($this) {
|
|
self::MailPublish => 'Veröffentlichungsmail',
|
|
self::MailReject => 'Ablehnungsmail',
|
|
self::MailReview => 'Prüfhinweis-Mail',
|
|
self::ProfileClaim => 'Hinweis auf der Newsroom-Seite',
|
|
self::Organic => 'ohne zugeordnete Herkunft',
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Auflösung eines Werts aus einer URL oder einem Token.
|
|
*
|
|
* Unbekannte Werte werden zu `organic` statt zu einem Fehler: Der Parameter
|
|
* steht in fremder Hand (Mailclient, Weiterleitung, manuell getippt) und
|
|
* darf niemals einen Request scheitern lassen.
|
|
*/
|
|
public static function parse(?string $value): self
|
|
{
|
|
return self::tryFrom((string) $value) ?? self::Organic;
|
|
}
|
|
}
|