paid_ads-8.x-1.x-dev/src/Permissions.php
src/Permissions.php
<?php namespace Drupal\paid_ads; use Drupal\Core\DependencyInjection\ContainerInjectionInterface; use Drupal\Core\Entity\EntityTypeManager; use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\Core\StringTranslation\TranslationInterface; use Symfony\Component\DependencyInjection\ContainerInterface; /** * Class Permissions. */ class Permissions implements ContainerInjectionInterface { use StringTranslationTrait; /** * EntityTypeManager injection. * * @var \Drupal\Core\Entity\EntityTypeManager */ private $entityTypeManager; /** * Gets dynamic permissions for node types. * * @return array * Array with permissions in as yml format. * * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException */ public function getPermissions() { $permissions = []; $node_types = $this->entityTypeManager->getStorage('node_type') ->loadMultiple(); foreach ($node_types as $node_type => $definition) { $permissions['paid_ads.field.edit_paid.' . $node_type] = [ 'title' => $this->t('Manage paid field of %node_type.', ['%node_type' => $definition->get('name')]), 'description' => $this->t('Edit paid field on @node_type node.', ['@node_type' => $node_type]), ]; } return $permissions; } /** * Permissions constructor. * * @param \Drupal\Core\Entity\EntityTypeManager $entityTypeManager * Works with entity types. * @param \Drupal\Core\StringTranslation\TranslationInterface $string_translation * Provides translatable strings. Uses in StringTranslationTrait. */ public function __construct(EntityTypeManager $entityTypeManager, TranslationInterface $string_translation) { $this->entityTypeManager = $entityTypeManager; $this->stringTranslation = $string_translation; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container) { return new static($container->get('entity_type.manager'), $container->get('string_translation')); } }