Refactor Captcha Renderer to use Doctrine

[MAILPOET-3644]
This commit is contained in:
Pavel Dohnal
2021-09-15 09:50:17 +02:00
committed by Veljko V
parent aced9ce0b7
commit 19b99b4ff1

View File

@@ -2,8 +2,9 @@
namespace MailPoet\Subscription; namespace MailPoet\Subscription;
use MailPoet\Entities\FormEntity;
use MailPoet\Form\FormsRepository;
use MailPoet\Form\Renderer as FormRenderer; use MailPoet\Form\Renderer as FormRenderer;
use MailPoet\Models\Form as FormModel;
use MailPoet\Util\Url as UrlHelper; use MailPoet\Util\Url as UrlHelper;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
@@ -23,11 +24,15 @@ class CaptchaRenderer {
/** @var FormRenderer */ /** @var FormRenderer */
private $formRenderer; private $formRenderer;
/** @var FormsRepository */
private $formsRepository;
public function __construct( public function __construct(
UrlHelper $urlHelper, UrlHelper $urlHelper,
WPFunctions $wp, WPFunctions $wp,
CaptchaSession $captchaSession, CaptchaSession $captchaSession,
SubscriptionUrlFactory $subscriptionUrlFactory, SubscriptionUrlFactory $subscriptionUrlFactory,
FormsRepository $formsRepository,
FormRenderer $formRenderer FormRenderer $formRenderer
) { ) {
$this->urlHelper = $urlHelper; $this->urlHelper = $urlHelper;
@@ -35,6 +40,7 @@ class CaptchaRenderer {
$this->captchaSession = $captchaSession; $this->captchaSession = $captchaSession;
$this->subscriptionUrlFactory = $subscriptionUrlFactory; $this->subscriptionUrlFactory = $subscriptionUrlFactory;
$this->formRenderer = $formRenderer; $this->formRenderer = $formRenderer;
$this->formsRepository = $formsRepository;
} }
public function getCaptchaPageTitle() { public function getCaptchaPageTitle() {
@@ -82,11 +88,10 @@ class CaptchaRenderer {
$formId = (int)$_GET['mailpoet_error']; $formId = (int)$_GET['mailpoet_error'];
} }
$formModel = FormModel::findOne($formId); $formModel = $this->formsRepository->findOneById($formId);
if (!$formModel instanceof FormModel) { if (!$formModel instanceof FormEntity) {
return false; return false;
} }
$formModel = $formModel->asArray();
if ($showSuccessMessage) { if ($showSuccessMessage) {
// Display a success message in a no-JS flow // Display a success message in a no-JS flow
@@ -123,12 +128,13 @@ class CaptchaRenderer {
} }
private function renderFormMessages( private function renderFormMessages(
array $formModel, FormEntity $formModel,
$showSuccessMessage = false, $showSuccessMessage = false,
$showErrorMessage = false $showErrorMessage = false
) { ) {
$settings = $formModel->getSettings() ?? [];
$formHtml = '<div class="mailpoet_message">'; $formHtml = '<div class="mailpoet_message">';
$formHtml .= '<p class="mailpoet_validate_success" ' . ($showSuccessMessage ? '' : ' style="display:none;"') . '>' . $formModel['settings']['success_message'] . '</p>'; $formHtml .= '<p class="mailpoet_validate_success" ' . ($showSuccessMessage ? '' : ' style="display:none;"') . '>' . $settings['success_message'] . '</p>';
$formHtml .= '<p class="mailpoet_validate_error" ' . ($showErrorMessage ? '' : ' style="display:none;"') . '>' . $this->wp->__('The characters you entered did not match the CAPTCHA image. Please try again with this new image.', 'mailpoet') . '</p>'; $formHtml .= '<p class="mailpoet_validate_error" ' . ($showErrorMessage ? '' : ' style="display:none;"') . '>' . $this->wp->__('The characters you entered did not match the CAPTCHA image. Please try again with this new image.', 'mailpoet') . '</p>';
$formHtml .= '</div>'; $formHtml .= '</div>';
return $formHtml; return $formHtml;