blob: 6537a05740d9399071858c0a24c50e2993b371af [file] [log] [blame]
<?php
declare(strict_types=1);
namespace Ddeboer\Imap\Exception;
abstract class AbstractException extends \RuntimeException
{
private const ERROR_LABELS = [
\E_ERROR => 'E_ERROR',
\E_WARNING => 'E_WARNING',
\E_PARSE => 'E_PARSE',
\E_NOTICE => 'E_NOTICE',
\E_CORE_ERROR => 'E_CORE_ERROR',
\E_CORE_WARNING => 'E_CORE_WARNING',
\E_COMPILE_ERROR => 'E_COMPILE_ERROR',
\E_COMPILE_WARNING => 'E_COMPILE_WARNING',
\E_USER_ERROR => 'E_USER_ERROR',
\E_USER_WARNING => 'E_USER_WARNING',
\E_USER_NOTICE => 'E_USER_NOTICE',
\E_STRICT => 'E_STRICT',
\E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR',
\E_DEPRECATED => 'E_DEPRECATED',
\E_USER_DEPRECATED => 'E_USER_DEPRECATED',
];
final public function __construct(string $message, int $code = 0, \Throwable $previous = null)
{
$errorType = '';
if (isset(self::ERROR_LABELS[$code])) {
$errorType = \sprintf('[%s] ', self::ERROR_LABELS[$code]);
}
$joinString = "\n- ";
$alerts = \imap_alerts();
$errors = \imap_errors();
$completeMessage = \sprintf(
"%s%s\nimap_alerts (%s):%s\nimap_errors (%s):%s",
$errorType,
$message,
false !== $alerts ? \count($alerts) : 0,
false !== $alerts ? $joinString . \implode($joinString, $alerts) : '',
false !== $errors ? \count($errors) : 0,
false !== $errors ? $joinString . \implode($joinString, $errors) : ''
);
parent::__construct($completeMessage, $code, $previous);
}
}