Improve message for confirmation emails when confirmation is disabled
[MAILPOET-4149]
This commit is contained in:
committed by
Veljko V
parent
e4b53dd763
commit
62c7022227
@@ -4,6 +4,7 @@ namespace MailPoet\API\JSON\v1;
|
||||
|
||||
use MailPoet\API\JSON\Endpoint as APIEndpoint;
|
||||
use MailPoet\API\JSON\Error as APIError;
|
||||
use MailPoet\API\JSON\Response;
|
||||
use MailPoet\API\JSON\ResponseBuilders\SubscribersResponseBuilder;
|
||||
use MailPoet\Config\AccessControl;
|
||||
use MailPoet\Doctrine\Validator\ValidationException;
|
||||
@@ -13,12 +14,14 @@ use MailPoet\Exception;
|
||||
use MailPoet\Listing;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Segments\SegmentsRepository;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Subscribers\ConfirmationEmailMailer;
|
||||
use MailPoet\Subscribers\SubscriberListingRepository;
|
||||
use MailPoet\Subscribers\SubscriberSaveController;
|
||||
use MailPoet\Subscribers\SubscribersRepository;
|
||||
use MailPoet\Subscribers\SubscriberSubscribeController;
|
||||
use MailPoet\UnexpectedValueException;
|
||||
use MailPoet\Util\Helpers;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
class Subscribers extends APIEndpoint {
|
||||
@@ -53,6 +56,9 @@ class Subscribers extends APIEndpoint {
|
||||
/** @var SubscriberSubscribeController */
|
||||
private $subscribeController;
|
||||
|
||||
/** @var SettingsController */
|
||||
private $settings;
|
||||
|
||||
public function __construct(
|
||||
Listing\Handler $listingHandler,
|
||||
ConfirmationEmailMailer $confirmationEmailMailer,
|
||||
@@ -61,7 +67,8 @@ class Subscribers extends APIEndpoint {
|
||||
SubscriberListingRepository $subscriberListingRepository,
|
||||
SegmentsRepository $segmentsRepository,
|
||||
SubscriberSaveController $saveController,
|
||||
SubscriberSubscribeController $subscribeController
|
||||
SubscriberSubscribeController $subscribeController,
|
||||
SettingsController $settings
|
||||
) {
|
||||
$this->listingHandler = $listingHandler;
|
||||
$this->confirmationEmailMailer = $confirmationEmailMailer;
|
||||
@@ -71,6 +78,7 @@ class Subscribers extends APIEndpoint {
|
||||
$this->segmentsRepository = $segmentsRepository;
|
||||
$this->saveController = $saveController;
|
||||
$this->subscribeController = $subscribeController;
|
||||
$this->settings = $settings;
|
||||
}
|
||||
|
||||
public function get($data = []) {
|
||||
@@ -196,6 +204,12 @@ class Subscribers extends APIEndpoint {
|
||||
}
|
||||
|
||||
public function sendConfirmationEmail($data = []) {
|
||||
if (!(bool)$this->settings->get('signup_confirmation.enabled', true)) {
|
||||
$errorMessage = __('Sign-up confirmation is disabled in your [link]MailPoet settings[/link]. Please enable it to resend confirmation emails or update your subscriber’s status manually.', 'mailpoet');
|
||||
$errorMessage = Helpers::replaceLinkTags($errorMessage, 'admin.php?page=mailpoet-settings#/signup');
|
||||
return $this->errorResponse([APIError::BAD_REQUEST => $errorMessage], [], Response::STATUS_BAD_REQUEST);
|
||||
}
|
||||
|
||||
$id = (isset($data['id']) ? (int)$data['id'] : false);
|
||||
$subscriber = $this->subscribersRepository->findOneById($id);
|
||||
if ($subscriber instanceof SubscriberEntity) {
|
||||
|
@@ -96,7 +96,8 @@ class SubscribersTest extends \MailPoetTest {
|
||||
$container->get(SubscriberListingRepository::class),
|
||||
$container->get(SegmentsRepository::class),
|
||||
$container->get(SubscriberSaveController::class),
|
||||
$container->get(SubscriberSubscribeController::class)
|
||||
$container->get(SubscriberSubscribeController::class),
|
||||
$container->get(SettingsController::class)
|
||||
);
|
||||
$this->obfuscatedEmail = $obfuscator->obfuscate('email');
|
||||
$this->obfuscatedSegments = $obfuscator->obfuscate('segments');
|
||||
@@ -945,6 +946,13 @@ class SubscribersTest extends \MailPoetTest {
|
||||
expect($response->status)->equals(APIResponse::STATUS_NOT_FOUND);
|
||||
}
|
||||
|
||||
public function testItDisplaysProperErrorMessageWhenConfirmationEmailsAreDisabled() {
|
||||
$this->settings->set('signup_confirmation.enabled', false);
|
||||
$response = $this->endpoint->sendConfirmationEmail(['id' => $this->subscriber1->getId()]);
|
||||
expect($response->status)->equals(APIResponse::STATUS_BAD_REQUEST);
|
||||
expect($response->errors[0]['message'])->equals('Sign-up confirmation is disabled in your <a href="admin.php?page=mailpoet-settings#/signup">MailPoet settings</a>. Please enable it to resend confirmation emails or update your subscriber’s status manually.');
|
||||
}
|
||||
|
||||
public function testItKeepsSpecialSegmentsUnchangedAfterSaving() {
|
||||
$wcSegment = Segment::createOrUpdate([
|
||||
'name' => 'WooCommerce Users',
|
||||
|
Reference in New Issue
Block a user