Use SubscriberEntity instead of the Model

[MAILPOET-4514]
This commit is contained in:
David Remer
2022-07-28 13:27:17 +03:00
committed by Aschepikov
parent 26c7e4d1cc
commit fbd7cf8cc7
2 changed files with 28 additions and 11 deletions

View File

@ -2,8 +2,8 @@
namespace MailPoet\Subscription\Captcha\Validator; namespace MailPoet\Subscription\Captcha\Validator;
use MailPoet\Models\Subscriber;
use MailPoet\Subscribers\SubscriberIPsRepository; use MailPoet\Subscribers\SubscriberIPsRepository;
use MailPoet\Subscribers\SubscribersRepository;
use MailPoet\Subscription\Captcha\CaptchaPhrase; use MailPoet\Subscription\Captcha\CaptchaPhrase;
use MailPoet\Subscription\Captcha\CaptchaSession; use MailPoet\Subscription\Captcha\CaptchaSession;
use MailPoet\Subscription\SubscriptionUrlFactory; use MailPoet\Subscription\SubscriptionUrlFactory;
@ -28,18 +28,23 @@ class BuiltInCaptchaValidator implements CaptchaValidator {
/** @var SubscriberIPsRepository */ /** @var SubscriberIPsRepository */
private $subscriberIPsRepository; private $subscriberIPsRepository;
/** @var SubscribersRepository */
private $subscribersRepository;
public function __construct( public function __construct(
SubscriptionUrlFactory $subscriptionUrlFactory, SubscriptionUrlFactory $subscriptionUrlFactory,
CaptchaPhrase $captchaPhrase, CaptchaPhrase $captchaPhrase,
CaptchaSession $captchaSession, CaptchaSession $captchaSession,
WPFunctions $wp, WPFunctions $wp,
SubscriberIPsRepository $subscriberIPsRepository SubscriberIPsRepository $subscriberIPsRepository,
SubscribersRepository $subscribersRepository
) { ) {
$this->subscriptionUrlFactory = $subscriptionUrlFactory; $this->subscriptionUrlFactory = $subscriptionUrlFactory;
$this->captchaPhrase = $captchaPhrase; $this->captchaPhrase = $captchaPhrase;
$this->captchaSession = $captchaSession; $this->captchaSession = $captchaSession;
$this->wp = $wp; $this->wp = $wp;
$this->subscriberIPsRepository = $subscriberIPsRepository; $this->subscriberIPsRepository = $subscriberIPsRepository;
$this->subscribersRepository = $subscribersRepository;
} }
public function validate(array $data): bool { public function validate(array $data): bool {
@ -100,10 +105,9 @@ class BuiltInCaptchaValidator implements CaptchaValidator {
// Check limits per recipient if enabled // Check limits per recipient if enabled
if ($subscriberEmail) { if ($subscriberEmail) {
$subscriber = Subscriber::where('email', $subscriberEmail)->findOne(); $subscriber = $this->subscribersRepository->findOneBy(['email' => $subscriberEmail]);
if ( if (
$subscriber instanceof Subscriber $subscriber && $subscriber->getConfirmationsCount() >= $subscriptionCaptchaRecipientLimit
&& $subscriber->countConfirmations >= $subscriptionCaptchaRecipientLimit
) { ) {
return true; return true;
} }

View File

@ -4,6 +4,7 @@ namespace MailPoet\Subscription\Captcha\Validator;
use Codeception\Stub; use Codeception\Stub;
use MailPoet\Subscribers\SubscriberIPsRepository; use MailPoet\Subscribers\SubscriberIPsRepository;
use MailPoet\Subscribers\SubscribersRepository;
use MailPoet\Subscription\Captcha\CaptchaPhrase; use MailPoet\Subscription\Captcha\CaptchaPhrase;
use MailPoet\Subscription\Captcha\CaptchaSession; use MailPoet\Subscription\Captcha\CaptchaSession;
use MailPoet\Subscription\SubscriptionUrlFactory; use MailPoet\Subscription\SubscriptionUrlFactory;
@ -43,12 +44,14 @@ class BuiltInCaptchaValidatorTest extends \MailPoetUnitTest
$this $this
); );
$captchaSession = Stub::makeEmpty(CaptchaSession::class); $captchaSession = Stub::makeEmpty(CaptchaSession::class);
$subscriberRepository = Stub::makeEmpty(SubscriberIPsRepository::class); $subscriberIpRepository = Stub::makeEmpty(SubscriberIPsRepository::class);
$subscriberRepository = Stub::makeEmpty(SubscribersRepository::class);
$testee = new BuiltInCaptchaValidator( $testee = new BuiltInCaptchaValidator(
$subscriptionUrlFactory, $subscriptionUrlFactory,
$captchaPhrase, $captchaPhrase,
$captchaSession, $captchaSession,
$this->wp, $this->wp,
$subscriberIpRepository,
$subscriberRepository $subscriberRepository
); );
@ -74,12 +77,14 @@ class BuiltInCaptchaValidatorTest extends \MailPoetUnitTest
); );
$captchaSession = Stub::makeEmpty(CaptchaSession::class); $captchaSession = Stub::makeEmpty(CaptchaSession::class);
$subscriberRepository = Stub::makeEmpty(SubscriberIPsRepository::class); $subscriberIpRepository = Stub::makeEmpty(SubscriberIPsRepository::class);
$subscriberRepository = Stub::makeEmpty(SubscribersRepository::class);
$testee = new BuiltInCaptchaValidator( $testee = new BuiltInCaptchaValidator(
$subscriptionUrlFactory, $subscriptionUrlFactory,
$captchaPhrase, $captchaPhrase,
$captchaSession, $captchaSession,
$wp, $wp,
$subscriberIpRepository,
$subscriberRepository $subscriberRepository
); );
@ -171,12 +176,14 @@ class BuiltInCaptchaValidatorTest extends \MailPoetUnitTest
], ],
$this $this
); );
$subscriberRepository = Stub::makeEmpty(SubscriberIPsRepository::class); $subscriberIpRepository = Stub::makeEmpty(SubscriberIPsRepository::class);
$subscriberRepository = Stub::makeEmpty(SubscribersRepository::class);
$testee = new BuiltInCaptchaValidator( $testee = new BuiltInCaptchaValidator(
$subscriptionUrlFactory, $subscriptionUrlFactory,
$captchaPhrase, $captchaPhrase,
$captchaSession, $captchaSession,
$wp, $wp,
$subscriberIpRepository,
$subscriberRepository $subscriberRepository
); );
@ -206,12 +213,14 @@ class BuiltInCaptchaValidatorTest extends \MailPoetUnitTest
$this $this
); );
$captchaSession = Stub::makeEmpty(CaptchaSession::class); $captchaSession = Stub::makeEmpty(CaptchaSession::class);
$subscriberRepository = Stub::makeEmpty(SubscriberIPsRepository::class); $subscriberIpRepository = Stub::makeEmpty(SubscriberIPsRepository::class);
$subscriberRepository = Stub::makeEmpty(SubscribersRepository::class);
$testee = new BuiltInCaptchaValidator( $testee = new BuiltInCaptchaValidator(
$subscriptionUrlFactory, $subscriptionUrlFactory,
$captchaPhrase, $captchaPhrase,
$captchaSession, $captchaSession,
$this->wp, $this->wp,
$subscriberIpRepository,
$subscriberRepository $subscriberRepository
); );
@ -241,12 +250,14 @@ class BuiltInCaptchaValidatorTest extends \MailPoetUnitTest
$this $this
); );
$captchaSession = Stub::makeEmpty(CaptchaSession::class); $captchaSession = Stub::makeEmpty(CaptchaSession::class);
$subscriberRepository = Stub::makeEmpty(SubscriberIPsRepository::class); $subscriberIpRepository = Stub::makeEmpty(SubscriberIPsRepository::class);
$subscriberRepository = Stub::makeEmpty(SubscribersRepository::class);
$testee = new BuiltInCaptchaValidator( $testee = new BuiltInCaptchaValidator(
$subscriptionUrlFactory, $subscriptionUrlFactory,
$captchaPhrase, $captchaPhrase,
$captchaSession, $captchaSession,
$this->wp, $this->wp,
$subscriberIpRepository,
$subscriberRepository $subscriberRepository
); );
@ -282,12 +293,14 @@ class BuiltInCaptchaValidatorTest extends \MailPoetUnitTest
$this $this
); );
$captchaSession = Stub::makeEmpty(CaptchaSession::class); $captchaSession = Stub::makeEmpty(CaptchaSession::class);
$subscriberRepository = Stub::makeEmpty(SubscriberIPsRepository::class); $subscriberIpRepository = Stub::makeEmpty(SubscriberIPsRepository::class);
$subscriberRepository = Stub::makeEmpty(SubscribersRepository::class);
$testee = new BuiltInCaptchaValidator( $testee = new BuiltInCaptchaValidator(
$subscriptionUrlFactory, $subscriptionUrlFactory,
$captchaPhrase, $captchaPhrase,
$captchaSession, $captchaSession,
$this->wp, $this->wp,
$subscriberIpRepository,
$subscriberRepository $subscriberRepository
); );