80 lines
1.8 KiB
PHP
80 lines
1.8 KiB
PHP
<?php declare(strict_types = 1);
|
|
|
|
namespace MailPoet\Automation\Engine\Exceptions;
|
|
|
|
if (!defined('ABSPATH')) exit;
|
|
|
|
|
|
use Exception as PhpException;
|
|
use MailPoet\API\REST\Exception as RestException;
|
|
use Throwable;
|
|
|
|
/**
|
|
* Frames all MailPoet Automation exceptions ("$e instanceof MailPoet\Automation\Exception").
|
|
*/
|
|
abstract class Exception extends PhpException implements RestException {
|
|
/** @var int */
|
|
protected $statusCode = 500;
|
|
|
|
/** @var string */
|
|
protected $errorCode;
|
|
|
|
/** @var string[] */
|
|
protected $errors = [];
|
|
|
|
final public function __construct(
|
|
string $message = null,
|
|
string $errorCode = null,
|
|
Throwable $previous = null
|
|
) {
|
|
parent::__construct($message ?? __('Unknown error.', 'mailpoet'), 0, $previous);
|
|
$this->errorCode = $errorCode ?? 'mailpoet_automation_unknown_error';
|
|
}
|
|
|
|
/** @return static */
|
|
public static function create(Throwable $previous = null) {
|
|
return new static(null, null, $previous);
|
|
}
|
|
|
|
/** @return static */
|
|
public function withStatusCode(int $statusCode) {
|
|
$this->statusCode = $statusCode;
|
|
return $this;
|
|
}
|
|
|
|
/** @return static */
|
|
public function withError(string $id, string $error) {
|
|
$this->errors[$id] = $error;
|
|
return $this;
|
|
}
|
|
|
|
/** @return static */
|
|
public function withErrorCode(string $errorCode) {
|
|
$this->errorCode = $errorCode;
|
|
return $this;
|
|
}
|
|
|
|
/** @return static */
|
|
public function withMessage(string $message) {
|
|
$this->message = $message;
|
|
return $this;
|
|
}
|
|
|
|
/** @return static */
|
|
public function withErrors(array $errors) {
|
|
$this->errors = $errors;
|
|
return $this;
|
|
}
|
|
|
|
public function getStatusCode(): int {
|
|
return $this->statusCode;
|
|
}
|
|
|
|
public function getErrorCode(): string {
|
|
return $this->errorCode;
|
|
}
|
|
|
|
public function getErrors(): array {
|
|
return $this->errors;
|
|
}
|
|
}
|