| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 | 
							- diff --git a/simplenews_mailjet_subscriptions.info.yml b/simplenews_mailjet_subscriptions.info.yml
 
- index 2512a39..d4b0440 100644
 
- --- a/simplenews_mailjet_subscriptions.info.yml
 
- +++ b/simplenews_mailjet_subscriptions.info.yml
 
- @@ -7,3 +7,4 @@ package: Mail
 
-  configure: simplenews_mailjet_subscription.list
 
-  dependencies:
 
-    - simplenews:simplenews
 
- +  - mailjet:mailjet
 
- diff --git a/simplenews_mailjet_subscriptions.module b/simplenews_mailjet_subscriptions.module
 
- index 09abe13..4b2ee58 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,19 @@ 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);
 
-  }
 
-  
 
-  /**
 
- diff --git a/simplenews_mailjet_subscriptions.services.yml b/simplenews_mailjet_subscriptions.services.yml
 
- new file mode 100644
 
- index 0000000..cdd4137
 
- --- /dev/null
 
- +++ b/simplenews_mailjet_subscriptions.services.yml
 
- @@ -0,0 +1,4 @@
 
- +services:
 
- +  simplenews_mailjet_subscriptions.utilities:
 
- +    class: Drupal\simplenews_mailjet_subscriptions\SimplenewsMailjetSubscriptionsUtilities
 
- +    arguments: [ '@mailjet.handler' ]
 
- diff --git a/src/SimplenewsMailjetSubscriptionsUtilities.php b/src/SimplenewsMailjetSubscriptionsUtilities.php
 
- index 950ff8a..05601ca 100644
 
- --- a/src/SimplenewsMailjetSubscriptionsUtilities.php
 
- +++ b/src/SimplenewsMailjetSubscriptionsUtilities.php
 
- @@ -2,141 +2,79 @@
 
-  
 
-  namespace Drupal\simplenews_mailjet_subscriptions;
 
-  
 
- +use Drupal\mailjet\MailjetHandlerInterface;
 
- +
 
-  /**
 
- - * Provides a list of Simplenews Mailjet Subscription entities.
 
- + * Utilisties
 
-   */
 
-  class SimplenewsMailjetSubscriptionsUtilities {
 
-  
 
-    /**
 
- -   * Check Subscriber.
 
- +   * MailjetHandler service.
 
- +   *
 
- +   * @var \Drupal\mailjet\MailjetHandlerInterface
 
-     */
 
- -  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);
 
- +  protected $mailjetHandler;
 
-  
 
- -    return $json;
 
- +/**
 
- +   * SubscribeEmailForm constructor.
 
- +   *
 
- +   * @param \Drupal\mailjet\MailjetHandlerInterface $mailjetHandler
 
- +   *   The mailjet handler service.
 
- +   */
 
- +  public function __construct(MailjetHandlerInterface $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('mailjet.handler')
 
- +    );
 
-    }
 
-  
 
-    /**
 
-     * 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) {
 
- -
 
- -          if (is_int(strpos($property['Value'], $newsletter_property_name))) {
 
- -            $newsletter_property_name = $property['Value'];
 
- -          }
 
- -          else {
 
- -            $newsletter_property_name = $property['Value'] . ';' . $newsletter_property_name;
 
- -          }
 
- -        }
 
- -      }
 
- -    }
 
- +    $contact = [
 
- +      'Email' => $subscriber_email,
 
- +      'Properties' => [
 
- +        $contact_property => $newsletter_property_name
 
- +      ]
 
- +    ];
 
-  
 
- -    $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;
 
- +    // $response = $this->updateSubscriber($listID, $contact, 'addnoforce');
 
- +    $response = $this->mailjetHandler->syncMailjetContact($listID, $contact, 'addnoforce');
 
- +    // $contact_id = $response['Data'][0]['ContactID'];
 
- +    \Drupal::logger('simplenews_mailjet_subscriptions')->notice('The mailjet user ' . $subscriber_email . ' subscribed to the ' . $listID . ' list .');
 
-    }
 
-  
 
-    /**
 
-     * 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->updateSubscriber($subscriber_email, $newsletter_property_name, 'remove');
 
- +    $response = $this->mailjetHandler->syncMailjetContact($listID, $contact, 'remove');
 
- +    // $contact_id = $response['Data'][0]['ContactID'];
 
- +    \Drupal::logger('simplenews_mailjet_subscriptions')->notice('The mailjet user ' . $subscriber_email . ' removed from the ' . $listID . ' list ');
 
- +    // return $response;
 
-    }
 
-  
 
-  }
 
 
  |