diff --git a/lib/Cron/Workers/SendingQueue.php b/lib/Cron/Workers/SendingQueue.php
index 6700e6a17e..38f1a9d51a 100644
--- a/lib/Cron/Workers/SendingQueue.php
+++ b/lib/Cron/Workers/SendingQueue.php
@@ -76,14 +76,19 @@ class SendingQueue {
if($queue->newsletter_rendered_body === null) {
// render newsletter
$rendered_newsletter = $this->renderNewsletter($newsletter);
- // extract and replace links
- $processed_newsletter = $this->processLinks(
- $this->joinObject($rendered_newsletter),
- $newsletter['id'],
- $queue->id
- );
- list($newsletter['body']['html'], $newsletter['body']['text']) =
- $this->splitObject($processed_newsletter);
+ if((int) Setting::getValue('tracking.enabled') === 1) {
+ // extract and replace links
+ $processed_newsletter = $this->processLinks(
+ $this->joinObject($rendered_newsletter),
+ $newsletter['id'],
+ $queue->id
+ );
+ list($newsletter['body']['html'], $newsletter['body']['text']) =
+ $this->splitObject($processed_newsletter);
+ }
+ else {
+ $newsletter['body'] = $rendered_newsletter;
+ }
$queue->newsletter_rendered_body = json_encode($newsletter['body']);
$queue->newsletter_rendered_body_hash = md5($newsletter['body']['text']);
$queue->save();
@@ -200,12 +205,14 @@ class SendingQueue {
$subscriber,
$this->joinObject($data_for_shortcodes)
);
- $processed_newsletter = $this->replaceLinks(
- $newsletter['id'],
- $subscriber['id'],
- $queue->id,
- $processed_newsletter
- );
+ if((int) Setting::getValue('tracking.enabled') === 1) {
+ $processed_newsletter = $this->replaceLinks(
+ $newsletter['id'],
+ $subscriber['id'],
+ $queue->id,
+ $processed_newsletter
+ );
+ }
list($newsletter['subject'],
$newsletter['body']['html'],
$newsletter['body']['text']
diff --git a/lib/Newsletter/Shortcodes/Categories/Subscription.php b/lib/Newsletter/Shortcodes/Categories/Subscription.php
index ed3a10e959..143f9e56e3 100644
--- a/lib/Newsletter/Shortcodes/Categories/Subscription.php
+++ b/lib/Newsletter/Shortcodes/Categories/Subscription.php
@@ -1,5 +1,6 @@
'.__('Unsubscribe').'';
break;
case 'unsubscribe_url':
- return SubscriptionUrl::getUnsubscribeUrl($subscriber);
+ return self::processUrl(
+ $action,
+ SubscriptionUrl::getUnsubscribeUrl($subscriber)
+ );
break;
case 'manage':
return ''.__('Manage subscription').'';
break;
case 'manage_url':
- return SubscriptionUrl::getManageUrl($subscriber);
+ return self::processUrl(
+ $action,
+ SubscriptionUrl::getManageUrl($subscriber)
+ );
break;
default:
@@ -45,4 +58,11 @@ class Subscription {
break;
}
}
+
+ static function processUrl($action, $url) {
+ if((int) Setting::getValue('tracking.enabled') === 1) {
+ return sprintf('[subscription:%s]', $action);
+ }
+ return $url;
+ }
}
\ No newline at end of file
diff --git a/lib/Newsletter/Shortcodes/Shortcodes.php b/lib/Newsletter/Shortcodes/Shortcodes.php
index 67ad4f2177..4d6ffa64dc 100644
--- a/lib/Newsletter/Shortcodes/Shortcodes.php
+++ b/lib/Newsletter/Shortcodes/Shortcodes.php
@@ -18,18 +18,21 @@ class Shortcodes {
return array_unique($shortcodes[0]);
}
+ function match($shortcode) {
+ preg_match(
+ '/\[(?P
+ + + +
+