PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.27.0
MailPoet – Newsletters, Email Marketing, and Automation v5.27.0
5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 4.44.0 4.44.1 4.45.0 4.46.0 4.47.0 4.48.0 4.48.1 4.48.2 4.49.0 4.49.1 4.5.0 4.5.1 4.5.2 4.50.0 4.50.1 4.51.0 4.51.1 4.51.2 4.52.0 4.53.0 4.54.0 4.55.0 4.56.0 4.57.0 4.58.0 4.58.1 4.58.2 4.6.0 4.6.1 4.6.2 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 5.0.0 5.0.1 5.0.2 5.1.0 5.1.1 5.10.0 5.10.1 5.11.0 5.12.0 5.12.1 5.12.10 5.12.11 5.12.12 5.12.13 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13.0 5.13.1 5.13.2 5.14.0 5.14.1 5.14.2 5.14.3 5.15.0 5.15.1 5.16.0 5.16.1 5.16.2 5.16.3 5.16.4 5.17.0 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.18.0 5.19.0 5.2.0 5.2.1 5.2.2 5.2.3 5.20.0 5.21.0 5.21.1 5.21.2 5.21.3 5.22.0 5.22.1 5.22.2 5.22.3 5.22.4 5.23.0 5.23.1 5.23.2 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.7.0 5.7.1 5.8.0 5.8.1 5.9.0 3.0.0-beta.15 3.7.1 3.0.0-beta.16 3.7.2 3.0.0-beta.17 3.7.3 3.0.0-beta.18 3.7.4 3.0.0-beta.19 3.7.5 3.0.0-beta.2 3.7.6 3.0.0-beta.20 3.7.8 3.0.0-beta.21 3.70.0 3.0.0-beta.22 3.71.0 3.0.0-beta.23 3.71.1 3.0.0-beta.23.1 3.71.2 3.0.0-beta.23.2 3.71.3 3.0.0-beta.24 3.72.0 3.0.0-beta.25 3.73.0 3.0.0-beta.26 3.73.1 3.0.0-beta.27 3.73.2 3.0.0-beta.28 3.74.0 3.0.0-beta.29 3.74.1 3.0.0-beta.3 3.74.2 3.0.0-beta.30 3.74.3 3.0.0-beta.31 3.75.0 3.0.0-beta.32 3.75.1 3.0.0-beta.33 3.76.0 3.0.0-beta.33.1 3.77.0 3.0.0-beta.34.0.0 3.77.1 3.0.0-beta.36.0.0 3.78.0 3.0.0-beta.36.0.1 3.79.0 3.0.0-beta.36.2.0 3.8 3.0.0-beta.36.3.0 3.8.1 3.0.0-beta.36.3.1 3.8.2 3.0.0-beta.37.0.0 3.8.3 3.0.0-beta.4 3.8.4 3.0.0-beta.5 3.8.5 3.0.0-beta.6 3.8.6 3.0.0-beta.7 3.80.0 3.0.0-beta.7.1 3.81.0 3.0.0-beta.8 3.82.0 3.0.0-beta.9 3.83.0 3.0.0-rc.1.0.0 3.84.0 3.0.0-rc.1.0.1 3.84.1 3.0.0-rc.1.0.2 3.85.0 3.0.0-rc.1.0.3 3.85.1 3.0.0-rc.1.0.4 3.86.0 3.0.0-rc.2.0.0 3.87.0 3.0.0-rc.2.0.1 3.87.1 3.0.0-rc.2.0.2 3.87.2 3.0.0-rc.2.0.3 3.88.0 3.0.1 3.88.1 3.0.2 3.88.2 3.0.3 3.89.0 3.0.4 3.89.1 3.0.5 3.89.2 3.0.6 3.89.3 3.0.7 3.89.4 3.0.8 3.9.0 3.0.9 3.9.1 3.1.0 3.90.0 3.10 3.90.1 3.10.1 3.90.2 3.100.0 3.91.0 3.100.1 3.91.1 3.100.2 3.92.0 3.101.0 3.92.1 3.101.1 3.93.0 3.102.0 3.93.1 3.102.1 3.94.0 3.103.0 3.95.0 3.103.1 3.95.1 3.11.0 3.96.0 3.11.1 3.96.1 3.11.2 3.97.0 3.11.3 3.98.0 3.11.4 3.98.1 3.11.5 3.99.0 3.12.0 3.99.1 3.12.1 4.0.0 3.13.0 4.0.1 3.14.0 4.1.0 3.14.1 4.1.1 3.15.0 4.10.0 3.16.0 4.11.0 3.16.1 4.11.1 3.16.2 4.12.0 3.16.3 4.12.1 3.17.0 4.12.2 3.17.1 4.13.0 3.17.2 4.14.0 3.18.0 4.15.0 3.18.1 4.16.0 3.18.2 4.17.0 3.19.0 4.17.1 3.19.1 4.18.0 3.19.2 4.18.1 3.19.3 4.19.0 3.2.0 4.2.0 3.2.1 4.20.0 3.2.2 4.20.1 3.2.3 4.20.2 3.2.4 4.21.0 3.2.5 4.22.0 3.20.0 4.22.1 3.21.0 4.22.2 3.21.1 4.23.0 3.22.0 4.24.0 3.23.0 4.25.0 3.23.1 4.26.0 3.23.2 4.26.1 3.24.0 4.27.0 3.25.0 4.28.0 3.25.1 4.29.0 3.26.0 4.3.0 3.26.1 4.3.1 3.27.0 4.30.0 3.28.0 4.31.0 3.29.0 4.31.1 3.3.0 4.32.0 3.3.1 4.33.0 3.3.2 4.34.0 3.3.3 4.35.0 3.3.4 4.35.1 3.3.5 4.36.0 3.3.6 4.37.0 3.30.0 4.38.0 3.31.0 4.39.0 3.31.1 4.4.0 3.32.0 4.40.0 3.32.1 4.41.0 3.32.2 4.41.1 3.33.0 4.41.2 3.34.0 4.41.3 3.34.1 4.42.0 3.34.2 4.42.1 3.34.3 3.34.4 3.35.0 3.35.1 3.35.3 3.35.4 3.36.0 3.37.0 3.37.1 3.37.2 3.37.3 3.38.0 3.38.1 3.39.0 3.39.1 3.39.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.40.0 3.40.1 3.41.0 3.41.1 3.41.2 3.42.0 3.42.1 3.42.2 3.42.3 3.43.0 3.43.1 3.44.0 3.45.0 3.45.1 3.46.0 3.46.1 3.46.10 3.46.11 3.46.12 3.46.13 3.46.14 3.46.2 3.46.3 3.46.4 3.46.5 3.46.6 3.46.7 3.46.8 3.46.9 3.47.0 3.47.1 3.47.10 3.47.11 3.47.2 3.47.3 3.47.5 3.47.6 3.47.7 3.47.9 3.48.0 3.48.1 3.49.0 3.49.1 3.5.0 3.5.1 3.50.0 3.51.0 3.51.1 3.51.2 3.52.0 3.53.0 3.54.0 3.54.1 3.54.2 3.54.3 3.55.0 3.55.1 3.56.0 3.56.1 3.56.2 3.57.0 3.57.1 3.58.0 3.59.0 3.59.1 3.59.2 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.60.0 3.60.1 3.60.10 3.60.11 3.60.12 3.60.2 3.60.3 3.60.4 3.60.6 3.60.7 3.60.8 3.60.9 3.61.0 3.62.0 3.62.1 3.63.0 3.64.0 3.64.1 3.64.2 3.64.3 3.65.0 trunk 3.65.1 3.0.0 3.66.0 3.0.0-beta.1 3.67.0 3.0.0-beta.10 3.67.1 3.0.0-beta.11 3.68.0 3.0.0-beta.12 3.69.0 3.0.0-beta.13 3.69.1 3.0.0-beta.14 3.7.0
mailpoet / lib / Subscribers / NewSubscriberNotificationMailer.php
mailpoet / lib / Subscribers Last commit date
ConfirmationEmailTemplate 3 years ago ImportExport 2 weeks ago Statistics 1 year ago BulkConfirmationEmailResender.php 4 weeks ago ConfirmationEmailCustomizer.php 4 weeks ago ConfirmationEmailMailer.php 4 weeks ago ConfirmationEmailResolver.php 4 weeks ago EngagementDataBackfiller.php 4 weeks ago InactiveSubscribersController.php 4 weeks ago LinkTokens.php 4 weeks ago NewSubscriberNotificationMailer.php 4 weeks ago RequiredCustomFieldValidator.php 4 weeks ago Source.php 3 weeks ago SubscriberActions.php 3 weeks ago SubscriberCustomFieldRepository.php 3 years ago SubscriberIPsRepository.php 2 years ago SubscriberLimitNotificationEvaluator.php 3 weeks ago SubscriberLimitNotificationMailer.php 3 weeks ago SubscriberLimitNotificationScheduler.php 3 weeks ago SubscriberListingRepository.php 4 weeks ago SubscriberPersonalDataEraser.php 4 weeks ago SubscriberSaveController.php 3 weeks ago SubscriberSegmentRepository.php 1 month ago SubscriberSubscribeController.php 3 weeks ago SubscriberTagRepository.php 3 years ago SubscribersCountsController.php 1 month ago SubscribersEmailCountsController.php 1 year ago SubscribersRepository.php 3 weeks ago index.php 3 years ago
NewSubscriberNotificationMailer.php
121 lines
1 <?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing
2
3 namespace MailPoet\Subscribers;
4
5 if (!defined('ABSPATH')) exit;
6
7
8 use MailPoet\Config\Renderer;
9 use MailPoet\Entities\SegmentEntity;
10 use MailPoet\Entities\SubscriberEntity;
11 use MailPoet\Mailer\MailerFactory;
12 use MailPoet\Mailer\MetaInfo;
13 use MailPoet\Settings\SettingsController;
14 use MailPoet\WP\Functions as WPFunctions;
15
16 class NewSubscriberNotificationMailer {
17 const SETTINGS_KEY = 'subscriber_email_notification';
18
19 /** @var MailerFactory */
20 private $mailerFactory;
21
22 /** @var Renderer */
23 private $renderer;
24
25 /** @var SettingsController */
26 private $settings;
27
28 /** @var MetaInfo */
29 private $mailerMetaInfo;
30
31 public function __construct(
32 MailerFactory $mailerFactory,
33 Renderer $renderer,
34 SettingsController $settings
35 ) {
36 $this->mailerFactory = $mailerFactory;
37 $this->renderer = $renderer;
38 $this->settings = $settings;
39 $this->mailerMetaInfo = new MetaInfo();
40 }
41
42 /**
43 * @param SubscriberEntity $subscriber
44 * @param SegmentEntity[] $segments
45 *
46 * @throws \Exception
47 */
48 public function send(SubscriberEntity $subscriber, array $segments): void {
49 $settings = $this->settings->get(NewSubscriberNotificationMailer::SETTINGS_KEY);
50 if ($this->isDisabled($settings)) {
51 return;
52 }
53 try {
54 $extraParams = [
55 'meta' => $this->mailerMetaInfo->getNewSubscriberNotificationMetaInfo(),
56 ];
57 $this->mailerFactory->getDefaultMailer()->send($this->constructNewsletter($subscriber, $segments), $settings['address'], $extraParams);
58 } catch (\Exception $e) {
59 if (WP_DEBUG) {
60 throw $e;
61 }
62 }
63 }
64
65 public static function isDisabled($settings) {
66 if (!is_array($settings)) {
67 return true;
68 }
69 if (!isset($settings['enabled'])) {
70 return true;
71 }
72 if (!isset($settings['address']) || !is_string($settings['address'])) {
73 return true;
74 }
75 if (empty(trim($settings['address']))) {
76 return true;
77 }
78 return !(bool)$settings['enabled'];
79 }
80
81 /**
82 * @param SubscriberEntity $subscriber
83 * @param SegmentEntity[] $segments
84 *
85 * @return array
86 * @throws \Exception
87 */
88 private function constructNewsletter(SubscriberEntity $subscriber, array $segments) {
89 $segmentNames = $this->getSegmentNames($segments);
90 $context = [
91 'subscriber_email' => $subscriber->getEmail(),
92 'segments_names' => $segmentNames,
93 'link_settings' => WPFunctions::get()->applyFilters(
94 'mailpoet_new_subscriber_notification_link_settings',
95 WPFunctions::get()->getSiteUrl(null, '/wp-admin/admin.php?page=mailpoet-settings')
96 ),
97 'link_premium' => WPFunctions::get()->getSiteUrl(null, '/wp-admin/admin.php?page=mailpoet-upgrade'),
98 ];
99 return [
100 // translators: %s is name of the segment.
101 'subject' => sprintf(__('New subscriber to %s', 'mailpoet'), $segmentNames),
102 'body' => [
103 'html' => $this->renderer->render('emails/newSubscriberNotification.html', $context),
104 'text' => $this->renderer->render('emails/newSubscriberNotification.txt', $context),
105 ],
106 ];
107 }
108
109 /**
110 * @param SegmentEntity[] $segments
111 * @return string
112 */
113 private function getSegmentNames(array $segments): string {
114 $names = [];
115 foreach ($segments as $segment) {
116 $names[] = $segment->getName();
117 }
118 return implode(', ', $names);
119 }
120 }
121