Stand: SMTP-Test, Admin-Mail-Tab, Notifiable-Fix, Lazy-Quill

- Fix: Notifiable-Trait zum User-Model hinzugefuegt (behebt notify()-500er)
- Installer: SMTP-Verbindungstest mit EsmtpTransport + Ueberspringen-Link
- Admin: Neuer E-Mail-Tab mit SMTP-Konfiguration + Verbindungstest
- Admin: Lazy Quill-Initialisierung (nur sichtbare Locale wird geladen)
- Uebersetzungen: 17 neue Mail-Keys in allen 6 Sprachen

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Rhino
2026-03-02 07:30:37 +01:00
commit 2e24a40d68
9633 changed files with 1300799 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class ApacheException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class ApcuException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class ArrayException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class Bzip2Exception extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class CalendarException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class ClassobjException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class ComException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class CubridException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class DatetimeException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class DirException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class EioException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class ErrorfuncException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class ExecException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class FileinfoException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class FilesystemException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class FilterException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class FpmException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class FtpException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class FunchandException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class GettextException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class GmpException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class GnupgException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class HashException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class IbaseException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class IbmDb2Exception extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class IconvException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class ImageException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class ImapException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class InfoException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class InotifyException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class LdapException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class LibxmlException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class LzfException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class MailparseException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class MbstringException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class MiscException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class MysqlException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class MysqliException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class NetworkException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class Oci8Exception extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class OpcacheException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class OutcontrolException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class PcntlException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class PgsqlException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class PosixException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class PsException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class PspellException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class ReadlineException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class RnpException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class RpminfoException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class RrdException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class SemException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class SessionException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class ShmopException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class SocketsException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class SodiumException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class SolrException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class SplException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class SqlsrvException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class SsdeepException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class Ssh2Exception extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class StreamException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class StringsException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class SwooleException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class UodbcException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class UopzException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class UrlException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class VarException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class XdiffException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class XmlException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class XmlrpcException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class YamlException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class YazException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class ZipException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Safe\Exceptions;
class ZlibException extends \ErrorException implements SafeExceptionInterface
{
public static function createFromPhpError(): self
{
$error = error_get_last();
return new self($error['message'] ?? 'An error occurred', 0, $error['type'] ?? 1);
}
}