SignupListBuilder.php in SendinBlue 8.2
File
src/Entity/Controller/SignupListBuilder.php
View source
<?php
namespace Drupal\sendinblue\Entity\Controller;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityListBuilder;
use Drupal\Core\Entity\EntityStorageInterface;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Link;
use Drupal\Core\Render\Markup;
use Drupal\Core\Url;
use Drupal\sendinblue\SendinblueManager;
use Symfony\Component\DependencyInjection\ContainerInterface;
class SignupListBuilder extends EntityListBuilder {
private $sendinblueManager;
public function __construct(EntityTypeInterface $entity_type, EntityStorageInterface $storage, SendinblueManager $sendinblueManager) {
parent::__construct($entity_type, $storage);
$this->sendinblueManager = $sendinblueManager;
}
public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) {
return new static($entity_type, $container
->get('entity_type.manager')
->getStorage($entity_type
->id()), $container
->get('sendinblue.manager'));
}
public function render() {
$build['table'] = parent::render();
return $build;
}
public function buildHeader() {
$header['name'] = $this
->t('Name');
$header['mode'] = $this
->t('Display Mode(s)');
$header['mcLists'] = $this
->t('SendinBlue Lists');
$header['access'] = $this
->t('Page Access');
return $header + parent::buildHeader();
}
public function buildRow(EntityInterface $entity) {
$signup = $entity;
$settings = $signup->settings
->first()
->getValue();
$modes = NULL;
$block_only = FALSE;
switch ($signup->mode->value) {
case SendinblueManager::SENDINBLUE_SIGNUP_BLOCK:
$modes = Link::fromTextAndUrl($this
->t('Block'), Url::fromUri('internal:/admin/structure/block'))
->toString();
$block_only = TRUE;
break;
case SendinblueManager::SENDINBLUE_SIGNUP_PAGE:
$modes = Link::fromTextAndUrl($this
->t('Page'), Url::fromUri('internal:/' . $settings['path']))
->toString();
break;
case SendinblueManager::SENDINBLUE_SIGNUP_BOTH:
$modes = Link::fromTextAndUrl($this
->t('Block'), Url::fromUri('internal:/admin/structure/block'))
->toString();
$modes .= ' and ';
$modes .= Link::fromTextAndUrl($this
->t('Page'), Url::fromUri('internal:/' . $settings['path']))
->toString();
break;
}
$list_name = $this->sendinblueManager
->getListNameById($settings['subscription']['settings']['list']);
$list_labels = Link::fromTextAndUrl($list_name, Url::fromUri(SendinblueManager::SIB_URL . '/users/list/id/?utm_source=drupal_plugin&utm_medium=plugin&utm_campaign=module_link' . $settings['subscription']['settings']['list']));
if ($block_only) {
$access = $this
->t('N/A - this form only exists as a block');
}
else {
$all_roles_allowed = user_roles(FALSE, 'sendinblue_signup_all_forms' . $signup->name->value);
$page_roles_allowed = user_roles(FALSE, 'sendinblue_signup_form_' . $signup->name->value);
$roles_allowed = array_merge($all_roles_allowed, $page_roles_allowed);
foreach ($roles_allowed as $id => $role_object) {
$roles_allowed[$id] = $role_object
->label();
}
$access = implode(', ', $roles_allowed);
}
$row['name'] = $signup->title->value;
$row['mode'] = Markup::create($modes);
$row['mcLists'] = $list_labels;
$row['access'] = $access;
return $row + parent::buildRow($entity);
}
}