Use getCurrentWPUser from SubscribersRepository
[MAILPOET-3268]
This commit is contained in:
@ -5,16 +5,19 @@ namespace MailPoet\AdminPages\Pages;
|
|||||||
use MailPoet\AdminPages\PageRenderer;
|
use MailPoet\AdminPages\PageRenderer;
|
||||||
use MailPoet\Config\Menu;
|
use MailPoet\Config\Menu;
|
||||||
use MailPoet\Config\ServicesChecker;
|
use MailPoet\Config\ServicesChecker;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Entities\SubscriberEntity;
|
||||||
use MailPoet\Newsletter\Shortcodes\ShortcodesHelper;
|
use MailPoet\Newsletter\Shortcodes\ShortcodesHelper;
|
||||||
use MailPoet\Services\Bridge;
|
use MailPoet\Services\Bridge;
|
||||||
use MailPoet\Settings\SettingsController;
|
use MailPoet\Settings\SettingsController;
|
||||||
use MailPoet\Settings\UserFlagsController;
|
use MailPoet\Settings\UserFlagsController;
|
||||||
|
use MailPoet\Subscribers\SubscribersRepository;
|
||||||
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
|
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
|
||||||
use MailPoet\WooCommerce\TransactionalEmails;
|
use MailPoet\WooCommerce\TransactionalEmails;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
|
||||||
class NewsletterEditor {
|
class NewsletterEditor {
|
||||||
|
private const DATE_FORMAT = 'Y-m-d H:i:s';
|
||||||
|
|
||||||
/** @var PageRenderer */
|
/** @var PageRenderer */
|
||||||
private $pageRenderer;
|
private $pageRenderer;
|
||||||
|
|
||||||
@ -39,6 +42,9 @@ class NewsletterEditor {
|
|||||||
/** @var ShortcodesHelper */
|
/** @var ShortcodesHelper */
|
||||||
private $shortcodesHelper;
|
private $shortcodesHelper;
|
||||||
|
|
||||||
|
/** @var SubscribersRepository */
|
||||||
|
private $subscribersRepository;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
PageRenderer $pageRenderer,
|
PageRenderer $pageRenderer,
|
||||||
SettingsController $settings,
|
SettingsController $settings,
|
||||||
@ -47,7 +53,8 @@ class NewsletterEditor {
|
|||||||
WPFunctions $wp,
|
WPFunctions $wp,
|
||||||
TransactionalEmails $wcTransactionalEmails,
|
TransactionalEmails $wcTransactionalEmails,
|
||||||
ShortcodesHelper $shortcodesHelper,
|
ShortcodesHelper $shortcodesHelper,
|
||||||
ServicesChecker $servicesChecker
|
ServicesChecker $servicesChecker,
|
||||||
|
SubscribersRepository $subscribersRepository
|
||||||
) {
|
) {
|
||||||
$this->pageRenderer = $pageRenderer;
|
$this->pageRenderer = $pageRenderer;
|
||||||
$this->settings = $settings;
|
$this->settings = $settings;
|
||||||
@ -57,6 +64,7 @@ class NewsletterEditor {
|
|||||||
$this->wcTransactionalEmails = $wcTransactionalEmails;
|
$this->wcTransactionalEmails = $wcTransactionalEmails;
|
||||||
$this->servicesChecker = $servicesChecker;
|
$this->servicesChecker = $servicesChecker;
|
||||||
$this->shortcodesHelper = $shortcodesHelper;
|
$this->shortcodesHelper = $shortcodesHelper;
|
||||||
|
$this->subscribersRepository = $subscribersRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function render() {
|
public function render() {
|
||||||
@ -76,8 +84,8 @@ class NewsletterEditor {
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
$subscriber = Subscriber::getCurrentWPUser();
|
$subscriber = $this->subscribersRepository->getCurrentWPUser();
|
||||||
$subscriberData = $subscriber ? $subscriber->asArray() : [];
|
$subscriberData = $subscriber ? $this->formatSubscriber($subscriber) : [];
|
||||||
$woocommerceData = [];
|
$woocommerceData = [];
|
||||||
if ($this->woocommerceHelper->isWooCommerceActive()) {
|
if ($this->woocommerceHelper->isWooCommerceActive()) {
|
||||||
$wcEmailSettings = $this->wcTransactionalEmails->getWCEmailSettings();
|
$wcEmailSettings = $this->wcTransactionalEmails->getWCEmailSettings();
|
||||||
@ -106,4 +114,28 @@ class NewsletterEditor {
|
|||||||
|
|
||||||
$this->pageRenderer->displayPage('newsletter/editor.html', $data);
|
$this->pageRenderer->displayPage('newsletter/editor.html', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function formatSubscriber(SubscriberEntity $subscriber): array {
|
||||||
|
return [
|
||||||
|
'id' => $subscriber->getId(),
|
||||||
|
'wp_user_id' => $subscriber->getWpUserId(),
|
||||||
|
'is_woocommerce_user' => (string)$subscriber->isWPUser(), // BC compatibility
|
||||||
|
'first_name' => $subscriber->getFirstName(),
|
||||||
|
'last_name' => $subscriber->getLastName(),
|
||||||
|
'email' => $subscriber->getEmail(),
|
||||||
|
'status' => $subscriber->getStatus(),
|
||||||
|
'subscribed_ip' => $subscriber->getSubscribedIp(),
|
||||||
|
'confirmed_ip' => $subscriber->getConfirmedIp(),
|
||||||
|
'confirmed_at' => ($confirmedAt = $subscriber->getConfirmedAt()) ? $confirmedAt->format(self::DATE_FORMAT) : null,
|
||||||
|
'last_subscribed_at' => ($lastSubscribedAt = $subscriber->getLastSubscribedAt()) ? $lastSubscribedAt->format(self::DATE_FORMAT) : null,
|
||||||
|
'created_at' => $subscriber->getCreatedAt()->format(self::DATE_FORMAT),
|
||||||
|
'updated_at' => $subscriber->getUpdatedAt()->format(self::DATE_FORMAT),
|
||||||
|
'deleted_at' => ($deletedAt = $subscriber->getDeletedAt()) ? $deletedAt->format(self::DATE_FORMAT) : null,
|
||||||
|
'unconfirmed_data' => $subscriber->getUnconfirmedData(),
|
||||||
|
'source' => $subscriber->getSource(),
|
||||||
|
'count_confirmation' => $subscriber->getConfirmationsCount(),
|
||||||
|
'unsubscribe_token' => $subscriber->getUnsubscribeToken(),
|
||||||
|
'link_token' => $subscriber->getLinkToken(),
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ use MailPoet\Models\Newsletter;
|
|||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
use MailPoet\Newsletter\Url as NewsletterUrl;
|
use MailPoet\Newsletter\Url as NewsletterUrl;
|
||||||
use MailPoet\Segments\SegmentSubscribersRepository;
|
use MailPoet\Segments\SegmentSubscribersRepository;
|
||||||
|
use MailPoet\Subscribers\SubscribersRepository;
|
||||||
use MailPoet\Subscription\Pages;
|
use MailPoet\Subscription\Pages;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
|
||||||
@ -21,14 +22,19 @@ class Shortcodes {
|
|||||||
/** @var SegmentSubscribersRepository */
|
/** @var SegmentSubscribersRepository */
|
||||||
private $segmentSubscribersRepository;
|
private $segmentSubscribersRepository;
|
||||||
|
|
||||||
|
/** @var SubscribersRepository */
|
||||||
|
private $subscribersRepository;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
Pages $subscriptionPages,
|
Pages $subscriptionPages,
|
||||||
WPFunctions $wp,
|
WPFunctions $wp,
|
||||||
SegmentSubscribersRepository $segmentSubscribersRepository
|
SegmentSubscribersRepository $segmentSubscribersRepository,
|
||||||
|
SubscribersRepository $subscribersRepository
|
||||||
) {
|
) {
|
||||||
$this->subscriptionPages = $subscriptionPages;
|
$this->subscriptionPages = $subscriptionPages;
|
||||||
$this->wp = $wp;
|
$this->wp = $wp;
|
||||||
$this->segmentSubscribersRepository = $segmentSubscribersRepository;
|
$this->segmentSubscribersRepository = $segmentSubscribersRepository;
|
||||||
|
$this->subscribersRepository = $subscribersRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function init() {
|
public function init() {
|
||||||
@ -101,7 +107,8 @@ class Shortcodes {
|
|||||||
|
|
||||||
$newsletters = Newsletter::getArchives($segmentIds);
|
$newsletters = Newsletter::getArchives($segmentIds);
|
||||||
|
|
||||||
$subscriber = Subscriber::getCurrentWPUser();
|
$subscriber = $this->subscribersRepository->getCurrentWPUser();
|
||||||
|
$subscriber = $subscriber ? Subscriber::findOne($subscriber->getId()) : null;
|
||||||
|
|
||||||
if (empty($newsletters)) {
|
if (empty($newsletters)) {
|
||||||
return $this->wp->applyFilters(
|
return $this->wp->applyFilters(
|
||||||
|
@ -6,7 +6,6 @@ use MailPoet\Entities\NewsletterEntity;
|
|||||||
use MailPoet\Entities\SubscriberEntity;
|
use MailPoet\Entities\SubscriberEntity;
|
||||||
use MailPoet\Mailer\Mailer;
|
use MailPoet\Mailer\Mailer;
|
||||||
use MailPoet\Mailer\MetaInfo;
|
use MailPoet\Mailer\MetaInfo;
|
||||||
use MailPoet\Models\Subscriber;
|
|
||||||
use MailPoet\Newsletter\Renderer\Renderer;
|
use MailPoet\Newsletter\Renderer\Renderer;
|
||||||
use MailPoet\Newsletter\Shortcodes\Shortcodes;
|
use MailPoet\Newsletter\Shortcodes\Shortcodes;
|
||||||
use MailPoet\Subscribers\SubscribersRepository;
|
use MailPoet\Subscribers\SubscribersRepository;
|
||||||
@ -57,10 +56,7 @@ class SendPreviewController {
|
|||||||
|
|
||||||
$body = implode($divider, $dataForShortcodes);
|
$body = implode($divider, $dataForShortcodes);
|
||||||
|
|
||||||
$subscriber = Subscriber::getCurrentWPUser();
|
$subscriber = $this->subscribersRepository->getCurrentWPUser();
|
||||||
if ($subscriber instanceof Subscriber) {
|
|
||||||
$subscriber = $this->subscribersRepository->findOneById($subscriber->id);
|
|
||||||
}
|
|
||||||
$this->shortcodes->setNewsletter($newsletter);
|
$this->shortcodes->setNewsletter($newsletter);
|
||||||
if ($subscriber instanceof SubscriberEntity) {
|
if ($subscriber instanceof SubscriberEntity) {
|
||||||
$this->shortcodes->setSubscriber($subscriber);
|
$this->shortcodes->setSubscriber($subscriber);
|
||||||
|
@ -7,6 +7,7 @@ use MailPoet\Models\SendingQueue;
|
|||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
use MailPoet\Newsletter\Url as NewsletterUrl;
|
use MailPoet\Newsletter\Url as NewsletterUrl;
|
||||||
use MailPoet\Subscribers\LinkTokens;
|
use MailPoet\Subscribers\LinkTokens;
|
||||||
|
use MailPoet\Subscribers\SubscribersRepository;
|
||||||
|
|
||||||
class ViewInBrowserController {
|
class ViewInBrowserController {
|
||||||
/** @var LinkTokens */
|
/** @var LinkTokens */
|
||||||
@ -15,12 +16,17 @@ class ViewInBrowserController {
|
|||||||
/** @var ViewInBrowserRenderer */
|
/** @var ViewInBrowserRenderer */
|
||||||
private $viewInBrowserRenderer;
|
private $viewInBrowserRenderer;
|
||||||
|
|
||||||
|
/** @var SubscribersRepository */
|
||||||
|
private $subscribersRepository;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
LinkTokens $linkTokens,
|
LinkTokens $linkTokens,
|
||||||
ViewInBrowserRenderer $viewInBrowserRenderer
|
ViewInBrowserRenderer $viewInBrowserRenderer,
|
||||||
|
SubscribersRepository $subscribersRepository
|
||||||
) {
|
) {
|
||||||
$this->linkTokens = $linkTokens;
|
$this->linkTokens = $linkTokens;
|
||||||
$this->viewInBrowserRenderer = $viewInBrowserRenderer;
|
$this->viewInBrowserRenderer = $viewInBrowserRenderer;
|
||||||
|
$this->subscribersRepository = $subscribersRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function view(array $data) {
|
public function view(array $data) {
|
||||||
@ -32,12 +38,12 @@ class ViewInBrowserController {
|
|||||||
// if this is a preview and subscriber does not exist,
|
// if this is a preview and subscriber does not exist,
|
||||||
// attempt to set subscriber to the current logged-in WP user
|
// attempt to set subscriber to the current logged-in WP user
|
||||||
if (!$subscriber && $isPreview) {
|
if (!$subscriber && $isPreview) {
|
||||||
$subscriber = Subscriber::getCurrentWPUser() ?: null;
|
$subscriber = $this->subscribersRepository->getCurrentWPUser();
|
||||||
}
|
}
|
||||||
|
|
||||||
// if queue and subscriber exist, subscriber must have received the newsletter
|
// if queue and subscriber exist, subscriber must have received the newsletter
|
||||||
$queue = $this->getQueue($newsletter, $data);
|
$queue = $this->getQueue($newsletter, $data);
|
||||||
if (!$isPreview && $queue && $subscriber && !$queue->isSubscriberProcessed($subscriber->id)) {
|
if (!$isPreview && $queue && $subscriber && !$queue->isSubscriberProcessed($subscriber->getId())) {
|
||||||
throw new \InvalidArgumentException("Subscriber did not receive the newsletter yet");
|
throw new \InvalidArgumentException("Subscriber did not receive the newsletter yet");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ class ViewInBrowserRenderer {
|
|||||||
public function render(
|
public function render(
|
||||||
bool $isPreview,
|
bool $isPreview,
|
||||||
Newsletter $newsletter,
|
Newsletter $newsletter,
|
||||||
Subscriber $subscriber = null,
|
SubscriberEntity $subscriber = null,
|
||||||
SendingQueue $queue = null
|
SendingQueue $queue = null
|
||||||
) {
|
) {
|
||||||
$wpUserPreview = $isPreview;
|
$wpUserPreview = $isPreview;
|
||||||
@ -83,7 +83,7 @@ class ViewInBrowserRenderer {
|
|||||||
$renderedNewsletter = $this->shortcodes->replace($newsletterBody);
|
$renderedNewsletter = $this->shortcodes->replace($newsletterBody);
|
||||||
if (!$wpUserPreview && $queue && $subscriber && $this->isTrackingEnabled) {
|
if (!$wpUserPreview && $queue && $subscriber && $this->isTrackingEnabled) {
|
||||||
$renderedNewsletter = Links::replaceSubscriberData(
|
$renderedNewsletter = Links::replaceSubscriberData(
|
||||||
$subscriber->id,
|
$subscriber->getId(),
|
||||||
$queue->id,
|
$queue->id,
|
||||||
$renderedNewsletter
|
$renderedNewsletter
|
||||||
);
|
);
|
||||||
@ -97,8 +97,6 @@ class ViewInBrowserRenderer {
|
|||||||
$sendingQueueRepository = ContainerWrapper::getInstance()->get(SendingQueuesRepository::class);
|
$sendingQueueRepository = ContainerWrapper::getInstance()->get(SendingQueuesRepository::class);
|
||||||
/** @var NewslettersRepository $newsletterRepository */
|
/** @var NewslettersRepository $newsletterRepository */
|
||||||
$newsletterRepository = ContainerWrapper::getInstance()->get(NewslettersRepository::class);
|
$newsletterRepository = ContainerWrapper::getInstance()->get(NewslettersRepository::class);
|
||||||
/** @var NewslettersRepository $newsletterRepository */
|
|
||||||
$subscribersRepository = ContainerWrapper::getInstance()->get(NewslettersRepository::class);
|
|
||||||
/** @var SubscribersRepository $subscribersRepository */
|
/** @var SubscribersRepository $subscribersRepository */
|
||||||
$subscribersRepository = ContainerWrapper::getInstance()->get(SubscribersRepository::class);
|
$subscribersRepository = ContainerWrapper::getInstance()->get(SubscribersRepository::class);
|
||||||
|
|
||||||
|
@ -2,12 +2,14 @@
|
|||||||
|
|
||||||
namespace MailPoet\WooCommerce;
|
namespace MailPoet\WooCommerce;
|
||||||
|
|
||||||
|
use MailPoet\Entities\SubscriberEntity;
|
||||||
use MailPoet\Models\Segment;
|
use MailPoet\Models\Segment;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
use MailPoet\Models\SubscriberSegment;
|
use MailPoet\Models\SubscriberSegment;
|
||||||
use MailPoet\Settings\SettingsController;
|
use MailPoet\Settings\SettingsController;
|
||||||
use MailPoet\Subscribers\ConfirmationEmailMailer;
|
use MailPoet\Subscribers\ConfirmationEmailMailer;
|
||||||
use MailPoet\Subscribers\Source;
|
use MailPoet\Subscribers\Source;
|
||||||
|
use MailPoet\Subscribers\SubscribersRepository;
|
||||||
use MailPoet\Util\Helpers;
|
use MailPoet\Util\Helpers;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
|
||||||
@ -29,16 +31,21 @@ class Subscription {
|
|||||||
/** @var ConfirmationEmailMailer */
|
/** @var ConfirmationEmailMailer */
|
||||||
private $confirmationEmailMailer;
|
private $confirmationEmailMailer;
|
||||||
|
|
||||||
|
/** @var SubscribersRepository */
|
||||||
|
private $subscribersRepository;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
SettingsController $settings,
|
SettingsController $settings,
|
||||||
ConfirmationEmailMailer $confirmationEmailMailer,
|
ConfirmationEmailMailer $confirmationEmailMailer,
|
||||||
WPFunctions $wp,
|
WPFunctions $wp,
|
||||||
Helper $wcHelper
|
Helper $wcHelper,
|
||||||
|
SubscribersRepository $subscribersRepository
|
||||||
) {
|
) {
|
||||||
$this->settings = $settings;
|
$this->settings = $settings;
|
||||||
$this->wp = $wp;
|
$this->wp = $wp;
|
||||||
$this->wcHelper = $wcHelper;
|
$this->wcHelper = $wcHelper;
|
||||||
$this->confirmationEmailMailer = $confirmationEmailMailer;
|
$this->confirmationEmailMailer = $confirmationEmailMailer;
|
||||||
|
$this->subscribersRepository = $subscribersRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function extendWooCommerceCheckoutForm() {
|
public function extendWooCommerceCheckoutForm() {
|
||||||
@ -71,12 +78,12 @@ class Subscription {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function isCurrentUserSubscribed() {
|
private function isCurrentUserSubscribed() {
|
||||||
$subscriber = Subscriber::getCurrentWPUser();
|
$subscriber = $this->subscribersRepository->getCurrentWPUser();
|
||||||
if (!$subscriber instanceof Subscriber) {
|
if (!$subscriber instanceof SubscriberEntity) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$wcSegment = Segment::getWooCommerceSegment();
|
$wcSegment = Segment::getWooCommerceSegment();
|
||||||
$subscriberSegment = SubscriberSegment::where('subscriber_id', $subscriber->id)
|
$subscriberSegment = SubscriberSegment::where('subscriber_id', $subscriber->getId())
|
||||||
->where('segment_id', $wcSegment->id)
|
->where('segment_id', $wcSegment->id)
|
||||||
->findOne();
|
->findOne();
|
||||||
return $subscriberSegment instanceof SubscriberSegment
|
return $subscriberSegment instanceof SubscriberSegment
|
||||||
|
Reference in New Issue
Block a user