From 632195df898a2a14ea944daff70b97527b121601 Mon Sep 17 00:00:00 2001 From: Sten Van den Bergh Date: Wed, 3 Feb 2021 14:08:35 +0100 Subject: [PATCH 1/2] Add Group Name field --- src/CmTransactionalAdapter.php | 8 +++++++- src/CmTransactionalTransport.php | 10 ++++++++-- src/templates/settings.twig | 12 ++++++++++++ 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/CmTransactionalAdapter.php b/src/CmTransactionalAdapter.php index a51cf88..7de1a3b 100644 --- a/src/CmTransactionalAdapter.php +++ b/src/CmTransactionalAdapter.php @@ -47,6 +47,11 @@ public static function displayName(): string */ public $clientId; + /** + * @var string The groupName that should be used + */ + public $groupName; + // Public Methods // ========================================================================= @@ -88,8 +93,9 @@ public function defineTransport() { $auth = array('api_key' => Craft::parseEnv($this->apiKey)); + $groupName = Craft::parseEnv($this->groupName); $client = new \CS_REST_General($auth); - return new CmTransactionalTransport($auth); + return new CmTransactionalTransport($auth, $groupName); } } diff --git a/src/CmTransactionalTransport.php b/src/CmTransactionalTransport.php index b4cc132..86a58ea 100644 --- a/src/CmTransactionalTransport.php +++ b/src/CmTransactionalTransport.php @@ -31,6 +31,11 @@ class CmTransactionalTransport extends Transport */ private $_auth; + /** + * @var String + */ + private $_groupName; + // Public Methods // ========================================================================= @@ -39,9 +44,10 @@ class CmTransactionalTransport extends Transport * * @param Array $auth */ - public function __construct(Array $auth) + public function __construct(Array $auth, String $groupName) { $this->_auth = $auth; + $this->_groupName = $groupName; } /** @@ -51,7 +57,7 @@ public function send(\Swift_Mime_SimpleMessage $message, &$failedRecipients = nu { $data = $this->_formatMessage($message); $classicEmail = new \CS_REST_Transactional_ClassicEmail($this->_auth, NULL); - $groupName = 'Craft CMS'; + $groupName = empty($this->_groupName) ? 'Craft CMS' : $this->_groupName; try { $result = $classicEmail->send($data, $groupName, 'Unchanged'); diff --git a/src/templates/settings.twig b/src/templates/settings.twig index cacf8df..968d1fa 100644 --- a/src/templates/settings.twig +++ b/src/templates/settings.twig @@ -12,6 +12,18 @@ required: true }) }} +{{ forms.autosuggestField({ + label: "Group Name"|t('cm-transactional'), + instructions: "The name under which emails are grouped in Campaign Monitor (fallbacks to 'Craft CMS')"|t('cm-transactional'), + id: 'groupName', + name: 'groupName', + value: adapter.groupName, + errors: adapter.getErrors('groupName'), + suggestEnvVars: true, + suggestions: craft.cp.getEnvSuggestions(), + required: false +}) }} + {# {{ forms.textField({ label: "Client ID"|t('cm-transactional'), From aab5e5d0041ef5cc177546b3e696610936d5b999 Mon Sep 17 00:00:00 2001 From: Sten Van den Bergh Date: Wed, 3 Feb 2021 16:47:03 +0100 Subject: [PATCH 2/2] Catch unsaved mail adapter settings --- src/CmTransactionalTransport.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CmTransactionalTransport.php b/src/CmTransactionalTransport.php index 86a58ea..d31ae2f 100644 --- a/src/CmTransactionalTransport.php +++ b/src/CmTransactionalTransport.php @@ -44,7 +44,7 @@ class CmTransactionalTransport extends Transport * * @param Array $auth */ - public function __construct(Array $auth, String $groupName) + public function __construct(Array $auth, $groupName = null) { $this->_auth = $auth; $this->_groupName = $groupName; @@ -57,7 +57,7 @@ public function send(\Swift_Mime_SimpleMessage $message, &$failedRecipients = nu { $data = $this->_formatMessage($message); $classicEmail = new \CS_REST_Transactional_ClassicEmail($this->_auth, NULL); - $groupName = empty($this->_groupName) ? 'Craft CMS' : $this->_groupName; + $groupName = (isset($this->_groupName) && !empty($this->_groupName)) ? $this->_groupName : 'Craft CMS'; try { $result = $classicEmail->send($data, $groupName, 'Unchanged');