MailingListController.php in Mailgun 8        
                          
                  
                        
  
  
  
  
  
File
  modules/mailgun_mailing_lists/src/Controller/MailingListController.php
  
    View source  
  <?php
namespace Drupal\mailgun_mailing_lists\Controller;
use Drupal\Core\Controller\ControllerBase;
use Mailgun\Mailgun;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Psr\Log\LoggerInterface;
use Mailgun\Exception\HttpClientException;
class MailingListController extends ControllerBase {
  
  protected $mailgunClient;
  
  protected $logger;
  
  public static function create(ContainerInterface $container) {
    return new static($container
      ->get('mailgun.mailgun_client'), $container
      ->get('logger.factory')
      ->get('mailgun'));
  }
  
  public function __construct(Mailgun $mailgun_client, LoggerInterface $logger) {
    $this->mailgunClient = $mailgun_client;
    $this->logger = $logger;
  }
  
  public function members($list_address) {
    try {
      $rows = [];
      $members = $this->mailgunClient
        ->mailingList()
        ->member()
        ->index($list_address)
        ->getItems();
      if (!empty($members)) {
        foreach ($members as $member) {
          $rows[] = [
            'address' => $member
              ->getAddress(),
            'subscribed' => $member
              ->isSubscribed() ? $this
              ->t('Yes') : $this
              ->t('No'),
          ];
        }
        return [
          '#theme' => 'table',
          '#rows' => $rows,
          '#header' => [
            $this
              ->t('Address'),
            $this
              ->t('Subscribed'),
          ],
        ];
      }
      else {
        return [
          '#markup' => $this
            ->t('No members yet.'),
        ];
      }
    } catch (HttpClientException $e) {
      $message = $this
        ->t('Could not retrieve the members list: @message.', [
        '@message' => $e
          ->getMessage(),
      ]);
      $this->logger
        ->error($message);
      return [
        '#markup' => $message,
      ];
    }
  }
}