Mercurial > hg > isophonics-drupal-site
view core/modules/content_translation/src/ContentTranslationPermissions.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | af1871eacc83 |
line wrap: on
line source
<?php namespace Drupal\content_translation; use Drupal\Core\DependencyInjection\ContainerInjectionInterface; use Drupal\Core\Entity\EntityManagerInterface; use Drupal\Core\StringTranslation\StringTranslationTrait; use Symfony\Component\DependencyInjection\ContainerInterface; /** * Provides dynamic permissions for the content_translation module. */ class ContentTranslationPermissions implements ContainerInjectionInterface { use StringTranslationTrait; /** * The entity manager. * * @var \Drupal\Core\Entity\EntityManagerInterface */ protected $entityManager; /** * The content translation manager. * * @var \Drupal\content_translation\ContentTranslationManagerInterface */ protected $contentTranslationManager; /** * Constructs a ContentTranslationPermissions instance. * * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager * The entity manager. * @param \Drupal\content_translation\ContentTranslationManagerInterface $content_translation_manager * The content translation manager. */ public function __construct(EntityManagerInterface $entity_manager, ContentTranslationManagerInterface $content_translation_manager) { $this->entityManager = $entity_manager; $this->contentTranslationManager = $content_translation_manager; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container) { return new static( $container->get('entity.manager'), $container->get('content_translation.manager') ); } /** * Returns an array of content translation permissions. * * @return array */ public function contentPermissions() { $permission = []; // Create a translate permission for each enabled entity type and (optionally) // bundle. foreach ($this->entityManager->getDefinitions() as $entity_type_id => $entity_type) { if ($permission_granularity = $entity_type->getPermissionGranularity()) { $t_args = ['@entity_label' => $entity_type->getLowercaseLabel()]; switch ($permission_granularity) { case 'bundle': foreach ($this->entityManager->getBundleInfo($entity_type_id) as $bundle => $bundle_info) { if ($this->contentTranslationManager->isEnabled($entity_type_id, $bundle)) { $t_args['%bundle_label'] = isset($bundle_info['label']) ? $bundle_info['label'] : $bundle; $permission["translate $bundle $entity_type_id"] = [ 'title' => $this->t('Translate %bundle_label @entity_label', $t_args), ]; } } break; case 'entity_type': if ($this->contentTranslationManager->isEnabled($entity_type_id)) { $permission["translate $entity_type_id"] = [ 'title' => $this->t('Translate @entity_label', $t_args), ]; } break; } } } return $permission; } }