Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 35 |
| ContentTranslationPermissions | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
132 | |
0.00% |
0 / 35 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
|||
| contentPermissions | |
0.00% |
0 / 1 |
90 | |
0.00% |
0 / 27 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\content_translation\ContentTranslationPermissions. | |
| */ | |
| 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; | |
| } | |
| } |