CluPilotCloud/app/Services/Mail/MailRoute.php

44 lines
1.2 KiB
PHP

<?php
namespace App\Services\Mail;
use App\Models\Mailbox;
use App\Support\Settings;
/**
* Welches Postfach trägt diese Mailart.
*
* Eine Ebene ÜBER den Zwecken, kein Ersatz für sie. Ohne Eintrag entscheidet
* weiter der Zweck — der Umbau ändert also am heutigen Verhalten nichts, und
* genau das ist die Bedingung dafür, dass man ihn gefahrlos ausrollen kann.
*/
final class MailRoute
{
public static function settingKey(string $mailKey): string
{
return 'mail.route.'.$mailKey;
}
/**
* Das Postfach für diese Mailart — der Eintrag, sonst der Zweck.
*
* Ein Eintrag, der auf ein gelöschtes oder abgeschaltetes Postfach zeigt,
* fällt auf den Zweck zurück. Eine Mail, die nicht rausgeht, ist schlimmer
* als eine aus der zweitbesten Adresse.
*/
public static function purposeOrMailbox(string $mailKey, string $purpose): ?Mailbox
{
$key = (string) Settings::get(self::settingKey($mailKey), '');
if ($key !== '') {
$box = Mailbox::findByKey($key);
if ($box !== null && $box->active) {
return $box;
}
}
return app(MailboxResolver::class)->for($purpose);
}
}