simplenews_mailjet_subscriptions: added rules action to respond to unsubscribe webhook

This commit is contained in:
Bachir Soussi Chiadmi 2022-06-17 11:35:06 +02:00
parent 5c37d02cb7
commit 8ac394cff0
3 changed files with 101 additions and 13 deletions

View File

@ -19,13 +19,18 @@ config_version: '3'
expression: expression:
id: rules_rule id: rules_rule
uuid: fb766314-f49f-4aba-9115-8c5b362cf404 uuid: fb766314-f49f-4aba-9115-8c5b362cf404
weight: 0
conditions: conditions:
id: rules_and id: rules_and
uuid: 2c3970cc-c861-4c32-881d-a4683faa2541 uuid: 2c3970cc-c861-4c32-881d-a4683faa2541
weight: 0
conditions: conditions:
- -
id: rules_condition id: rules_condition
uuid: 2bea8cc9-4a68-40f4-822e-bf5d0f16c20f uuid: 2bea8cc9-4a68-40f4-822e-bf5d0f16c20f
weight: 0
condition_id: rules_data_comparison
negate: false
context_values: context_values:
operation: '==' operation: '=='
value: unsub value: unsub
@ -37,9 +42,37 @@ expression:
value: value:
rules_tokens: { } rules_tokens: { }
provides_mapping: { } provides_mapping: { }
condition_id: rules_data_comparison -
id: rules_condition
uuid: fe051e60-fd5e-4e90-a272-c526017966cb
weight: 0
condition_id: rules_entity_is_of_type
negate: false negate: false
context_values:
type: mailjet_event
context_mapping:
entity: mailjet_event
context_processors:
type:
rules_tokens: { }
provides_mapping: { }
actions: actions:
id: rules_action_set id: rules_action_set
uuid: 5c91a286-ea41-47f7-b6a9-451cb4bb2324 uuid: 5c91a286-ea41-47f7-b6a9-451cb4bb2324
actions: { } weight: 0
actions:
-
id: rules_action
uuid: 7eb49497-8830-46d4-975c-6b25b5d6dee6
weight: 0
action_id: rules_simplenews_mailjet_subscriptions_unsubscribe_from_list
context_values:
listID: mailjet_event.event_field.mj_list_id
email: mailjet_event.event_field.email
context_mapping: { }
context_processors:
listID:
rules_tokens: { }
email:
rules_tokens: { }
provides_mapping: { }

View File

@ -824,9 +824,9 @@ display:
entity_field: status entity_field: status
plugin_id: boolean plugin_id: boolean
operator: '=' operator: '='
value: All value: '1'
group: 1 group: 1
exposed: false exposed: true
expose: expose:
operator_id: '' operator_id: ''
label: Active label: Active
@ -836,23 +836,22 @@ display:
operator_limit_selection: false operator_limit_selection: false
operator_list: { } operator_list: { }
identifier: status identifier: status
required: false required: true
remember: false remember: false
multiple: false multiple: false
remember_roles: remember_roles:
authenticated: authenticated authenticated: authenticated
anonymous: '0'
admin: '0'
root: '0'
contact_company: '0'
adherent: '0'
free_user: '0'
premium: '0'
unverified: '0' unverified: '0'
student: '0' anonymous: '0'
free_user: '0'
contact_company: '0'
alpha_testeur: '0' alpha_testeur: '0'
student: '0'
adherent: '0'
translator: '0' translator: '0'
admin_showroom: '0' admin_showroom: '0'
admin: '0'
root: '0'
is_grouped: false is_grouped: false
group_info: group_info:
label: '' label: ''

View File

@ -301,6 +301,62 @@ index 98342b5..f67ba96 100644
$form['add_subscription'] = [ $form['add_subscription'] = [
'#type' => 'submit', '#type' => 'submit',
diff --git a/src/Plugin/RulesAction/UnsubscribeFromList.php b/src/Plugin/RulesAction/UnsubscribeFromList.php
new file mode 100644
index 0000000..c6a5a77
--- /dev/null
+++ b/src/Plugin/RulesAction/UnsubscribeFromList.php
@@ -0,0 +1,49 @@
+<?php
+
+namespace Drupal\simplenews_mailjet_subscriptions\Plugin\RulesAction;
+
+use Drupal\rules\Core\RulesActionBase;
+use Drupal\simplenews\SubscriberInterface;
+
+/**
+ * Provides a 'Unsubscribe' action.
+ *
+ * @RulesAction(
+ * id = "rules_simplenews_mailjet_subscriptions_unsubscribe_from_list",
+ * label = @Translation("Unsubscribe from newsletter, giving mailjet listID and email"),
+ * category = @Translation("Simplenews Mailjet Subscriptions"),
+ * context_definitions = {
+ * "listID" = @ContextDefinition("integer",
+ * label = @Translation("Mailjet list ID"),
+ * description = @Translation("Specifies the mailjet list ID from which simplenews list will be found and email will be unsubscribed from.")
+ * ),
+ * "email" = @ContextDefinition("string",
+ * label = @Translation("Subscriber email"),
+ * description = @Translation("Specifies the email to unsubscribe.")
+ * )
+ * }
+ * )
+ */
+class UnsubscribeFromList extends RulesActionBase {
+
+ /**
+ * Deletes the Entity.
+ *
+ * @param integer listID
+ * The mailjet list to unsubcsribe from.
+ *
+ * @param string email
+ * The email to unsubcribe.
+ */
+ protected function doExecute(integer $listID, string $email) {
+ $l = $listID;
+ $e = $email;
+ \Drupal::logger('simplenews_mailjet_subscriptions')->info("Unsubscribe webhook triggered for listID: " . $listID . ", and email: " . $email . ".");
+ // find corresponding simplenews list from mailjet listID
+
+ // get subscriber entity
+
+ // unsubscribe subscriber from simplenews list
+ }
+
+}
\ No newline at end of file
diff --git a/src/SimplenewsMailjetSubscriptionsInterface.php b/src/SimplenewsMailjetSubscriptionsInterface.php diff --git a/src/SimplenewsMailjetSubscriptionsInterface.php b/src/SimplenewsMailjetSubscriptionsInterface.php
index c727d26..37c082d 100644 index c727d26..37c082d 100644
--- a/src/SimplenewsMailjetSubscriptionsInterface.php --- a/src/SimplenewsMailjetSubscriptionsInterface.php