Improve message for confirmation emails when confirmation is disabled

[MAILPOET-4149]
This commit is contained in:
Rostislav Wolny
2022-04-25 16:28:44 +02:00
committed by Veljko V
parent e4b53dd763
commit 62c7022227
2 changed files with 24 additions and 2 deletions

View File

@@ -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 subscribers 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) {

View File

@@ -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 subscribers status manually.');
}
public function testItKeepsSpecialSegmentsUnchangedAfterSaving() {
$wcSegment = Segment::createOrUpdate([
'name' => 'WooCommerce Users',