| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763 | 
							- commit 6d9b6fde312fbe756115ba80656eea1861c4e4ce
 
- Author: bach <bachir@figureslibres.io>
 
- Date:   Wed Nov 2 20:57:17 2022 +0100
 
-     using mailjet module
 
- 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..a481713 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,40 @@ 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 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 @@
 
- +<?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')->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 @@
 
- +<?php
 
- +
 
- +namespace Drupal\simplenews_mailjet_subscriptions;
 
- +
 
- +use Mailjet\Resources;
 
- +use Drupal\mailjet\MailjetHandler;
 
- +
 
- +/**
 
- + * Implement SimplenewsMailjetSubscriptionsMailjetHandler interface.
 
- + */
 
- +class SimplenewsMailjetSubscriptionsMailjetHandler extends MailjetHandler implements SimplenewsMailjetSubscriptionsMailjetHandlerInterface{
 
- +
 
- +  /**
 
- +   * {@inheritdoc}
 
- +   *
 
- +   * @return array|null
 
- +   *   Return array with result or null.
 
- +   */
 
- +  public function createMailjetContact($email): ?array {
 
- +    
 
- +    $response = $this->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 @@
 
- +<?php
 
- +
 
- +namespace Drupal\simplenews_mailjet_subscriptions;
 
- +
 
- +use Drupal\mailjet\MailjetHandlerInterface;
 
- +
 
- +/**
 
- + * Interface for mailjet handler.
 
- + */
 
- +interface SimplenewsMailjetSubscriptionsMailjetHandlerInterface extends MailjetHandlerInterface {
 
- +
 
- +  /**
 
- +   * create contact.
 
- +   *
 
- +   * @param string $email
 
- +   *   email of the contact
 
- +   *
 
- +   * @return array|null
 
- +   *   Return array with the result or null.
 
- +   */
 
- +  public function createMailjetContact($email): ?array;
 
- +
 
- +  /**
 
- +   * Get contact by email.
 
- +   *
 
- +   * @param string $email
 
- +   *   email of the contact
 
- +   *
 
- +   * @return array|null
 
- +   *   Return array with the result or null.
 
- +   */
 
- +  public function getMailjetContactByEmail($email): ?array;
 
- +
 
- +}
 
- \ No newline at end of file
 
- diff --git a/src/SimplenewsMailjetSubscriptionsUtilities.php b/src/SimplenewsMailjetSubscriptionsUtilities.php
 
- index 950ff8a..82e15b5 100644
 
- --- a/src/SimplenewsMailjetSubscriptionsUtilities.php
 
- +++ b/src/SimplenewsMailjetSubscriptionsUtilities.php
 
- @@ -2,141 +2,122 @@
 
-  
 
-  namespace Drupal\simplenews_mailjet_subscriptions;
 
-  
 
- +// use Drupal\mailjet\MailjetHandlerInterface;
 
- +use Drupal\simplenews_mailjet_subscriptions\SimplenewsMailjetSubscriptionsMailjetHandlerInterface;
 
- +
 
-  /**
 
- - * Provides a list of Simplenews Mailjet Subscription entities.
 
- + * Utilisties
 
-   */
 
-  class SimplenewsMailjetSubscriptionsUtilities {
 
-  
 
-    /**
 
- -   * Check Subscriber.
 
- +   * MailjetHandler service.
 
- +   *
 
- +   * @var \Drupal\Simplenews_mailjet_subscriptions\SimplenewsMailjetSubscriptionsMailjetHandlerInterface
 
- +   */
 
- +  protected $mailjetHandler;
 
- +
 
- +/**
 
- +   * SubscribeEmailForm constructor.
 
- +   *
 
- +   * @param \Drupal\Simplenews_mailjet_subscriptions\SimplenewsMailjetSubscriptionsMailjetHandlerInterface $mailjetHandler
 
- +   *   The mailjet handler service.
 
-     */
 
- -  private static function checkSubscriber($api_key, $secret_key, $encoded_mail) {
 
- -
 
- -    // Check if contact exist
 
- -    // verifica se o contacto ja tem opções.
 
- -    $endpoint = 'https://api.mailjet.com/v3/REST/contactdata/' . $encoded_mail;
 
- -    $ch = curl_init();
 
- -    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
 
- -    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
 
- -    curl_setopt($ch, CURLOPT_USERPWD, $api_key . ':' . $secret_key);
 
- -    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 function __construct(SimplenewsMailjetSubscriptionsMailjetHandlerInterface $mailjetHandler) {
 
- +    $this->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) {
 
- +  public function unsubscribeUser($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);
 
- -    $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.');
 
- +    }
 
-    }
 
-  
 
-  }
 
 
  |