| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <?php
- namespace MailPoet\Subscribers;
- if (!defined('ABSPATH')) exit;
- use MailPoet\Config\Renderer;
- use MailPoet\Mailer\Mailer;
- use MailPoet\Mailer\MetaInfo;
- use MailPoet\Models\Segment;
- use MailPoet\Models\Subscriber;
- use MailPoet\Settings\SettingsController;
- use MailPoet\WP\Functions as WPFunctions;
- class NewSubscriberNotificationMailer {
- const SETTINGS_KEY = 'subscriber_email_notification';
- /** @var Mailer */
- private $mailer;
- /** @var Renderer */
- private $renderer;
- /** @var SettingsController */
- private $settings;
- /** @var MetaInfo */
- private $mailerMetaInfo;
- public function __construct(
- Mailer $mailer,
- Renderer $renderer,
- SettingsController $settings
- ) {
- $this->mailer = $mailer;
- $this->renderer = $renderer;
- $this->settings = $settings;
- $this->mailerMetaInfo = new MetaInfo();
- }
- /**
- * @param Subscriber $subscriber
- * @param Segment[] $segments
- *
- * @throws \Exception
- */
- public function send(Subscriber $subscriber, array $segments) {
- $settings = $this->settings->get(NewSubscriberNotificationMailer::SETTINGS_KEY);
- if ($this->isDisabled($settings)) {
- return;
- }
- try {
- $extraParams = [
- 'meta' => $this->mailerMetaInfo->getNewSubscriberNotificationMetaInfo(),
- ];
- $this->mailer->send($this->constructNewsletter($subscriber, $segments), $settings['address'], $extraParams);
- } catch (\Exception $e) {
- if (WP_DEBUG) {
- throw $e;
- }
- }
- }
- public static function isDisabled($settings) {
- if (!is_array($settings)) {
- return true;
- }
- if (!isset($settings['enabled'])) {
- return true;
- }
- if (!isset($settings['address'])) {
- return true;
- }
- if (empty(trim($settings['address']))) {
- return true;
- }
- return !(bool)$settings['enabled'];
- }
- /**
- * @param Subscriber $subscriber
- * @param Segment[] $segments
- *
- * @return array
- * @throws \Exception
- */
- private function constructNewsletter(Subscriber $subscriber, array $segments) {
- $segmentNames = $this->getSegmentNames($segments);
- $context = [
- 'subscriber_email' => $subscriber->get('email'),
- 'segments_names' => $segmentNames,
- 'link_settings' => WPFunctions::get()->getSiteUrl(null, '/wp-admin/admin.php?page=mailpoet-settings'),
- 'link_premium' => WPFunctions::get()->getSiteUrl(null, '/wp-admin/admin.php?page=mailpoet-premium'),
- ];
- return [
- 'subject' => sprintf(__('New subscriber to %s', 'mailpoet'), $segmentNames),
- 'body' => [
- 'html' => $this->renderer->render('emails/newSubscriberNotification.html', $context),
- 'text' => $this->renderer->render('emails/newSubscriberNotification.txt', $context),
- ],
- ];
- }
- /**
- * @param Segment[] $segments
- * @return string
- */
- private function getSegmentNames($segments) {
- $names = [];
- foreach ($segments as $segment) {
- $names[] = $segment->get('name');
- }
- return implode(', ', $names);
- }
- }
|