From a99716da8f6f3c7855b46d13f5dfac73f0517911 Mon Sep 17 00:00:00 2001 From: bach Date: Tue, 8 Nov 2022 17:57:16 +0100 Subject: [PATCH] fixed #1983 hook_simplenews_subscriber_update --- composer.json | 2 +- ..._subscriptions__usingmailjetmodule#2.patch | 791 ++++++++++++++++++ 2 files changed, 792 insertions(+), 1 deletion(-) create mode 100644 patches/simplenews_mailjet_subscriptions__usingmailjetmodule#2.patch diff --git a/composer.json b/composer.json index ad06fce2..cb6d2739 100644 --- a/composer.json +++ b/composer.json @@ -302,7 +302,7 @@ "With no blocks, clicking on the Custom Blocks tab crashes site https://www.drupal.org/project/structure_sync/issues/3070414":"https://www.drupal.org/files/issues/2022-03-23/PluginNotFoundException-3070414-3.patch" }, "drupal/simplenews_mailjet_subscriptions": { - "using mailjet module":"./patches/simplenews_mailjet_subscriptions__usingmailjetmodule.patch" + "using mailjet module":"./patches/simplenews_mailjet_subscriptions__usingmailjetmodule#2.patch" }, "drupal/graphql": { "invalid translation language https://github.com/drupal-graphql/graphql/pull/1176": "./patches/graphql-fix-invalid-translation-language-dev.patch" diff --git a/patches/simplenews_mailjet_subscriptions__usingmailjetmodule#2.patch b/patches/simplenews_mailjet_subscriptions__usingmailjetmodule#2.patch new file mode 100644 index 00000000..02b80648 --- /dev/null +++ b/patches/simplenews_mailjet_subscriptions__usingmailjetmodule#2.patch @@ -0,0 +1,791 @@ +diff --git a/README.txt b/README.txt +index cee6e1a..b488e91 100644 +--- a/README.txt ++++ b/README.txt +@@ -15,6 +15,7 @@ REQUIREMENTS + This module requires the following modules: + + * Simplenews (https://www.drupal.org/project/simplenews) ++ * Mailet (https://www.drupal.org/project/Mailjet) + + INSTALLATION + ------------ +diff --git a/simplenews_mailjet_subscriptions.module b/simplenews_mailjet_subscriptions.module +index 09abe13..74214f6 100644 +--- a/simplenews_mailjet_subscriptions.module ++++ b/simplenews_mailjet_subscriptions.module +@@ -7,7 +7,7 @@ + + use Drupal\Core\Routing\RouteMatchInterface; + use Drupal\simplenews\Entity\Subscriber; +-use Drupal\simplenews_mailjet_subscriptions\SimplenewsMailjetSubscriptionsUtilities; ++// use Drupal\simplenews_mailjet_subscriptions\SimplenewsMailjetSubscriptionsUtilities; + use Drupal\simplenews_mailjet_subscriptions\Entity\SimplenewsMailjetSubscriptionEntity; + use Drupal\Component\Utility\Html; + +@@ -24,18 +24,18 @@ use Drupal\Component\Utility\Html; + function simplenews_mailjet_subscriptions_simplenews_subscribe(Subscriber $subscriber, string $subscription) { + $entities = SimplenewsMailjetSubscriptionEntity::loadMultiple(); + foreach ((array) $entities as $entity) { +- $api_key = $entity->getApiKey(); +- $secret_key = $entity->getSecretkey(); + $listID = $entity->getID(); + $table = $entity->get('mapping_table'); + if (is_array($table)) { + foreach ($table as $category) { + if ($category['simplenews_news'] == $subscription) { +- SimplenewsMailjetSubscriptionsUtilities::subscribeUser($subscriber, $subscription, $category, $api_key, $secret_key, $listID); ++ // SimplenewsMailjetSubscriptionsUtilities::subscribeUser($subscriber, $category); ++ \Drupal::service('simplenews_mailjet_subscriptions.utilities')->subscribeUser($listID, $subscriber, $category); + } + } + } + } ++ // \Drupal::service('simplenews_mailjet_subscriptions.utilities')->subscribeUser($subscriber, $subscription); + } + + /** +@@ -51,19 +51,74 @@ function simplenews_mailjet_subscriptions_simplenews_subscribe(Subscriber $subsc + function simplenews_mailjet_subscriptions_simplenews_unsubscribe(Subscriber $subscriber, string $subscription) { + $entities = SimplenewsMailjetSubscriptionEntity::loadMultiple(); + foreach ((array) $entities as $entity) { +- $api_key = $entity->getApiKey(); +- $secret_key = $entity->getSecretkey(); + $listID = $entity->getID(); + $table = $entity->get('mapping_table'); + if (is_array($table)) { + foreach ($table as $category) { + if ($category['simplenews_news'] == $subscription) { + // Unsubscribe. +- SimplenewsMailjetSubscriptionsUtilities::unsubscribeUser($subscriber, $subscription, $category, $api_key, $secret_key, $listID); ++ // SimplenewsMailjetSubscriptionsUtilities::unsubscribeUser($subscriber, $category); ++ \Drupal::service('simplenews_mailjet_subscriptions.utilities')->unsubscribeUser($listID, $subscriber, $category); + } + } + } + } ++ // \Drupal::service('simplenews_mailjet_subscriptions.utilities')->unsubscribeUser($subscriber, $subscription); ++} ++ ++ ++/** ++ * Act after a subscriber is updated. ++ * ++ * @param \Drupal\simplenews\Entity\Subscriber $subscriber ++ * The subscriber object including all subscriptions of this user. ++ * ++ * @ingroup subscriber ++ */ ++function simplenews_mailjet_subscriptions_simplenews_subscriber_update(Subscriber $subscriber) { ++ $new_mail=$subscriber->getMail(); ++ $original_mail = $subscriber->original->getMail(); ++ if ($new_mail !== $original_mail) { ++ $new_subscriptions = $subscriber->getSubscribedNewsletterIds(); ++ $original_subscriptions = $subscriber->original->getSubscribedNewsletterIds(); ++ $entities = SimplenewsMailjetSubscriptionEntity::loadMultiple(); ++ foreach ((array) $entities as $entity) { ++ $listID = $entity->getID(); ++ $table = $entity->get('mapping_table'); ++ if (is_array($table)) { ++ foreach ($table as $category) { ++ if ( in_array($category['simplenews_news'], $original_subscriptions) ) { ++ \Drupal::service('simplenews_mailjet_subscriptions.utilities')->unsubscribeUser($listID, $subscriber->original, $category); ++ } ++ if ( in_array($category['simplenews_news'], $new_subscriptions) ) { ++ \Drupal::service('simplenews_mailjet_subscriptions.utilities')->subscribeUser($listID, $subscriber, $category); ++ } ++ } ++ } ++ } ++ } ++} ++ ++ ++/** ++ * Act after a subscriber has been deleted. ++ * ++ * @param \Drupal\simplenews\Entity\Subscriber $subscriber ++ * The subscriber object including all subscriptions of this user. ++ * ++ * @ingroup subscriber ++ */ ++function simplenews_mailjet_subscriptions_simplenews_subscriber_delete(Subscriber $subscriber) { ++ $entities = SimplenewsMailjetSubscriptionEntity::loadMultiple(); ++ foreach ((array) $entities as $entity) { ++ $listID = $entity->getID(); ++ $table = $entity->get('mapping_table'); ++ if (is_array($table)) { ++ foreach ($table as $category) { ++ \Drupal::service('simplenews_mailjet_subscriptions.utilities')->unsubscribeUser($listID, $subscriber, $category); ++ } ++ } ++ } + } + + /** +diff --git a/simplenews_mailjet_subscriptions.services.yml b/simplenews_mailjet_subscriptions.services.yml +new file mode 100644 +index 0000000..cee6a81 +--- /dev/null ++++ b/simplenews_mailjet_subscriptions.services.yml +@@ -0,0 +1,7 @@ ++services: ++ simplenews_mailjet_subscriptions.handler: ++ class: Drupal\simplenews_mailjet_subscriptions\SimplenewsMailjetSubscriptionsMailjetHandler ++ arguments: ['@mailjet.client_factory'] ++ simplenews_mailjet_subscriptions.utilities: ++ class: Drupal\simplenews_mailjet_subscriptions\SimplenewsMailjetSubscriptionsUtilities ++ arguments: [ '@simplenews_mailjet_subscriptions.handler' ] +diff --git a/src/Entity/SimplenewsMailjetSubscriptionEntity.php b/src/Entity/SimplenewsMailjetSubscriptionEntity.php +index 27b7737..34c8df5 100644 +--- a/src/Entity/SimplenewsMailjetSubscriptionEntity.php ++++ b/src/Entity/SimplenewsMailjetSubscriptionEntity.php +@@ -30,8 +30,6 @@ use Drupal\Core\Config\Entity\ConfigEntityBase; + * config_export = { + * "id", + * "title", +- * "api_key", +- * "secret_key", + * "mapping_table" + * } + * ) +@@ -94,53 +92,53 @@ class SimplenewsMailjetSubscriptionEntity extends ConfigEntityBase implements Si + return $this->get('id'); + } + +- /** +- * Returns the entity api key. +- * +- * @return string +- * The entity api key. +- */ +- public function getApiKey() { +- return $this->get('api_key'); +- } +- +- /** +- * Sets the entity api key. +- * +- * @param string $api_key +- * Api key. +- * +- * @return $this +- * The Simplenews Mailjet Subscription entity. +- */ +- public function setApiKey($api_key) { +- $this->set('api_key', $api_key); +- return $this; +- } +- +- /** +- * Returns the entity secret key. +- * +- * @return string +- * The entity secret key. +- */ +- public function getSecretkey() { +- return $this->get('secret_key'); +- } +- +- /** +- * Sets the entity secret key. +- * +- * @param string $secret_key +- * Secret key. +- * +- * @return $this +- * The Simplenews Mailjet Subscription entity. +- */ +- public function setSecretkey($secret_key) { +- $this->set('secret_key', $secret_key); +- return $this; +- } ++ // /** ++ // * Returns the entity api key. ++ // * ++ // * @return string ++ // * The entity api key. ++ // */ ++ // public function getApiKey() { ++ // return $this->get('api_key'); ++ // } ++ ++ // /** ++ // * Sets the entity api key. ++ // * ++ // * @param string $api_key ++ // * Api key. ++ // * ++ // * @return $this ++ // * The Simplenews Mailjet Subscription entity. ++ // */ ++ // public function setApiKey($api_key) { ++ // $this->set('api_key', $api_key); ++ // return $this; ++ // } ++ ++ // /** ++ // * Returns the entity secret key. ++ // * ++ // * @return string ++ // * The entity secret key. ++ // */ ++ // public function getSecretkey() { ++ // return $this->get('secret_key'); ++ // } ++ ++ // /** ++ // * Sets the entity secret key. ++ // * ++ // * @param string $secret_key ++ // * Secret key. ++ // * ++ // * @return $this ++ // * The Simplenews Mailjet Subscription entity. ++ // */ ++ // public function setSecretkey($secret_key) { ++ // $this->set('secret_key', $secret_key); ++ // return $this; ++ // } + + /** + * Sets the entity mapping table. +diff --git a/src/Form/SimplenewsMailjetSubscriptionAddForm.php b/src/Form/SimplenewsMailjetSubscriptionAddForm.php +index 836bee3..bc70090 100644 +--- a/src/Form/SimplenewsMailjetSubscriptionAddForm.php ++++ b/src/Form/SimplenewsMailjetSubscriptionAddForm.php +@@ -64,20 +64,20 @@ class SimplenewsMailjetSubscriptionAddForm extends EntityForm { + 'exists' => [$this, 'exist'], + ], + ]; +- $form['api_key'] = [ +- '#type' => 'textfield', +- '#title' => $this->t('API Key'), +- '#maxlength' => 32, +- '#description' => $this->t('Mailjet Account API Key'), +- '#required' => TRUE, +- ]; +- $form['secret_key'] = [ +- '#type' => 'password', +- '#title' => $this->t('Secret Key'), +- '#maxlength' => 32, +- '#description' => $this->t('Mailjet Account Secret Key'), +- '#required' => TRUE, +- ]; ++ // $form['api_key'] = [ ++ // '#type' => 'textfield', ++ // '#title' => $this->t('API Key'), ++ // '#maxlength' => 32, ++ // '#description' => $this->t('Mailjet Account API Key'), ++ // '#required' => TRUE, ++ // ]; ++ // $form['secret_key'] = [ ++ // '#type' => 'password', ++ // '#title' => $this->t('Secret Key'), ++ // '#maxlength' => 32, ++ // '#description' => $this->t('Mailjet Account Secret Key'), ++ // '#required' => TRUE, ++ // ]; + + return $form; + } +diff --git a/src/Form/SimplenewsMailjetSubscriptionEditForm.php b/src/Form/SimplenewsMailjetSubscriptionEditForm.php +index 98342b5..f67ba96 100644 +--- a/src/Form/SimplenewsMailjetSubscriptionEditForm.php ++++ b/src/Form/SimplenewsMailjetSubscriptionEditForm.php +@@ -76,20 +76,20 @@ class SimplenewsMailjetSubscriptionEditForm extends EntityForm { + '#help' => $this->t('Configuration title'), + '#required' => TRUE, + ]; +- $form['api_key'] = [ +- '#type' => 'textfield', +- '#title' => $this->t('API Key'), +- '#maxlength' => 32, +- '#default_value' => $this->entity->getApiKey(), +- '#help' => $this->t('Mailjet Account API Key'), +- '#required' => TRUE, +- '#disabled' => !$this->entity->isNew(), +- ]; +- +- if ($this->entity->getApiKey() && $this->entity->getSecretkey()) { ++ // $form['api_key'] = [ ++ // '#type' => 'textfield', ++ // '#title' => $this->t('API Key'), ++ // '#maxlength' => 32, ++ // '#default_value' => $this->entity->getApiKey(), ++ // '#help' => $this->t('Mailjet Account API Key'), ++ // '#required' => TRUE, ++ // '#disabled' => !$this->entity->isNew(), ++ // ]; ++ ++ // if ($this->entity->getApiKey() && $this->entity->getSecretkey()) { + $this->constructTable($form, $form_state); + +- } ++ // } + + $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..3f546ef +--- /dev/null ++++ b/src/Plugin/RulesAction/UnsubscribeFromList.php +@@ -0,0 +1,51 @@ ++notice(print_r($listID, true)); ++ // \Drupal::logger('simplenews_mailjet_subscriptions')->notice("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 ++++ b/src/SimplenewsMailjetSubscriptionsInterface.php +@@ -36,43 +36,43 @@ interface SimplenewsMailjetSubscriptionsInterface extends ConfigEntityInterface + */ + public function getId(); + +- /** +- * Returns the entity api key. +- * +- * @return string +- * The entity api key. +- */ +- public function getApiKey(); ++ // /** ++ // * Returns the entity api key. ++ // * ++ // * @return string ++ // * The entity api key. ++ // */ ++ // public function getApiKey(); + +- /** +- * Sets the entity api key. +- * +- * @param string $api_key +- * Api key. +- * +- * @return $this +- * The Simplenews Mailjet Subscription entity. +- */ +- public function setApiKey($api_key); ++ // /** ++ // * Sets the entity api key. ++ // * ++ // * @param string $api_key ++ // * Api key. ++ // * ++ // * @return $this ++ // * The Simplenews Mailjet Subscription entity. ++ // */ ++ // public function setApiKey($api_key); + +- /** +- * Returns the entity secret key. +- * +- * @return string +- * The entity secret key. +- */ +- public function getSecretkey(); ++ // /** ++ // * Returns the entity secret key. ++ // * ++ // * @return string ++ // * The entity secret key. ++ // */ ++ // public function getSecretkey(); + +- /** +- * Sets the entity secret key. +- * +- * @param string $secret_key +- * Secret key. +- * +- * @return $this +- * The Simplenews Mailjet Subscription entity. +- */ +- public function setSecretkey($secret_key); ++ // /** ++ // * Sets the entity secret key. ++ // * ++ // * @param string $secret_key ++ // * Secret key. ++ // * ++ // * @return $this ++ // * The Simplenews Mailjet Subscription entity. ++ // */ ++ // public function setSecretkey($secret_key); + + /** + * Sets the entity mapping table. +diff --git a/src/SimplenewsMailjetSubscriptionsMailjetHandler.php b/src/SimplenewsMailjetSubscriptionsMailjetHandler.php +new file mode 100644 +index 0000000..a68cbf1 +--- /dev/null ++++ b/src/SimplenewsMailjetSubscriptionsMailjetHandler.php +@@ -0,0 +1,47 @@ ++mailjetClient->post(Resources::$Contact, ["body" => ['Email' => $email]]); ++ ++ if ($response->success()) { ++ return $response->getData(); ++ } ++ ++ return NULL; ++ } ++ ++ /** ++ * {@inheritdoc} ++ * ++ * @return array|null ++ * Return array with result or null. ++ */ ++ public function getMailjetContactByEmail($email): ?array { ++ ++ $response = $this->mailjetClient->get(Resources::$Contact, ['id' => $email]); ++ ++ if ($response->success()) { ++ return $response->getData(); ++ } ++ ++ return NULL; ++ } ++ ++} +\ No newline at end of file +diff --git a/src/SimplenewsMailjetSubscriptionsMailjetHandlerInterface.php b/src/SimplenewsMailjetSubscriptionsMailjetHandlerInterface.php +new file mode 100644 +index 0000000..b6484d7 +--- /dev/null ++++ b/src/SimplenewsMailjetSubscriptionsMailjetHandlerInterface.php +@@ -0,0 +1,34 @@ ++mailjetHandler = $mailjetHandler; + } + + /** +- * Update Subscriber. ++ * {@inheritDoc} + */ +- private static function updateSubscriber($api_key, $secret_key, $listID, $subscriber_email, $contact_property, $newsletter_property_name, $action) { +- +- // Add contact to mailjet. +- $endpoint = 'https://api.mailjet.com/v3/REST/contactslist/' . $listID . '/managecontact'; +- $message = [ +- "Properties" => [ +- $contact_property => $newsletter_property_name, +- ], +- "Action" => $action, +- "Email" => $subscriber_email, +- ]; +- $payload = json_encode($message); +- +- $ch = curl_init(); +- curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); +- curl_setopt($ch, CURLOPT_POST, 1); +- curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); +- curl_setopt($ch, CURLOPT_USERPWD, $api_key . ':' . $secret_key); +- curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); +- curl_setopt($ch, CURLOPT_URL, $endpoint); +- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); +- $response = curl_exec($ch); +- curl_close($ch); +- $json = json_decode($response, TRUE); +- +- return $json; ++ public static function create(ContainerInterface $container) { ++ return new static( ++ $container->get('simplenews_mailjet_subscriptions.handler') ++ ); ++ } ++ ++ public function checkSubscriber($encoded_mail) { ++ $response = $this->mailjetHandler->getMailjetContactByEmail($encoded_mail); ++ if ($response) { ++ // contact alredy exists ++ $contact_id = $response[0]['ID']; ++ return $contact_id; ++ } ++ ++ return null; ++ } ++ ++ public function createSubscriber($email) { ++ $response = $this->mailjetHandler->createMailjetContact($email); ++ if ($response) { ++ // contact alredy exists ++ $contact_id = $response[0]['ID']; ++ return $contact_id; ++ } ++ ++ return null; + } + + /** + * Subscribe User. + */ +- public static function subscribeUser($subscriber, $subscription, $category, $api_key, $secret_key, $listID) { ++ public function subscribeUser($listID, $subscriber, $category) { + +- $contact_property = $category['contact_property']; +- $newsletter_property_name = $category['newsletter_property_name']; + $subscriber_email = $subscriber->getMail(); + $encoded_mail = urlencode($subscriber_email); +- $response = ''; +- +- $contact_info = self::checkSubscriber($api_key, $secret_key, $encoded_mail); +- +- $options = $contact_info['Data']; + +- // Se existe - acrescenta a opções. +- if ($options[0]['Data']) { +- foreach ($options[0]['Data'] as $property) { +- if ($property["Name"] == $contact_property) { ++ $contactid = $this->checkSubscriber($encoded_mail); ++ if (!$contactid) { ++ // subscriber does not exists yet, create it ++ $contactid = $this->createSubscriber($subscriber_email); ++ } + +- if (is_int(strpos($property['Value'], $newsletter_property_name))) { +- $newsletter_property_name = $property['Value']; +- } +- else { +- $newsletter_property_name = $property['Value'] . ';' . $newsletter_property_name; +- } +- } ++ if ($contactid) { ++ $contact = [ ++ 'Email' => $subscriber_email, ++ // 'Properties' => [ ++ // $contact_property => $newsletter_property_name ++ // ] ++ ]; ++ ++ $response = $this->mailjetHandler->syncMailjetContact($listID, $contact, 'addnoforce'); ++ if ($response) { ++ // $contact_id = $response['Data'][0]['ContactID']; ++ \Drupal::logger('simplenews_mailjet_subscriptions')->notice('The mailjet user ' . $subscriber_email . ' subscribed to the ' . $listID . ' list.'); ++ }else{ ++ \Drupal::logger('simplenews_mailjet_subscriptions')->warning('error while subscrining ' . $subscriber_email . ' to the ' . $listID . ' list.'); + } ++ ++ } else { ++ \Drupal::logger('simplenews_mailjet_subscriptions')->warning($subscriber_email . ' does not exists and can not be created on mailjet.'); + } + +- $response = self::updateSubscriber($api_key, $secret_key, $listID, $subscriber_email, $contact_property, $newsletter_property_name, 'addnoforce'); +- $contact_id = $response['Data'][0]['ContactID']; +- \Drupal::logger('simplenews_mailjet_subscriptions')->notice('The mailjet user ' . $contact_id . ' subscribed to the ' . $contact_property . ' properties with the ' . $newsletter_property_name . ' values in the list ' . $listID . '.'); +- return $response; ++ + } + + /** + * Unsubscribe User. + */ +- public static function unsubscribeUser($subscriber, $subscription, $category, $api_key, $secret_key, $listID) { +- $contact_property = $category['contact_property']; +- $newsletter_property_name = $category['newsletter_property_name']; ++ public function unsubscribeUser($listID, $subscriber, $category) { + $subscriber_email = $subscriber->getMail(); +- $encoded_mail = urlencode($subscriber_email); +- $response = ''; +- +- $contact_info = self::checkSubscriber($api_key, $secret_key, $encoded_mail); +- $contact_id = $contact_info['ContactID']; +- $options = $contact_info['Data']; +- +- if ($options[0]['Data']) { +- foreach ($options[0]['Data'] as $property) { +- if ($property["Name"] == $contact_property) { +- if (substr_count($property['Value'], ';') == 0) { +- $newsletter_property_name = ''; +- $response = self::updateSubscriber($api_key, $secret_key, $listID, $subscriber_email, $contact_property, $newsletter_property_name, 'remove'); +- $contact_id = $response['Data'][0]['ContactID']; +- \Drupal::logger('simplenews_mailjet_subscriptions')->notice('The mailjet user ' . $contact_id . ' unsubscribed to the list ' . $listID . '.'); +- } +- else { +- $pos = strpos($property['Value'], $newsletter_property_name); +- \Drupal::logger('simplenews_mailjet_subscriptions')->notice('The mailjet user ' . $contact_id . ' unsubscribed to the ' . $contact_property . ' properties with the ' . $newsletter_property_name . ' values in the list ' . $listID . '.'); +- if ($pos === 0) { +- $newsletter_property_name = str_replace($newsletter_property_name . ';', '', $property['Value']); +- } +- else { +- $newsletter_property_name = str_replace(';' . $newsletter_property_name, '', $property['Value']); +- } +- $response = self::updateSubscriber($api_key, $secret_key, $listID, $subscriber_email, $contact_property, $newsletter_property_name, 'addnoforce'); +- $contact_id = $response['Data'][0]['ContactID']; +- \Drupal::logger('simplenews_mailjet_subscriptions')->notice('The mailjet user ' . $contact_id . 'remains subscribed to the ' . $contact_property . ' properties with the ' . $newsletter_property_name . ' values in the list ' . $listID . '.'); +- +- } +- } +- } +- } ++ $contact = [ ++ 'Email' => $subscriber_email, ++ // 'Properties' => [ ++ // $contact_property => $newsletter_property_name ++ // ] ++ ]; + +- return $response; ++ $response = $this->mailjetHandler->syncMailjetContact($listID, $contact, 'remove'); ++ if ($response) { ++ // $contact_id = $response['Data'][0]['ContactID']; ++ \Drupal::logger('simplenews_mailjet_subscriptions')->notice('The mailjet user ' . $subscriber_email . ' removed from the ' . $listID . ' list.'); ++ }else{ ++ \Drupal::logger('simplenews_mailjet_subscriptions')->warning('error while removing ' . $subscriber_email . ' from the ' . $listID . ' list.'); ++ } + } + + }