File "Link.php"
Full Path: /home/warrior1/public_html/wp-content/plugins/mailpoet/lib/Newsletter/Shortcodes/Categories/Link.php
File size: 5.19 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace MailPoet\Newsletter\Shortcodes\Categories;
if (!defined('ABSPATH')) exit;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Newsletter\Url as NewsletterUrl;
use MailPoet\Settings\SettingsController;
use MailPoet\Settings\TrackingConfig;
use MailPoet\Subscription\SubscriptionUrlFactory;
use MailPoet\WP\Functions as WPFunctions;
class Link implements CategoryInterface {
const CATEGORY_NAME = 'link';
/** @var SettingsController */
private $settings;
/** @var NewsletterUrl */
private $newsletterUrl;
/** @var WPFunctions */
private $wp;
/** @var TrackingConfig */
private $trackingConfig;
public function __construct(
SettingsController $settings,
NewsletterUrl $newsletterUrl,
WPFunctions $wp,
TrackingConfig $trackingConfig
) {
$this->settings = $settings;
$this->newsletterUrl = $newsletterUrl;
$this->wp = $wp;
$this->trackingConfig = $trackingConfig;
}
public function process(
array $shortcodeDetails,
NewsletterEntity $newsletter = null,
SubscriberEntity $subscriber = null,
SendingQueueEntity $queue = null,
string $content = '',
bool $wpUserPreview = false
): ?string {
$subscriptionUrlFactory = SubscriptionUrlFactory::getInstance();
switch ($shortcodeDetails['action']) {
case 'subscription_unsubscribe_url':
return self::processUrl(
$shortcodeDetails['action'],
$subscriptionUrlFactory->getConfirmUnsubscribeUrl(
$wpUserPreview ? null : $subscriber,
$queue ? $queue->getId() : null
),
$queue,
$wpUserPreview
);
case 'subscription_instant_unsubscribe_url':
return self::processUrl(
$shortcodeDetails['action'],
$subscriptionUrlFactory->getUnsubscribeUrl(
$wpUserPreview ? null : $subscriber,
$queue ? $queue->getId() : null
),
$queue,
$wpUserPreview
);
case 'subscription_manage_url':
return self::processUrl(
$shortcodeDetails['action'],
$subscriptionUrlFactory->getManageUrl($wpUserPreview ? null : $subscriber),
$queue,
$wpUserPreview
);
case 'newsletter_view_in_browser_url':
$url = $this->newsletterUrl->getViewInBrowserUrl(
$newsletter,
$wpUserPreview ? null : $subscriber,
$queue,
$wpUserPreview
);
return self::processUrl($shortcodeDetails['action'], $url, $queue, $wpUserPreview);
case 'subscription_re_engage_url':
$url = $subscriptionUrlFactory->getReEngagementUrl($wpUserPreview ? null : $subscriber);
return self::processUrl($shortcodeDetails['action'], $url, $queue, $wpUserPreview);
default:
$shortcode = self::getFullShortcode($shortcodeDetails['action']);
$url = $this->wp->applyFilters(
'mailpoet_newsletter_shortcode_link',
$shortcode,
$newsletter,
$subscriber,
$queue,
$shortcodeDetails['arguments'],
$wpUserPreview
);
return ($url !== $shortcode) ?
self::processUrl($shortcodeDetails['action'], $url, $queue, $wpUserPreview) :
null;
}
}
public function processUrl($action, $url, ?SendingQueueEntity $queue, $wpUserPreview = false): string {
if ($wpUserPreview) return $url;
return ($queue && $this->trackingConfig->isEmailTrackingEnabled()) ?
self::getFullShortcode($action) :
$url;
}
public function processShortcodeAction(
$shortcodeAction,
NewsletterEntity $newsletter = null,
SubscriberEntity $subscriber = null,
SendingQueueEntity $queue = null,
$wpUserPreview = false
): ?string {
$subscriptionUrlFactory = SubscriptionUrlFactory::getInstance();
switch ($shortcodeAction) {
case 'subscription_unsubscribe_url':
$url = $subscriptionUrlFactory->getConfirmUnsubscribeUrl(
$subscriber,
$queue ? $queue->getId() : null
);
break;
case 'subscription_instant_unsubscribe_url':
$url = $subscriptionUrlFactory->getUnsubscribeUrl(
$subscriber,
$queue ? $queue->getId() : null
);
break;
case 'subscription_manage_url':
$url = $subscriptionUrlFactory->getManageUrl($subscriber);
break;
case 'newsletter_view_in_browser_url':
$url = $this->newsletterUrl->getViewInBrowserUrl(
$newsletter,
$subscriber,
$queue,
false
);
break;
case 'subscription_re_engage_url':
$url = $subscriptionUrlFactory->getReEngagementUrl($subscriber);
break;
default:
$shortcode = self::getFullShortcode($shortcodeAction);
$url = $this->wp->applyFilters(
'mailpoet_newsletter_shortcode_link',
$shortcode,
$newsletter,
$subscriber,
$queue,
$wpUserPreview
);
$url = ($url !== $shortcodeAction) ? $url : null;
break;
}
return $url;
}
private function getFullShortcode($action): string {
return sprintf('[link:%s]', $action);
}
}