Files
piratepoet/lib/Newsletter/Shortcodes/Categories/Link.php
Vlad a3f2c32a6d - Adds custom date format as a shortcode action's argument
- Updates shortcodes logic to allow action arguments other than
"default"
2017-01-09 09:05:24 -05:00

155 lines
4.3 KiB
PHP

<?php
namespace MailPoet\Newsletter\Shortcodes\Categories;
use MailPoet\Models\Setting;
use MailPoet\Newsletter\Url as NewsletterUrl;
use MailPoet\Statistics\Track\Unsubscribes;
use MailPoet\Subscription\Url as SubscriptionUrl;
class Link {
static function process(
$action,
$action_argument,
$action_argument_value,
$newsletter,
$subscriber,
$queue,
$content,
$wp_user_preview
) {
switch($action) {
case 'subscription_unsubscribe':
$action = 'subscription_unsubscribe_url';
$url = self::processUrl(
$action,
SubscriptionUrl::getUnsubscribeUrl($subscriber),
$queue,
$wp_user_preview
);
return sprintf(
'<a target="_blank" href="%s">%s</a>',
$url,
__('Unsubscribe', 'mailpoet')
);
case 'subscription_unsubscribe_url':
return self::processUrl(
$action,
SubscriptionUrl::getUnsubscribeUrl($subscriber),
$queue,
$wp_user_preview
);
case 'subscription_manage':
$url = self::processUrl(
$action = 'subscription_manage_url',
SubscriptionUrl::getManageUrl($subscriber),
$queue,
$wp_user_preview
);
return sprintf(
'<a target="_blank" href="%s">%s</a>',
$url,
__('Manage subscription', 'mailpoet')
);
case 'subscription_manage_url':
return self::processUrl(
$action,
SubscriptionUrl::getManageUrl($subscriber),
$queue,
$wp_user_preview
);
case 'newsletter_view_in_browser':
$action = 'newsletter_view_in_browser_url';
$url = NewsletterUrl::getViewInBrowserUrl(
$type = null,
$newsletter,
$subscriber,
$queue,
$wp_user_preview
);
$url = self::processUrl($action, $url, $queue, $wp_user_preview);
return sprintf(
'<a target="_blank" href="%s">%s</a>',
$url,
__('View in your browser', 'mailpoet')
);
case 'newsletter_view_in_browser_url':
$url = NewsletterUrl::getViewInBrowserUrl(
$type = null,
$newsletter,
$subscriber,
$queue,
$wp_user_preview
);
return self::processUrl($action, $url, $queue, $wp_user_preview);
default:
$shortcode = self::getShortcode($action);
$url = apply_filters(
'mailpoet_newsletter_shortcode_link',
$shortcode,
$newsletter,
$subscriber,
$queue,
$wp_user_preview
);
return ($url !== $shortcode) ?
self::processUrl($action, $url, $queue, $wp_user_preview) :
false;
}
}
static function processUrl($action, $url, $queue, $wp_user_preview = false) {
if($wp_user_preview) return '#';
return ($queue !== false && (boolean)Setting::getValue('tracking.enabled')) ?
self::getShortcode($action) :
$url;
}
static function processShortcodeAction(
$shortcode_action, $newsletter, $subscriber, $queue, $wp_user_preview
) {
switch($shortcode_action) {
case 'subscription_unsubscribe_url':
// track unsubscribe event
if((boolean)Setting::getValue('tracking.enabled') && !$wp_user_preview) {
$unsubscribe_event = new Unsubscribes();
$unsubscribe_event->track($newsletter->id, $subscriber->id, $queue->id);
}
$url = SubscriptionUrl::getUnsubscribeUrl($subscriber);
break;
case 'subscription_manage_url':
$url = SubscriptionUrl::getManageUrl($subscriber);
break;
case 'newsletter_view_in_browser_url':
$url = NewsletterUrl::getViewInBrowserUrl(
$type = null,
$newsletter,
$subscriber,
$queue
);
break;
default:
$shortcode = self::getShortcode($shortcode_action);
$url = apply_filters(
'mailpoet_newsletter_shortcode_link',
$shortcode,
$newsletter,
$subscriber,
$queue,
$wp_user_preview
);
$url = ($url !== $shortcode_action) ? $url : false;
break;
}
return $url;
}
private static function getShortcode($action) {
return sprintf('[link:%s]', $action);
}
}