SubscribeBlock.php
Thu Dec 16 2021 14:51:00 GMT+0000 (UTC)
<?php namespace Drupal\bacademy_core\Plugin\Block; use Drupal\bacademy_core\Controller\SubscribeController; use Drupal\Core\Block\BlockBase; use Drupal\Core\Entity\EntityTypeManager; use Drupal\Core\Plugin\ContainerFactoryPluginInterface; use Drupal\Core\Session\AccountProxyInterface; use Drupal\Core\Url; use Symfony\Component\DependencyInjection\ContainerInterface; /** * Provides a 'Subscribe' block. * * @Block( * id = "subscribe_block", * admin_label= @Translation("Subscribe"), * category= @Translation("Subscribe"), * ) */ class SubscribeBlock extends BlockBase implements ContainerFactoryPluginInterface { /** * The current user. * * @var \Drupal\Core\Session\AccountProxyInterface */ protected $currentUser; /** * Entity type manager. * * @var EntityTypeManager */ protected $entityTypeManager; public function __construct(array $configuration, $plugin_id, $plugin_definition, AccountProxyInterface $current_user, EntityTypeManager $entityTypeManager) { parent::__construct($configuration, $plugin_id, $plugin_definition); $this->currentUser = $current_user; $this->entityTypeManager = $entityTypeManager; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition){ return new static ( $configuration, $plugin_id, $plugin_definition, $container->get('current_user'), $container->get('entity_type.manager') ); } /** * {@inheritDoc} */ public function build() { // Check if current user is subscribed. $user = $this->entityTypeManager ->getStorage('user') ->loadByProperties([ 'uid' => $this->currentUser->id(), ]); $user = reset($user); $subscribed = 0; if ($user->hasField('field_mailchimp_subscription')) { $subscribed = $user->get('field_mailchimp_subscription')[0]->get('subscribe')->getValue(); } if ($subscribed == "1") { return []; } else { return [ '#type' => 'inline_template', '#template' => "<div> <p>Opt in and don't miss out on the latest from the Academy.</p> <a href='{{ controller_link }}'>YES PLEASE</a> <a href='#'>NO THANKS</a> </div>", '#context' => [ 'controller_link' => Url::fromRoute('bacademy_core.subscription', ['id' => $this->currentUser->id()])->toString(), ], ]; } } }
Comments