diff --git a/src/Controller/ManageMediaController.php b/src/Controller/ManageMediaController.php index 776a6808..e0ef7a69 100644 --- a/src/Controller/ManageMediaController.php +++ b/src/Controller/ManageMediaController.php @@ -22,7 +22,9 @@ class ManageMediaController extends ManageMembersController { * Array of media types to add. */ public function addToNodePage(NodeInterface $node) { - return $this->generateTypeList( + $current_user = \Drupal::currentUser(); + $roles = $current_user->getRoles(); + $list = $this->generateTypeList( 'media', 'media_type', 'entity.media.add_form', @@ -30,6 +32,17 @@ class ManageMediaController extends ManageMembersController { $node, 'field_media_of' ); + if (!in_array('fedoraadmin', $roles)) { + $bundles = $list['#bundles']; + foreach ($bundles as $label => $bundle) { + $storage = $this->entityFieldManager->getFieldStorageDefinitions('media', $label); + $scheme = $storage['field_media_file']->getSetting('uri_scheme'); + if ($scheme == 'fedora') { + unset($list['#bundles'][$label]); + } + } + } + return $list; } /**