Loading modules/convivial_enricher_mailchimp/README.txt 0 → 100644 +70 −0 Original line number Diff line number Diff line CONTENTS OF THIS FILE --------------------- * Introduction * Requirements * Recommended modules * Installation * Configuration * Troubleshooting * Maintainers INTRODUCTION ------------ The Enricher Mailchimp is a submodule of Enricher. Enricher Mailchimp provides an implementation of an EnricherDatasource plugin to allow Enricher to interface with Mailchimp's API. REQUIREMENTS ------------ This module requires the following modules: * [Mailchimp](https://www.drupal.org/project/mailchimp): INSTALLATION ------------ * Install as you would normally install a contributed Drupal module. Visit https://www.drupal.org/node/1897420 for further information. CONFIGURATION ------------- * Configure the user permissions in Administration » People » Permissions: - Administer enrichers Users with this permission will see the webservices > enrichers configuration list page. From here they can add, configure, delete, enable and disabled enrichers. Warning: Give to trusted roles only; this permission has security implications. Allows full administration access to create and edit enrichers. TROUBLESHOOTING --------------- * If you are not receiving data back for your user. - Check the recent log messages report for exception messages. MAINTAINERS ----------- Current maintainers: * Eleo Basili (eleonel) - https://www.drupal.org/u/eleonel * Naveen Valecha (naveenvalecha) - https://www.drupal.org/u/naveenvalecha This project has been sponsored by: * Morpht Pty Ltd We are a team of dedicated and enthusiastic designers, programmers and site builders who know how to get the most from Drupal. We work for a variety of clients in government, education, media and pharmaceutical sectors. modules/convivial_enricher_mailchimp/config/schema/convivial_enricher_mailchimp.schema.yml 0 → 100644 +7 −0 Original line number Diff line number Diff line convivial_enricher.datasource.mailchimp: type: mapping label: 'Mailchimp' mapping: mailchimp_list: label: 'Mailchimp list ID' type: string modules/convivial_enricher_mailchimp/convivial_enricher_mailchimp.info.yml 0 → 100644 +8 −0 Original line number Diff line number Diff line name: Convivial Enricher Mailchimp type: module description: Provides integration of Mailchimp API with Enricher. package: Convivial core_version_requirement: ^9 dependencies: - drupal:convivial_enricher - drupal:mailchimp modules/convivial_enricher_mailchimp/convivial_enricher_mailchimp.module 0 → 100644 +21 −0 Original line number Diff line number Diff line <?php /** * @file * Implements the Convivial Enricher Mailchimp module. */ use Drupal\Core\Routing\RouteMatchInterface; /** * Implements hook_help(). */ function convivial_enricher_mailchimp_help($route_name, RouteMatchInterface $route_match) { switch ($route_name) { case 'help.page.convivial_enricher_mailchimp': $output = ''; $output .= '<h3>' . t('Convivial Enricher Mailchimp') . '</h3>'; $output .= '<p>' . t('Provides integration of Mailchimp API with Enricher') . '</p>'; return $output; } } modules/convivial_enricher_mailchimp/src/Plugin/EnricherDatasource/MailchimpEnricherDatasource.php 0 → 100644 +149 −0 Original line number Diff line number Diff line <?php namespace Drupal\convivial_enricher_mailchimp\Plugin\EnricherDatasource; use Drupal\convivial_enricher\EnricherDatasourceBase; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Plugin\ContainerFactoryPluginInterface; use Drupal\Core\Utility\Error; use Psr\Log\LoggerInterface; use Symfony\Component\DependencyInjection\ContainerInterface; use Drupal\mailchimp\ClientFactory; /** * Plugin implementation of the datasource. * * @EnricherDatasource( * id = "mailchimp", * label = @Translation("Mailchimp"), * description = @Translation("Mailchimp datasource for enricher."), * ) */ class MailchimpEnricherDatasource extends EnricherDatasourceBase implements ContainerFactoryPluginInterface { /** * Mailchimp API client. * * @var null|\Mailchimp\Mailchimp */ private $mailchimpApiClient; /** * An object representing a Mailchimp list member. * * @var object */ private $listMember; /** * {@inheritdoc} */ public function __construct(array $configuration, $plugin_id, $plugin_definition, LoggerInterface $logger, ClientFactory $mailchimp_client_factory) { parent::__construct($configuration, $plugin_id, $plugin_definition, $logger); $this->mailchimpApiClient = $mailchimp_client_factory->getByClassNameOrNull('MailchimpLists'); } /** * {@inheritdoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { return new static( $configuration, $plugin_id, $plugin_definition, $container->get('logger.factory')->get('convivial_enricher'), $container->get('mailchimp.client_factory'), ); } /** * {@inheritdoc} */ public function getSummary() { $summary = parent::getSummary(); return $summary; } /** * {@inheritdoc} */ public function defaultConfiguration() { return parent::defaultConfiguration() + [ 'mailchimp_list' => NULL, ]; } /** * {@inheritdoc} */ public function buildConfigurationForm(array $form, FormStateInterface $form_state) { $form['mailchimp_list'] = [ '#type' => 'textfield', '#title' => $this->t('Mailchimp list ID'), '#description' => $this->t('The Mailchimp list ID.'), '#default_value' => $this->configuration['mailchimp_list'], '#required' => TRUE, ]; return $form; } /** * {@inheritdoc} */ public function submitConfigurationForm(array &$form, FormStateInterface $form_state) { parent::submitConfigurationForm($form, $form_state); $this->configuration['mailchimp_list'] = $form_state->getValue('mailchimp_list'); } /** * {@inheritdoc} */ public function processIncomingPath(&$path, $endpoint_path) { return $path; } /** * {@inheritdoc} */ public function fetchAndProcessData($key) { $output = []; $return_cookies = []; try { $list_id = $this->configuration['mailchimp_list']; $this->listMember = $this->getListMemberInfoById($list_id, $key); } catch (\Exception $exception) { $variables = Error::decodeException($exception); $this->logger->warning('%type: @message in %function (line %line of %file).', $variables); } if (!empty((array) $this->listMember)) { $output += (array) $this->listMember; } // Create the cookies of all the output fields. foreach ($output as $cookie_name => $cookie_value) { $return_cookies[] = $this->createCookie($cookie_name, $cookie_value); } return $return_cookies; } /** * Gets information about a member of a Mailchimp list. * * @param string $list_id * The ID of the list. * @param string $uniqid * The member's unique ID (UNIQID). * * @return null|object * An object representing a Mailchimp list member or NULL if not found. */ protected function getListMemberInfoById($list_id, $uniqid) { if (isset($this->mailchimpApiClient)) { return $this->mailchimpApiClient->getMemberInfoById($list_id, $uniqid); } } } Loading
modules/convivial_enricher_mailchimp/README.txt 0 → 100644 +70 −0 Original line number Diff line number Diff line CONTENTS OF THIS FILE --------------------- * Introduction * Requirements * Recommended modules * Installation * Configuration * Troubleshooting * Maintainers INTRODUCTION ------------ The Enricher Mailchimp is a submodule of Enricher. Enricher Mailchimp provides an implementation of an EnricherDatasource plugin to allow Enricher to interface with Mailchimp's API. REQUIREMENTS ------------ This module requires the following modules: * [Mailchimp](https://www.drupal.org/project/mailchimp): INSTALLATION ------------ * Install as you would normally install a contributed Drupal module. Visit https://www.drupal.org/node/1897420 for further information. CONFIGURATION ------------- * Configure the user permissions in Administration » People » Permissions: - Administer enrichers Users with this permission will see the webservices > enrichers configuration list page. From here they can add, configure, delete, enable and disabled enrichers. Warning: Give to trusted roles only; this permission has security implications. Allows full administration access to create and edit enrichers. TROUBLESHOOTING --------------- * If you are not receiving data back for your user. - Check the recent log messages report for exception messages. MAINTAINERS ----------- Current maintainers: * Eleo Basili (eleonel) - https://www.drupal.org/u/eleonel * Naveen Valecha (naveenvalecha) - https://www.drupal.org/u/naveenvalecha This project has been sponsored by: * Morpht Pty Ltd We are a team of dedicated and enthusiastic designers, programmers and site builders who know how to get the most from Drupal. We work for a variety of clients in government, education, media and pharmaceutical sectors.
modules/convivial_enricher_mailchimp/config/schema/convivial_enricher_mailchimp.schema.yml 0 → 100644 +7 −0 Original line number Diff line number Diff line convivial_enricher.datasource.mailchimp: type: mapping label: 'Mailchimp' mapping: mailchimp_list: label: 'Mailchimp list ID' type: string
modules/convivial_enricher_mailchimp/convivial_enricher_mailchimp.info.yml 0 → 100644 +8 −0 Original line number Diff line number Diff line name: Convivial Enricher Mailchimp type: module description: Provides integration of Mailchimp API with Enricher. package: Convivial core_version_requirement: ^9 dependencies: - drupal:convivial_enricher - drupal:mailchimp
modules/convivial_enricher_mailchimp/convivial_enricher_mailchimp.module 0 → 100644 +21 −0 Original line number Diff line number Diff line <?php /** * @file * Implements the Convivial Enricher Mailchimp module. */ use Drupal\Core\Routing\RouteMatchInterface; /** * Implements hook_help(). */ function convivial_enricher_mailchimp_help($route_name, RouteMatchInterface $route_match) { switch ($route_name) { case 'help.page.convivial_enricher_mailchimp': $output = ''; $output .= '<h3>' . t('Convivial Enricher Mailchimp') . '</h3>'; $output .= '<p>' . t('Provides integration of Mailchimp API with Enricher') . '</p>'; return $output; } }
modules/convivial_enricher_mailchimp/src/Plugin/EnricherDatasource/MailchimpEnricherDatasource.php 0 → 100644 +149 −0 Original line number Diff line number Diff line <?php namespace Drupal\convivial_enricher_mailchimp\Plugin\EnricherDatasource; use Drupal\convivial_enricher\EnricherDatasourceBase; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Plugin\ContainerFactoryPluginInterface; use Drupal\Core\Utility\Error; use Psr\Log\LoggerInterface; use Symfony\Component\DependencyInjection\ContainerInterface; use Drupal\mailchimp\ClientFactory; /** * Plugin implementation of the datasource. * * @EnricherDatasource( * id = "mailchimp", * label = @Translation("Mailchimp"), * description = @Translation("Mailchimp datasource for enricher."), * ) */ class MailchimpEnricherDatasource extends EnricherDatasourceBase implements ContainerFactoryPluginInterface { /** * Mailchimp API client. * * @var null|\Mailchimp\Mailchimp */ private $mailchimpApiClient; /** * An object representing a Mailchimp list member. * * @var object */ private $listMember; /** * {@inheritdoc} */ public function __construct(array $configuration, $plugin_id, $plugin_definition, LoggerInterface $logger, ClientFactory $mailchimp_client_factory) { parent::__construct($configuration, $plugin_id, $plugin_definition, $logger); $this->mailchimpApiClient = $mailchimp_client_factory->getByClassNameOrNull('MailchimpLists'); } /** * {@inheritdoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { return new static( $configuration, $plugin_id, $plugin_definition, $container->get('logger.factory')->get('convivial_enricher'), $container->get('mailchimp.client_factory'), ); } /** * {@inheritdoc} */ public function getSummary() { $summary = parent::getSummary(); return $summary; } /** * {@inheritdoc} */ public function defaultConfiguration() { return parent::defaultConfiguration() + [ 'mailchimp_list' => NULL, ]; } /** * {@inheritdoc} */ public function buildConfigurationForm(array $form, FormStateInterface $form_state) { $form['mailchimp_list'] = [ '#type' => 'textfield', '#title' => $this->t('Mailchimp list ID'), '#description' => $this->t('The Mailchimp list ID.'), '#default_value' => $this->configuration['mailchimp_list'], '#required' => TRUE, ]; return $form; } /** * {@inheritdoc} */ public function submitConfigurationForm(array &$form, FormStateInterface $form_state) { parent::submitConfigurationForm($form, $form_state); $this->configuration['mailchimp_list'] = $form_state->getValue('mailchimp_list'); } /** * {@inheritdoc} */ public function processIncomingPath(&$path, $endpoint_path) { return $path; } /** * {@inheritdoc} */ public function fetchAndProcessData($key) { $output = []; $return_cookies = []; try { $list_id = $this->configuration['mailchimp_list']; $this->listMember = $this->getListMemberInfoById($list_id, $key); } catch (\Exception $exception) { $variables = Error::decodeException($exception); $this->logger->warning('%type: @message in %function (line %line of %file).', $variables); } if (!empty((array) $this->listMember)) { $output += (array) $this->listMember; } // Create the cookies of all the output fields. foreach ($output as $cookie_name => $cookie_value) { $return_cookies[] = $this->createCookie($cookie_name, $cookie_value); } return $return_cookies; } /** * Gets information about a member of a Mailchimp list. * * @param string $list_id * The ID of the list. * @param string $uniqid * The member's unique ID (UNIQID). * * @return null|object * An object representing a Mailchimp list member or NULL if not found. */ protected function getListMemberInfoById($list_id, $uniqid) { if (isset($this->mailchimpApiClient)) { return $this->mailchimpApiClient->getMemberInfoById($list_id, $uniqid); } } }