Parcourir la source

simplenews_mailjet_subscriptions: added rules action to respond to unsubscribe webhook

bach il y a 1 an
Parent
commit
8ac394cff0

+ 35 - 2
config/sync/rules.reaction.mailjet_unsubscribe_event.yml

@@ -19,13 +19,18 @@ config_version: '3'
 expression:
   id: rules_rule
   uuid: fb766314-f49f-4aba-9115-8c5b362cf404
+  weight: 0
   conditions:
     id: rules_and
     uuid: 2c3970cc-c861-4c32-881d-a4683faa2541
+    weight: 0
     conditions:
       -
         id: rules_condition
         uuid: 2bea8cc9-4a68-40f4-822e-bf5d0f16c20f
+        weight: 0
+        condition_id: rules_data_comparison
+        negate: false
         context_values:
           operation: '=='
           value: unsub
@@ -37,9 +42,37 @@ expression:
           value:
             rules_tokens: {  }
         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
+        context_values:
+          type: mailjet_event
+        context_mapping:
+          entity: mailjet_event
+        context_processors:
+          type:
+            rules_tokens: {  }
+        provides_mapping: {  }
   actions:
     id: rules_action_set
     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: {  }

+ 9 - 10
config/sync/views.view.admin_users.yml

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

+ 56 - 0
patches/simplenews_mailjet_subscriptions__usingmailjetmodule.patch

@@ -301,6 +301,62 @@ index 98342b5..f67ba96 100644
  
      $form['add_subscription'] = [
        '#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
 index c727d26..37c082d 100644
 --- a/src/SimplenewsMailjetSubscriptionsInterface.php