Chris@14: entityTypeManager = $entity_type_manager; Chris@14: } Chris@14: Chris@14: /** Chris@14: * {@inheritdoc} Chris@14: */ Chris@14: public static function create(ContainerInterface $container) { Chris@14: return new static($container->get('entity_type.manager')); Chris@14: } Chris@14: Chris@14: /** Chris@14: * Returns an array of media type permissions. Chris@14: * Chris@14: * @return array Chris@14: * The media type permissions. Chris@14: * Chris@14: * @see \Drupal\user\PermissionHandlerInterface::getPermissions() Chris@14: */ Chris@14: public function mediaTypePermissions() { Chris@14: $perms = []; Chris@14: // Generate media permissions for all media types. Chris@14: $media_types = $this->entityTypeManager Chris@14: ->getStorage('media_type')->loadMultiple(); Chris@14: foreach ($media_types as $type) { Chris@14: $perms += $this->buildPermissions($type); Chris@14: } Chris@14: return $perms; Chris@14: } Chris@14: Chris@14: /** Chris@14: * Returns a list of media permissions for a given media type. Chris@14: * Chris@14: * @param \Drupal\media\MediaTypeInterface $type Chris@14: * The media type. Chris@14: * Chris@14: * @return array Chris@14: * An associative array of permission names and descriptions. Chris@14: */ Chris@14: protected function buildPermissions(MediaTypeInterface $type) { Chris@14: $type_id = $type->id(); Chris@14: $type_params = ['%type_name' => $type->label()]; Chris@14: Chris@14: return [ Chris@14: "create $type_id media" => [ Chris@14: 'title' => $this->t('%type_name: Create new media', $type_params), Chris@14: ], Chris@14: "edit own $type_id media" => [ Chris@14: 'title' => $this->t('%type_name: Edit own media', $type_params), Chris@14: ], Chris@14: "edit any $type_id media" => [ Chris@14: 'title' => $this->t('%type_name: Edit any media', $type_params), Chris@14: ], Chris@14: "delete own $type_id media" => [ Chris@14: 'title' => $this->t('%type_name: Delete own media', $type_params), Chris@14: ], Chris@14: "delete any $type_id media" => [ Chris@14: 'title' => $this->t('%type_name: Delete any media', $type_params), Chris@14: ], Chris@14: ]; Chris@14: } Chris@14: Chris@14: }