X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fmedia%2Fsrc%2FMediaPermissions.php;fp=web%2Fcore%2Fmodules%2Fmedia%2Fsrc%2FMediaPermissions.php;h=034d84ae0bde20b69ce4fd9ce890795fbbb3b778;hp=0000000000000000000000000000000000000000;hb=af6d1fb995500ae68849458ee10d66abbdcfb252;hpb=680c79a86e3ed402f263faeac92e89fb6d9edcc0 diff --git a/web/core/modules/media/src/MediaPermissions.php b/web/core/modules/media/src/MediaPermissions.php new file mode 100644 index 000000000..034d84ae0 --- /dev/null +++ b/web/core/modules/media/src/MediaPermissions.php @@ -0,0 +1,92 @@ +entityTypeManager = $entity_type_manager; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static($container->get('entity_type.manager')); + } + + /** + * Returns an array of media type permissions. + * + * @return array + * The media type permissions. + * + * @see \Drupal\user\PermissionHandlerInterface::getPermissions() + */ + public function mediaTypePermissions() { + $perms = []; + // Generate media permissions for all media types. + $media_types = $this->entityTypeManager + ->getStorage('media_type')->loadMultiple(); + foreach ($media_types as $type) { + $perms += $this->buildPermissions($type); + } + return $perms; + } + + /** + * Returns a list of media permissions for a given media type. + * + * @param \Drupal\media\MediaTypeInterface $type + * The media type. + * + * @return array + * An associative array of permission names and descriptions. + */ + protected function buildPermissions(MediaTypeInterface $type) { + $type_id = $type->id(); + $type_params = ['%type_name' => $type->label()]; + + return [ + "create $type_id media" => [ + 'title' => $this->t('%type_name: Create new media', $type_params), + ], + "edit own $type_id media" => [ + 'title' => $this->t('%type_name: Edit own media', $type_params), + ], + "edit any $type_id media" => [ + 'title' => $this->t('%type_name: Edit any media', $type_params), + ], + "delete own $type_id media" => [ + 'title' => $this->t('%type_name: Delete own media', $type_params), + ], + "delete any $type_id media" => [ + 'title' => $this->t('%type_name: Delete any media', $type_params), + ], + ]; + } + +}