Same name and namespace in other branches
  1. 8.x-1.x src/GalleryIdHelper.php \Drupal\colorbox\GalleryIdHelper::generateId() 1 comment

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;
}