]* href\s*=[\s"']*)(http[^"'>\s]+)/gi;
+ let urls = new Set();
+ (message || '').replace(re, (match, prefix, url) => {
+ urls.add(url);
});
- };
- storeNext();
+ let map = new Map();
+ let vals = urls.values();
+
+ let replaceUrls = () => {
+ callback(null,
+ message.replace(re, (match, prefix, url) =>
+ prefix + (map.has(url) ? urllib.resolve(serviceUrl, util.format('/links/%s/%s/%s/%s', campaign.cid, list.cid, encodeURIComponent(subscription.cid), encodeURIComponent(map.get(url)))) : url)));
+ };
+
+ let storeNext = () => {
+ let urlItem = vals.next();
+ if (urlItem.done) {
+ return replaceUrls();
+ }
+
+ module.exports.add(he.decode(urlItem.value, {
+ isAttributeValue: true
+ }), campaign.id, (err, linkId, cid) => {
+ if (err) {
+ log.error('Link', err);
+ return storeNext();
+ }
+ map.set(urlItem.value, cid);
+ return storeNext();
+ });
+ };
+
+ storeNext();
+ }
};
function getSubscriptionData(campaignCid, listCid, subscriptionCid, callback) {
diff --git a/meta.json b/meta.json
index 22fe97fb..aa851e29 100644
--- a/meta.json
+++ b/meta.json
@@ -1,3 +1,3 @@
{
- "schemaVersion": 27
+ "schemaVersion": 28
}
diff --git a/setup/sql/mailtrain-test.sql b/setup/sql/mailtrain-test.sql
index 8ae97db9..6533f3a4 100644
--- a/setup/sql/mailtrain-test.sql
+++ b/setup/sql/mailtrain-test.sql
@@ -69,7 +69,8 @@ CREATE TABLE `campaigns` (
`html_prepared` longtext,
`text` longtext,
`status` tinyint(4) unsigned NOT NULL DEFAULT '1',
- `tracking_disabled` tinyint(4) unsigned NOT NULL DEFAULT '0',
+ `open_tracking_disabled` tinyint(4) unsigned NOT NULL DEFAULT '0',
+ `click_tracking_disabled` tinyint(4) unsigned NOT NULL DEFAULT '0',
`scheduled` timestamp NULL DEFAULT NULL,
`status_change` timestamp NULL DEFAULT NULL,
`delivered` int(11) unsigned NOT NULL DEFAULT '0',
diff --git a/setup/sql/mailtrain.sql b/setup/sql/mailtrain.sql
index d56c9806..02817a37 100644
--- a/setup/sql/mailtrain.sql
+++ b/setup/sql/mailtrain.sql
@@ -65,7 +65,8 @@ CREATE TABLE `campaigns` (
`html_prepared` longtext,
`text` longtext,
`status` tinyint(4) unsigned NOT NULL DEFAULT '1',
- `tracking_disabled` tinyint(4) unsigned NOT NULL DEFAULT '0',
+ `click_tracking_disabled` tinyint(4) unsigned NOT NULL DEFAULT '0',
+ `open_tracking_disabled` tinyint(4) unsigned NOT NULL DEFAULT '0',
`scheduled` timestamp NULL DEFAULT NULL,
`status_change` timestamp NULL DEFAULT NULL,
`delivered` int(11) unsigned NOT NULL DEFAULT '0',
diff --git a/setup/sql/upgrade-00028.sql b/setup/sql/upgrade-00028.sql
new file mode 100644
index 00000000..47212891
--- /dev/null
+++ b/setup/sql/upgrade-00028.sql
@@ -0,0 +1,13 @@
+# Header section
+# Define incrementing schema version number
+SET @schema_version = '28';
+
+# Rename column tracking_disabled
+ALTER TABLE `campaigns` ADD COLUMN `open_tracking_disabled` tinyint(4) unsigned DEFAULT 0 NOT NULL, ADD COLUMN `click_tracking_disabled` tinyint(4) unsigned DEFAULT 0 NOT NULL;
+UPDATE `campaigns` SET `open_tracking_disabled` = `tracking_disabled`, `click_tracking_disabled` = `tracking_disabled`;
+ALTER TABLE `campaigns` DROP COLUMN `tracking_disabled`;
+
+# Footer section
+LOCK TABLES `settings` WRITE;
+INSERT INTO `settings` (`key`, `value`) VALUES('db_schema_version', @schema_version) ON DUPLICATE KEY UPDATE `value`=@schema_version;
+UNLOCK TABLES;
diff --git a/views/campaigns/create-rss.hbs b/views/campaigns/create-rss.hbs
index 131a4a5d..709c1df9 100644
--- a/views/campaigns/create-rss.hbs
+++ b/views/campaigns/create-rss.hbs
@@ -84,7 +84,15 @@
+
+
diff --git a/views/campaigns/create-triggered.hbs b/views/campaigns/create-triggered.hbs
index 8fdafbe5..f2711dc7 100644
--- a/views/campaigns/create-triggered.hbs
+++ b/views/campaigns/create-triggered.hbs
@@ -104,7 +104,15 @@
+
+
diff --git a/views/campaigns/create.hbs b/views/campaigns/create.hbs
index b5869898..24c74fc1 100644
--- a/views/campaigns/create.hbs
+++ b/views/campaigns/create.hbs
@@ -110,7 +110,15 @@
+
+
diff --git a/views/campaigns/edit-rss.hbs b/views/campaigns/edit-rss.hbs
index 3c13c859..967094bd 100644
--- a/views/campaigns/edit-rss.hbs
+++ b/views/campaigns/edit-rss.hbs
@@ -111,7 +111,15 @@
+
+
diff --git a/views/campaigns/edit-triggered.hbs b/views/campaigns/edit-triggered.hbs
index cdefe5fc..b94c2b0d 100644
--- a/views/campaigns/edit-triggered.hbs
+++ b/views/campaigns/edit-triggered.hbs
@@ -103,7 +103,15 @@
+
+
diff --git a/views/campaigns/edit.hbs b/views/campaigns/edit.hbs
index 098b502a..faa0053c 100644
--- a/views/campaigns/edit.hbs
+++ b/views/campaigns/edit.hbs
@@ -121,7 +121,15 @@
+
+
diff --git a/views/campaigns/view.hbs b/views/campaigns/view.hbs
index a8e981b3..dcf278b1 100644
--- a/views/campaigns/view.hbs
+++ b/views/campaigns/view.hbs
@@ -164,7 +164,7 @@
- {{#unless trackingDisabled}}
+ {{#unless openTrackingDisabled}}
{{#translate}}Opened{{/translate}}
@@ -174,7 +174,8 @@
-
+ {{/unless}}
+ {{#unless clickTrackingDisabled}}
{{#translate}}Clicked{{/translate}}