View source
<?php
namespace Drupal\campaignmonitor_user\Controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Datetime\DateFormatterInterface;
use Drupal\user\UserDataInterface;
use Drupal\user\UserStorageInterface;
use Psr\Log\LoggerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class CampaignMonitorUserController extends ControllerBase {
protected $dateFormatter;
protected $userStorage;
protected $userData;
protected $logger;
public function __construct(DateFormatterInterface $date_formatter, UserStorageInterface $user_storage, UserDataInterface $user_data, LoggerInterface $logger) {
$this->dateFormatter = $date_formatter;
$this->userStorage = $user_storage;
$this->userData = $user_data;
$this->logger = $logger;
}
public static function create(ContainerInterface $container) {
return new static($container
->get('date.formatter'), $container
->get('entity.manager')
->getStorage('user'), $container
->get('user.data'), $container
->get('logger.factory')
->get('user'));
}
public function subscriptionPage() {
$current_user = \Drupal::currentUser();
$config = \Drupal::config('campaignmonitor_user.settings');
$email = $current_user
->getEmail();
$subscriptions = campaignmonitor_user_get_user_subscriptions($email, 'names');
$subscriptions_empty_message = '';
$content['subscription_heading'] = [
'#type' => 'container',
'#attributes' => [
'class' => [
'subscription-heading',
],
],
];
$content['subscription_heading']['heading'] = [
'#markup' => $config
->get('subscription_heading'),
];
$content['subscription_text'] = [
'#type' => 'container',
'#attributes' => [
'class' => [
'subscription-text',
],
],
];
$content['subscription_text']['text'] = [
'#markup' => $config
->get('subscription_text'),
];
$content['subscriptions_table'] = [
'#type' => 'table',
'#header' => [
t('Name'),
],
'#empty' => $subscriptions_empty_message,
];
foreach ($subscriptions as $list_id => $name) {
$content['subscriptions_table'][$list_id]['name'] = [
'#markup' => $name,
];
}
return [
'#theme' => 'campaignmonitor_user_profile',
'#content' => $content,
'#cache' => [
'contexts' => [
'user',
],
],
];
}
}