Files
piratepoet/mailpoet/lib/Mailer/MailerError.php
Rostislav Wolny db467d8616 Add handling of subscriber limit error to MailPoet error mapper
When the shop blocked access for an API key due subscriber limit it used
to set the error as "Insufficient privileges," and that was in the plugin
interpreted same as "Subscribers limit reached".
The SHOP-1228 changes the error message will be set to "Subscribers limit reached".
This commit updates the error mapper to be able to process the new error message.
It also keeps the old approach for previously blocked keys.
[MAILPOET-5191]
2023-05-10 13:05:37 +02:00

111 lines
2.4 KiB
PHP

<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing
namespace MailPoet\Mailer;
class MailerError {
const OPERATION_CONNECT = 'connect';
const OPERATION_SEND = 'send';
const OPERATION_AUTHORIZATION = 'authorization';
const OPERATION_INSUFFICIENT_PRIVILEGES = 'insufficient_privileges';
const OPERATION_SUBSCRIBER_LIMIT_REACHED = 'subscriber_limit_reached';
const OPERATION_EMAIL_LIMIT_REACHED = 'email_limit_reached';
const OPERATION_PENDING_APPROVAL = 'pending_approval';
const LEVEL_HARD = 'hard';
const LEVEL_SOFT = 'soft';
/** @var string */
private $operation;
/** @var string */
private $level;
/** @var string|null */
private $message;
/** @var int|null */
private $retryInterval;
/** @var array */
private $subscribersErrors = [];
/**
* @param string $operation
* @param string $level
* @param null|string $message
* @param int|null $retryInterval
* @param array $subscribersErrors
*/
public function __construct(
$operation,
$level,
$message = null,
$retryInterval = null,
array $subscribersErrors = []
) {
$this->operation = $operation;
$this->level = $level;
$this->message = $message;
$this->retryInterval = $retryInterval;
$this->subscribersErrors = $subscribersErrors;
}
/**
* @return string
*/
public function getOperation() {
return $this->operation;
}
/**
* @return string
*/
public function getLevel() {
return $this->level;
}
/**
* @return null|string
*/
public function getMessage() {
return $this->message;
}
/**
* @return int|null
*/
public function getRetryInterval() {
return $this->retryInterval;
}
/**
* @return SubscriberError[]
*/
public function getSubscriberErrors() {
return $this->subscribersErrors;
}
public function getMessageWithFailedSubscribers() {
$message = $this->message ?: '';
if (!$this->subscribersErrors) {
return $message;
}
$message .= $this->message ? ' ' : '';
if (count($this->subscribersErrors) === 1) {
$message .= __('Unprocessed subscriber:', 'mailpoet') . ' ';
} else {
$message .= __('Unprocessed subscribers:', 'mailpoet') . ' ';
}
$message .= implode(
', ',
array_map(function (SubscriberError $subscriberError) {
return "($subscriberError)";
}, $this->subscribersErrors)
);
return $message;
}
}