You are here

public function SignupListBuilder::buildRow in SendinBlue 8

Same name and namespace in other branches
  1. 8.2 src/Entity/Controller/SignupListBuilder.php \Drupal\sendinblue\Entity\Controller\SignupListBuilder::buildRow()

Builds a row for an entity in the entity listing.

Parameters

\Drupal\Core\Entity\EntityInterface $entity: The entity for this row of the list.

Return value

array A render array structure of fields for this entity.

Overrides EntityListBuilder::buildRow

See also

\Drupal\Core\Entity\EntityListBuilder::render()

File

src/Entity/Controller/SignupListBuilder.php, line 89

Class

SignupListBuilder
Provides a list controller for content_entity_example_contact entity.

Namespace

Drupal\sendinblue\Entity\Controller

Code

public function buildRow(EntityInterface $entity) {

  /* @var $entity \Drupal\sendinblue\Entity\Signup */
  $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);

    /** @var \Drupal\user\Entity\Role $role_object */
    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);
}