You are here

private static function LinkField::getUriAsDisplayableString in Conditional Fields 4.x

Same name and namespace in other branches
  1. 8 src/Plugin/conditional_fields/handler/LinkField.php \Drupal\conditional_fields\Plugin\conditional_fields\handler\LinkField::getUriAsDisplayableString()

Gets the URI without the 'internal:' or 'entity:' scheme.

The following two forms of URIs are transformed:

  • 'entity:' URIs: to entity autocomplete ("label (entity id)") strings;
  • 'internal:' URIs: the scheme is stripped.

This method is the inverse of ::getUserEnteredStringAsUri().

Parameters

string $uri: The URI to get the displayable string for.

Return value

string|array An available values for triggering event.

See also

LinkWidget::getUserEnteredStringAsUri()

1 call to LinkField::getUriAsDisplayableString()
LinkField::statesHandler in src/Plugin/conditional_fields/handler/LinkField.php
@todo Provide possibility to create states with pair URL and title. Only states for URL currently supported.

File

src/Plugin/conditional_fields/handler/LinkField.php, line 80

Class

LinkField
Provides states handler for links provided by the Link module.

Namespace

Drupal\conditional_fields\Plugin\conditional_fields\handler

Code

private static function getUriAsDisplayableString($uri) {
  $scheme = parse_url($uri, PHP_URL_SCHEME);

  // By default, the displayable string is the URI.
  $displayable_string = $uri;

  // A different displayable string may be chosen in case of the 'internal:'
  // or 'entity:' built-in schemes.
  if ($scheme === 'internal') {
    $uri_reference = explode(':', $uri, 2)[1];

    // @todo '<front>' is valid input for BC reasons, may be removed by
    //   https://www.drupal.org/node/2421941
    $path = parse_url($uri, PHP_URL_PATH);
    if ($path === '/') {
      $uri_reference = '<front>' . substr($uri_reference, 1);
    }
    $displayable_string = $uri_reference;
  }
  elseif ($scheme === 'entity') {
    list($entity_type, $entity_id) = explode('/', substr($uri, 7), 2);

    // Show the 'entity:' URI as the entity autocomplete would.
    $entity_type_manager = \Drupal::entityTypeManager();
    if ($entity_type_manager
      ->getDefinition($entity_type, FALSE) && ($entity = $entity_type_manager
      ->getStorage($entity_type)
      ->load($entity_id))) {
      $displayable_string = static::getEntityLabels($entity);
    }
  }
  return $displayable_string;
}