Files
piratepoet/lib/Newsletter/Shortcodes/Categories/Link.php
Rostislav Wolny accf804cea Add queue id into unsubscribe URLs data
[MAILPOET-2736]
2020-05-05 14:40:11 +02:00

134 lines
4.0 KiB
PHP

<?php
namespace MailPoet\Newsletter\Shortcodes\Categories;
use MailPoet\Newsletter\Url as NewsletterUrl;
use MailPoet\Settings\SettingsController;
use MailPoet\Subscription\SubscriptionUrlFactory;
use MailPoet\Tasks\Sending;
use MailPoet\WP\Functions as WPFunctions;
class Link {
const CATEGORY_NAME = 'link';
public static function process(
$shortcodeDetails,
$newsletter,
$subscriber,
$queue,
$content,
$wpUserPreview
) {
$subscriptionUrlFactory = SubscriptionUrlFactory::getInstance();
switch ($shortcodeDetails['action']) {
case 'subscription_unsubscribe_url':
return self::processUrl(
$shortcodeDetails['action'],
$subscriptionUrlFactory->getConfirmUnsubscribeUrl($wpUserPreview ? null : $subscriber, self::getSendingQueueId($queue)),
$queue,
$wpUserPreview
);
case 'subscription_instant_unsubscribe_url':
return self::processUrl(
$shortcodeDetails['action'],
$subscriptionUrlFactory->getUnsubscribeUrl($wpUserPreview ? null : $subscriber, self::getSendingQueueId($queue)),
$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 = NewsletterUrl::getViewInBrowserUrl(
$newsletter,
$wpUserPreview ? null : $subscriber,
$queue,
$wpUserPreview
);
return self::processUrl($shortcodeDetails['action'], $url, $queue, $wpUserPreview);
default:
$shortcode = self::getFullShortcode($shortcodeDetails['action']);
$url = WPFunctions::get()->applyFilters(
'mailpoet_newsletter_shortcode_link',
$shortcode,
$newsletter,
$subscriber,
$queue,
$wpUserPreview
);
return ($url !== $shortcode) ?
self::processUrl($shortcodeDetails['action'], $url, $queue, $wpUserPreview) :
false;
}
}
public static function processUrl($action, $url, $queue, $wpUserPreview = false) {
if ($wpUserPreview) return $url;
$settings = SettingsController::getInstance();
return ($queue !== false && (boolean)$settings->get('tracking.enabled')) ?
self::getFullShortcode($action) :
$url;
}
public static function processShortcodeAction(
$shortcodeAction, $newsletter, $subscriber, $queue, $wpUserPreview
) {
$subscriptionUrlFactory = SubscriptionUrlFactory::getInstance();
switch ($shortcodeAction) {
case 'subscription_unsubscribe_url':
$url = $subscriptionUrlFactory->getConfirmUnsubscribeUrl($subscriber, self::getSendingQueueId($queue));
break;
case 'subscription_instant_unsubscribe_url':
$url = $subscriptionUrlFactory->getUnsubscribeUrl($subscriber, self::getSendingQueueId($queue));
break;
case 'subscription_manage_url':
$url = $subscriptionUrlFactory->getManageUrl($subscriber);
break;
case 'newsletter_view_in_browser_url':
$url = NewsletterUrl::getViewInBrowserUrl(
$newsletter,
$subscriber,
$queue,
false
);
break;
default:
$shortcode = self::getFullShortcode($shortcodeAction);
$url = WPFunctions::get()->applyFilters(
'mailpoet_newsletter_shortcode_link',
$shortcode,
$newsletter,
$subscriber,
$queue,
$wpUserPreview
);
$url = ($url !== $shortcodeAction) ? $url : false;
break;
}
return $url;
}
private static function getFullShortcode($action) {
return sprintf('[link:%s]', $action);
}
/**
* @return int|null
*/
private static function getSendingQueueId($queue) {
if ($queue instanceof Sending) {
return (int)$queue->id;
}
return null;
}
}