You are here

public function ContentTranslationPermissions::contentPermissions in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/content_translation/src/ContentTranslationPermissions.php \Drupal\content_translation\ContentTranslationPermissions::contentPermissions()
  2. 10 core/modules/content_translation/src/ContentTranslationPermissions.php \Drupal\content_translation\ContentTranslationPermissions::contentPermissions()

Returns an array of content translation permissions.

Return value

array

1 string reference to 'ContentTranslationPermissions::contentPermissions'
content_translation.permissions.yml in core/modules/content_translation/content_translation.permissions.yml
core/modules/content_translation/content_translation.permissions.yml

File

core/modules/content_translation/src/ContentTranslationPermissions.php, line 72

Class

ContentTranslationPermissions
Provides dynamic permissions for the content_translation module.

Namespace

Drupal\content_translation

Code

public function contentPermissions() {
  $permissions = [];

  // Create a translate permission for each enabled entity type and (optionally)
  // bundle.
  foreach ($this->entityTypeManager
    ->getDefinitions() as $entity_type_id => $entity_type) {
    if ($permission_granularity = $entity_type
      ->getPermissionGranularity()) {
      switch ($permission_granularity) {
        case 'bundle':
          foreach ($this->entityTypeBundleInfo
            ->getBundleInfo($entity_type_id) as $bundle => $bundle_info) {
            if ($this->contentTranslationManager
              ->isEnabled($entity_type_id, $bundle)) {
              $permissions["translate {$bundle} {$entity_type_id}"] = $this
                ->buildBundlePermission($entity_type, $bundle, $bundle_info);
            }
          }
          break;
        case 'entity_type':
          if ($this->contentTranslationManager
            ->isEnabled($entity_type_id)) {
            $permissions["translate {$entity_type_id}"] = [
              'title' => $this
                ->t('Translate @entity_label', [
                '@entity_label' => $entity_type
                  ->getSingularLabel(),
              ]),
              'dependencies' => [
                'module' => [
                  $entity_type
                    ->getProvider(),
                ],
              ],
            ];
          }
          break;
      }
    }
  }
  return $permissions;
}