presseportale/app/Enums/ConversionSource.php
Kevin Adametz 3d3ddc2dc8 images: Titelbild-Formular v2, Admin-Upload mit Kundenbestätigung, Entfernen mit Sofortlöschung (Bildkennzeichnung Block B)
- press-release-images-manager-v2 hinter IMAGE_RIGHTS_V2: drei Blöcke, Vorbelegung aus Metadaten, Bestätigung mit archiviertem Wortlaut, Bild-Bindung über Hash, Fokuspunkt und Letterbox, Zustände absent/prefilled/error
- CustomerImageConfirmation: Magic-Link an den Kontoinhaber, Karte auf der Kundenseite, Kanal magic_link
- PressReleaseImageRemover: nie veröffentlicht = alles sofort weg, veröffentlicht = Soft Delete, Original bleibt
- ConversionSource::MailImageConfirmation

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-22 09:31:32 +00:00

54 lines
1.8 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';
/** „Bild bestätigen" nach einem Admin-Upload (Bildkennzeichnung B.4, E10). */
case MailImageConfirmation = 'mail_image_confirmation';
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::MailImageConfirmation => 'Mail „Bild bestätigen"',
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;
}
}