| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <?php
- namespace MailPoet\Util\Notices;
- if (!defined('ABSPATH')) exit;
- use MailPoet\Config\Menu;
- use MailPoet\Mailer\MailerError;
- use MailPoet\Mailer\MailerLog;
- use MailPoet\Newsletter\Renderer\EscapeHelper;
- use MailPoet\Services\AuthorizedEmailsController;
- use MailPoet\Settings\SettingsController;
- use MailPoet\Util\Helpers;
- use MailPoet\WP\Functions as WPFunctions;
- class UnauthorizedEmailInNewslettersNotice {
- const OPTION_NAME = 'unauthorized-email-in-newsletters-addresses-notice';
- /** @var SettingsController */
- private $settings;
- /** @var WPFunctions */
- private $wp;
- public function __construct(
- SettingsController $settings,
- WPFunctions $wp
- ) {
- $this->settings = $settings;
- $this->wp = $wp;
- }
- public function init($shouldDisplay) {
- $validationError = $this->settings->get(AuthorizedEmailsController::AUTHORIZED_EMAIL_ADDRESSES_ERROR_SETTING);
- if ($shouldDisplay && isset($validationError['invalid_senders_in_newsletters'])) {
- return $this->display($validationError);
- }
- }
- public function display($validationError) {
- $message = $this->getMessageText();
- $message .= $this->getNewslettersLinks($validationError);
- $message .= $this->getFixThisButton();
- // Use Mailer log errors display system to display this notice
- $mailerLog = MailerLog::setError(MailerLog::getMailerLog(), MailerError::OPERATION_AUTHORIZATION, $message);
- MailerLog::updateMailerLog($mailerLog);
- }
- private function getMessageText() {
- $message = $this->wp->__('<b>Your automatic emails have been paused</b> because some email addresses haven’t been authorized yet.', 'mailpoet');
- return "<p>$message</p>";
- }
- private function getNewslettersLinks($validationError) {
- $links = '';
- foreach ($validationError['invalid_senders_in_newsletters'] as $error) {
- $linkText = $this->wp->_x('Update the from address of %s', '%s will be replaced by a newsletter subject', 'mailpoet');
- $linkText = str_replace('%s', EscapeHelper::escapeHtmlText($error['subject']), $linkText);
- $linkUrl = $this->wp->adminUrl('admin.php?page=' . Menu::MAIN_PAGE_SLUG . '#/send/' . $error['newsletter_id']);
- $link = Helpers::replaceLinkTags("[link]{$linkText}[/link]", $linkUrl, ['target' => '_blank']);
- $links .= "<p>$link</p>";
- }
- return $links;
- }
- private function getFixThisButton() {
- $button = '<button class="button button-primary mailpoet-js-button-fix-this">' . $this->wp->__('Fix this!', 'mailpoet') . '</button>';
- return "<p>$button</p>";
- }
- }
|