You are here

public function MediaHelper::getBundleFromInput in Varbase Media 8.7

Same name and namespace in other branches
  1. 8.5 modules/entity_browser_generic_embed/src/MediaHelper.php \Drupal\entity_browser_generic_embed\MediaHelper::getBundleFromInput()
  2. 8.6 modules/entity_browser_generic_embed/src/MediaHelper.php \Drupal\entity_browser_generic_embed\MediaHelper::getBundleFromInput()
  3. 9.0.x modules/entity_browser_generic_embed/src/MediaHelper.php \Drupal\entity_browser_generic_embed\MediaHelper::getBundleFromInput()

Returns the first media bundle that can accept an input value.

Parameters

mixed $value: The input value.

bool $check_access: (optional) Whether to filter the bundles by create access for the current user. Defaults to TRUE.

string[] $bundles: (optional) A set of media bundle IDs which might match the input. If omitted, all available bundles are checked.

Return value

\Drupal\media\MediaTypeInterface A media bundle that can accept the input value.

Throws

\Drupal\entity_browser_generic_embed\Exception\IndeterminateBundleException if No bundle can be matched to the input value.

File

modules/entity_browser_generic_embed/src/MediaHelper.php, line 90

Class

MediaHelper
Provides helper methods for dealing with media entities.

Namespace

Drupal\entity_browser_generic_embed

Code

public function getBundleFromInput($value, $check_access = TRUE, array $bundles = []) {

  // entity_browser_generic_embed Media overrides the media_bundle.
  // storage handler with a special.
  // one that adds an optional second parameter to loadMultiple().
  $media_types = $this->entityTypeManager
    ->getStorage('media_type')
    ->loadMultiple($bundles ?: NULL, $check_access);
  ksort($media_types);

  /** @var \Drupal\media\MediaTypeInterface $media_type */
  foreach ($media_types as $media_type) {
    $source = $media_type
      ->getSource();
    if ($source instanceof InputMatchInterface && $source
      ->appliesTo($value, $media_type)) {
      return $media_type;
    }
  }
  throw new IndeterminateBundleException($value);
}