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\Config\Menu;
|
||||
use MailPoet\Config\ServicesChecker;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\Newsletter\Shortcodes\ShortcodesHelper;
|
||||
use MailPoet\Services\Bridge;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Settings\UserFlagsController;
|
||||
use MailPoet\Subscribers\SubscribersRepository;
|
||||
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
|
||||
use MailPoet\WooCommerce\TransactionalEmails;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
class NewsletterEditor {
|
||||
private const DATE_FORMAT = 'Y-m-d H:i:s';
|
||||
|
||||
/** @var PageRenderer */
|
||||
private $pageRenderer;
|
||||
|
||||
@ -39,6 +42,9 @@ class NewsletterEditor {
|
||||
/** @var ShortcodesHelper */
|
||||
private $shortcodesHelper;
|
||||
|
||||
/** @var SubscribersRepository */
|
||||
private $subscribersRepository;
|
||||
|
||||
public function __construct(
|
||||
PageRenderer $pageRenderer,
|
||||
SettingsController $settings,
|
||||
@ -47,7 +53,8 @@ class NewsletterEditor {
|
||||
WPFunctions $wp,
|
||||
TransactionalEmails $wcTransactionalEmails,
|
||||
ShortcodesHelper $shortcodesHelper,
|
||||
ServicesChecker $servicesChecker
|
||||
ServicesChecker $servicesChecker,
|
||||
SubscribersRepository $subscribersRepository
|
||||
) {
|
||||
$this->pageRenderer = $pageRenderer;
|
||||
$this->settings = $settings;
|
||||
@ -57,6 +64,7 @@ class NewsletterEditor {
|
||||
$this->wcTransactionalEmails = $wcTransactionalEmails;
|
||||
$this->servicesChecker = $servicesChecker;
|
||||
$this->shortcodesHelper = $shortcodesHelper;
|
||||
$this->subscribersRepository = $subscribersRepository;
|
||||
}
|
||||
|
||||
public function render() {
|
||||
@ -76,8 +84,8 @@ class NewsletterEditor {
|
||||
exit;
|
||||
}
|
||||
|
||||
$subscriber = Subscriber::getCurrentWPUser();
|
||||
$subscriberData = $subscriber ? $subscriber->asArray() : [];
|
||||
$subscriber = $this->subscribersRepository->getCurrentWPUser();
|
||||
$subscriberData = $subscriber ? $this->formatSubscriber($subscriber) : [];
|
||||
$woocommerceData = [];
|
||||
if ($this->woocommerceHelper->isWooCommerceActive()) {
|
||||
$wcEmailSettings = $this->wcTransactionalEmails->getWCEmailSettings();
|
||||
@ -106,4 +114,28 @@ class NewsletterEditor {
|
||||
|
||||
$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\Newsletter\Url as NewsletterUrl;
|
||||
use MailPoet\Segments\SegmentSubscribersRepository;
|
||||
use MailPoet\Subscribers\SubscribersRepository;
|
||||
use MailPoet\Subscription\Pages;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
@ -21,14 +22,19 @@ class Shortcodes {
|
||||
/** @var SegmentSubscribersRepository */
|
||||
private $segmentSubscribersRepository;
|
||||
|
||||
/** @var SubscribersRepository */
|
||||
private $subscribersRepository;
|
||||
|
||||
public function __construct(
|
||||
Pages $subscriptionPages,
|
||||
WPFunctions $wp,
|
||||
SegmentSubscribersRepository $segmentSubscribersRepository
|
||||
SegmentSubscribersRepository $segmentSubscribersRepository,
|
||||
SubscribersRepository $subscribersRepository
|
||||
) {
|
||||
$this->subscriptionPages = $subscriptionPages;
|
||||
$this->wp = $wp;
|
||||
$this->segmentSubscribersRepository = $segmentSubscribersRepository;
|
||||
$this->subscribersRepository = $subscribersRepository;
|
||||
}
|
||||
|
||||
public function init() {
|
||||
@ -101,7 +107,8 @@ class Shortcodes {
|
||||
|
||||
$newsletters = Newsletter::getArchives($segmentIds);
|
||||
|
||||
$subscriber = Subscriber::getCurrentWPUser();
|
||||
$subscriber = $this->subscribersRepository->getCurrentWPUser();
|
||||
$subscriber = $subscriber ? Subscriber::findOne($subscriber->getId()) : null;
|
||||
|
||||
if (empty($newsletters)) {
|
||||
return $this->wp->applyFilters(
|
||||
|
@ -6,7 +6,6 @@ use MailPoet\Entities\NewsletterEntity;
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\Mailer\Mailer;
|
||||
use MailPoet\Mailer\MetaInfo;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Newsletter\Renderer\Renderer;
|
||||
use MailPoet\Newsletter\Shortcodes\Shortcodes;
|
||||
use MailPoet\Subscribers\SubscribersRepository;
|
||||
@ -57,10 +56,7 @@ class SendPreviewController {
|
||||
|
||||
$body = implode($divider, $dataForShortcodes);
|
||||
|
||||
$subscriber = Subscriber::getCurrentWPUser();
|
||||
if ($subscriber instanceof Subscriber) {
|
||||
$subscriber = $this->subscribersRepository->findOneById($subscriber->id);
|
||||
}
|
||||
$subscriber = $this->subscribersRepository->getCurrentWPUser();
|
||||
$this->shortcodes->setNewsletter($newsletter);
|
||||
if ($subscriber instanceof SubscriberEntity) {
|
||||
$this->shortcodes->setSubscriber($subscriber);
|
||||
|
@ -7,6 +7,7 @@ use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Newsletter\Url as NewsletterUrl;
|
||||
use MailPoet\Subscribers\LinkTokens;
|
||||
use MailPoet\Subscribers\SubscribersRepository;
|
||||
|
||||
class ViewInBrowserController {
|
||||
/** @var LinkTokens */
|
||||
@ -15,12 +16,17 @@ class ViewInBrowserController {
|
||||
/** @var ViewInBrowserRenderer */
|
||||
private $viewInBrowserRenderer;
|
||||
|
||||
/** @var SubscribersRepository */
|
||||
private $subscribersRepository;
|
||||
|
||||
public function __construct(
|
||||
LinkTokens $linkTokens,
|
||||
ViewInBrowserRenderer $viewInBrowserRenderer
|
||||
ViewInBrowserRenderer $viewInBrowserRenderer,
|
||||
SubscribersRepository $subscribersRepository
|
||||
) {
|
||||
$this->linkTokens = $linkTokens;
|
||||
$this->viewInBrowserRenderer = $viewInBrowserRenderer;
|
||||
$this->subscribersRepository = $subscribersRepository;
|
||||
}
|
||||
|
||||
public function view(array $data) {
|
||||
@ -32,12 +38,12 @@ class ViewInBrowserController {
|
||||
// if this is a preview and subscriber does not exist,
|
||||
// attempt to set subscriber to the current logged-in WP user
|
||||
if (!$subscriber && $isPreview) {
|
||||
$subscriber = Subscriber::getCurrentWPUser() ?: null;
|
||||
$subscriber = $this->subscribersRepository->getCurrentWPUser();
|
||||
}
|
||||
|
||||
// if queue and subscriber exist, subscriber must have received the newsletter
|
||||
$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");
|
||||
}
|
||||
|
||||
|
@ -47,7 +47,7 @@ class ViewInBrowserRenderer {
|
||||
public function render(
|
||||
bool $isPreview,
|
||||
Newsletter $newsletter,
|
||||
Subscriber $subscriber = null,
|
||||
SubscriberEntity $subscriber = null,
|
||||
SendingQueue $queue = null
|
||||
) {
|
||||
$wpUserPreview = $isPreview;
|
||||
@ -83,7 +83,7 @@ class ViewInBrowserRenderer {
|
||||
$renderedNewsletter = $this->shortcodes->replace($newsletterBody);
|
||||
if (!$wpUserPreview && $queue && $subscriber && $this->isTrackingEnabled) {
|
||||
$renderedNewsletter = Links::replaceSubscriberData(
|
||||
$subscriber->id,
|
||||
$subscriber->getId(),
|
||||
$queue->id,
|
||||
$renderedNewsletter
|
||||
);
|
||||
@ -97,8 +97,6 @@ class ViewInBrowserRenderer {
|
||||
$sendingQueueRepository = ContainerWrapper::getInstance()->get(SendingQueuesRepository::class);
|
||||
/** @var NewslettersRepository $newsletterRepository */
|
||||
$newsletterRepository = ContainerWrapper::getInstance()->get(NewslettersRepository::class);
|
||||
/** @var NewslettersRepository $newsletterRepository */
|
||||
$subscribersRepository = ContainerWrapper::getInstance()->get(NewslettersRepository::class);
|
||||
/** @var SubscribersRepository $subscribersRepository */
|
||||
$subscribersRepository = ContainerWrapper::getInstance()->get(SubscribersRepository::class);
|
||||
|
||||
|
@ -2,12 +2,14 @@
|
||||
|
||||
namespace MailPoet\WooCommerce;
|
||||
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\Models\Segment;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Models\SubscriberSegment;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Subscribers\ConfirmationEmailMailer;
|
||||
use MailPoet\Subscribers\Source;
|
||||
use MailPoet\Subscribers\SubscribersRepository;
|
||||
use MailPoet\Util\Helpers;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
@ -29,16 +31,21 @@ class Subscription {
|
||||
/** @var ConfirmationEmailMailer */
|
||||
private $confirmationEmailMailer;
|
||||
|
||||
/** @var SubscribersRepository */
|
||||
private $subscribersRepository;
|
||||
|
||||
public function __construct(
|
||||
SettingsController $settings,
|
||||
ConfirmationEmailMailer $confirmationEmailMailer,
|
||||
WPFunctions $wp,
|
||||
Helper $wcHelper
|
||||
Helper $wcHelper,
|
||||
SubscribersRepository $subscribersRepository
|
||||
) {
|
||||
$this->settings = $settings;
|
||||
$this->wp = $wp;
|
||||
$this->wcHelper = $wcHelper;
|
||||
$this->confirmationEmailMailer = $confirmationEmailMailer;
|
||||
$this->subscribersRepository = $subscribersRepository;
|
||||
}
|
||||
|
||||
public function extendWooCommerceCheckoutForm() {
|
||||
@ -71,12 +78,12 @@ class Subscription {
|
||||
}
|
||||
|
||||
private function isCurrentUserSubscribed() {
|
||||
$subscriber = Subscriber::getCurrentWPUser();
|
||||
if (!$subscriber instanceof Subscriber) {
|
||||
$subscriber = $this->subscribersRepository->getCurrentWPUser();
|
||||
if (!$subscriber instanceof SubscriberEntity) {
|
||||
return false;
|
||||
}
|
||||
$wcSegment = Segment::getWooCommerceSegment();
|
||||
$subscriberSegment = SubscriberSegment::where('subscriber_id', $subscriber->id)
|
||||
$subscriberSegment = SubscriberSegment::where('subscriber_id', $subscriber->getId())
|
||||
->where('segment_id', $wcSegment->id)
|
||||
->findOne();
|
||||
return $subscriberSegment instanceof SubscriberSegment
|
||||
|
Reference in New Issue
Block a user