44 lines
1.2 KiB
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);
|
|
}
|
|
}
|