Add config setting to disable mandatory tokens check in mailings
authorOlaf Buddenhagen <antrik@digitalcourage.de>
Sat, 24 Aug 2013 03:38:27 +0000 (05:38 +0200)
committerOlaf Buddenhagen <antrik@digitalcourage.de>
Wed, 28 Aug 2013 02:14:29 +0000 (04:14 +0200)
As per a previous discussion (with Lobo IIRC), add a configuration
setting to disable the check for presence of mandatory tokens when
sending mailings.

This setting is implemented as a negative option, i.e. ticking the
option disables the check. We could also reverse the logic, so that
ticking the option enables the check instead; and set it to on by
default... Not sure which is preferable -- I guess that's mostly a
matter of taste.

CRM/Admin/Form/Preferences/Mailing.php
CRM/Mailing/Form/Upload.php
settings/Mailing.setting.php

index 484f955e05da0a42a2eb236eb144b4ce19c055cb..16ca93f8e2bcd6d185848e4132ea8ca07b2b825e 100644 (file)
@@ -99,6 +99,13 @@ class CRM_Admin_Form_Preferences_Mailing extends CRM_Admin_Form_Preferences {
           'weight' => 8,
           'description' => NULL,
         ),
+        'disable_mandatory_tokens_check' =>
+        array(
+          'html_type' => 'checkbox',
+          'title' => ts('Disable check for mandatory tokens'),
+          'weight' => 9,
+          'description' => ts('Don\'t check for presence of mandatory tokens (domain address; unsubscribe/opt-out) before sending mailings. WARNING: Mandatory tokens are a safe-guard which facilitate compliance with the US CAN-SPAM Act. They should only be disabled if your organization adopts other mechanisms for compliance or if your organization is not subject to CAN-SPAM.'),
+        ),
       ),
     );
 
index af4b39a4dbbe3d3b4a13f53d878ff38ba50e3b40..dd1bafe9d04b5d218aa77031f1697df6ea539aa3 100644 (file)
@@ -613,12 +613,14 @@ class CRM_Mailing_Form_Upload extends CRM_Core_Form {
 
       /* First look for missing tokens */
 
-      $err = CRM_Utils_Token::requiredTokens($str);
-      if ($err !== TRUE) {
-        foreach ($err as $token => $desc) {
-          $dataErrors[] = '<li>' . ts('This message is missing a required token - {%1}: %2',
-            array(1 => $token, 2 => $desc)
-          ) . '</li>';
+      if (!CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, 'disable_mandatory_tokens_check')) {
+        $err = CRM_Utils_Token::requiredTokens($str);
+        if ($err !== TRUE) {
+          foreach ($err as $token => $desc) {
+            $dataErrors[] = '<li>' . ts('This message is missing a required token - {%1}: %2',
+              array(1 => $token, 2 => $desc)
+            ) . '</li>';
+          }
         }
       }
 
index b2e112ed957e16a7690fd2cd2928f0646d653306..31b6c02d6027d43fd52b2cee929a34ee2b231bce 100644 (file)
@@ -136,4 +136,18 @@ return array(
     'description' => 'When CiviMail is enabled, users who "subscribe" to a group from a profile Group(s) checkbox will receive a confirmation email. They must respond (opt-in) before they are added to the group.',
     'help_text' => null,
   ),
+  'disable_mandatory_tokens_check' => array(
+    'group_name' => 'Mailing Preferences',
+    'group' => 'mailing',
+    'name' => 'disable_mandatory_tokens_check',
+    'type' => 'Integer',
+    'html_type' => 'checkbox',
+    'default' => 0,
+    'add' => '4.4',
+    'title' => 'Disable check for mandatory tokens',
+    'is_domain' => 1,
+    'is_contact' => 0,
+    'description' => 'Don\'t check for presence of mandatory tokens (domain address; unsubscribe/opt-out) before sending mailings. WARNING: Mandatory tokens are a safe-guard which facilitate compliance with the US CAN-SPAM Act. They should only be disabled if your organization adopts other mechanisms for compliance or if your organization is not subject to CAN-SPAM.',
+    'help_text' => null,
+  ),
   );