diff --git a/lib/models/lists.js b/lib/models/lists.js index 0b208673..6c0a498a 100644 --- a/lib/models/lists.js +++ b/lib/models/lists.js @@ -19,7 +19,7 @@ const UnsubscriptionMode = { module.exports.UnsubscriptionMode = UnsubscriptionMode; -let allowedKeys = ['description', 'default_form', 'public_subscribe', 'unsubscription_mode']; +let allowedKeys = ['description', 'default_form', 'public_subscribe', 'unsubscription_mode', 'listunsubscribe_disabled']; module.exports.list = (start, limit, callback) => { tableHelpers.list('lists', ['*'], 'name', null, start, limit, callback); @@ -158,6 +158,7 @@ module.exports.update = (id, updates, callback) => { // The update can be only partial when executed from forms/:list if (!data.customFormChangeOnly) { data.publicSubscribe = data.publicSubscribe ? 1 : 0; + data.listunsubscribeDisabled = data.listunsubscribeDisabled ? 1 : 0; data.unsubscriptionMode = Number(data.unsubscriptionMode); let name = (data.name || '').toString().trim(); diff --git a/meta.json b/meta.json index c0a6d3c0..5d511080 100644 --- a/meta.json +++ b/meta.json @@ -1,3 +1,3 @@ { - "schemaVersion": 29 + "schemaVersion": 30 } diff --git a/services/sender.js b/services/sender.js index a30b38ee..1e22d1b1 100644 --- a/services/sender.js +++ b/services/sender.js @@ -379,6 +379,11 @@ function formatMessage(message, callback) { wordwrap: 130 }); + let listUnsubscribe = null; + if (!list.listunsubscribeDisabled) { + listUnsubscribe = url.resolve(configItems.serviceUrl, '/subscription/' + list.cid + '/unsubscribe/' + message.subscription.cid); + } + return callback(null, { from: { name: campaign.from, @@ -419,7 +424,7 @@ function formatMessage(message, callback) { } }, list: { - unsubscribe: url.resolve(configItems.serviceUrl, '/subscription/' + list.cid + '/unsubscribe/' + message.subscription.cid) + unsubscribe: listUnsubscribe }, subject: tools.formatMessage(configItems.serviceUrl, campaign, list, message.subscription, campaign.subject), html: renderedHtml, diff --git a/setup/sql/upgrade-00030.sql b/setup/sql/upgrade-00030.sql new file mode 100644 index 00000000..15a21c01 --- /dev/null +++ b/setup/sql/upgrade-00030.sql @@ -0,0 +1,17 @@ +# Header section +# Define incrementing schema version number +SET @schema_version = '30'; + +# Upgrade script section +#### INSERT YOUR UPGRADE SCRIPT BELOW THIS LINE ###### + +ALTER TABLE `lists` ADD COLUMN `listunsubscribe_disabled` tinyint(4) unsigned DEFAULT 0 NOT NULL; + +#### INSERT YOUR UPGRADE SCRIPT ABOVE THIS LINE ###### + +# Footer section. Updates schema version in settings +LOCK TABLES `settings` WRITE; +/*!40000 ALTER TABLE `settings` DISABLE KEYS */; +INSERT INTO `settings` (`key`, `value`) VALUES('db_schema_version', @schema_version) ON DUPLICATE KEY UPDATE `value`=@schema_version; +/*!40000 ALTER TABLE `settings` ENABLE KEYS */; +UNLOCK TABLES; diff --git a/views/lists/edit.hbs b/views/lists/edit.hbs index cbe0b6cc..00cfd3e1 100644 --- a/views/lists/edit.hbs +++ b/views/lists/edit.hbs @@ -80,6 +80,17 @@ +