You are here

public function GalleryIdHelper::generateId in Colorbox 8

Generate ID.

Parameters

\Drupal\Core\Entity\ContentEntityInterface $entity: The Entity.

\Drupal\Core\Field\FieldItemInterface $item: The Item.

array $settings: The Settings.

Return value

string Return string.

File

src/GalleryIdHelper.php, line 65

Class

GalleryIdHelper
Implementation of GalleryIdHelper.

Namespace

Drupal\colorbox

Code

public function generateId(ContentEntityInterface $entity, FieldItemInterface $item, array $settings) {
  $entity_bundle = $entity
    ->bundle();
  $entity_type = $entity
    ->getEntityTypeId();
  $config = $this->configFactory
    ->get('colorbox.settings');

  // Build the gallery id.
  $id = $entity
    ->id();
  $entity_id = !empty($id) ? $entity_bundle . '-' . $id : 'entity-id';
  $field_name = $item
    ->getParent()
    ->getName();
  switch ($settings['colorbox_gallery']) {
    case 'post':
      $gallery_id = 'gallery-' . $entity_id;
      break;
    case 'page':
      $gallery_id = 'gallery-all';
      break;
    case 'field_post':
      $gallery_id = 'gallery-' . $entity_id . '-' . $field_name;
      break;
    case 'field_page':
      $gallery_id = 'gallery-' . $field_name;
      break;
    case 'custom':
      $gallery_id = $this->token
        ->replace($settings['colorbox_gallery_custom'], [
        $entity_type => $entity,
        'file' => $item,
      ], [
        'clear' => TRUE,
      ]);
      break;
    default:
      $gallery_id = '';
  }

  // If gallery id is not empty add unique per-request token to avoid.
  // images being added manually to galleries.
  if (!empty($gallery_id) && $config
    ->get('advanced.unique_token')) {

    // Check if gallery token has already been set, we need to reuse.
    // the token for the whole request.
    if (is_null($this->galleryToken)) {

      // We use a short token since randomness is not critical.
      $this->galleryToken = Crypt::randomBytesBase64(8);
    }
    $gallery_id = $gallery_id . '-' . $this->galleryToken;
  }
  return $gallery_id;
}