annotate core/modules/taxonomy/src/TaxonomyPermissions.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 1fec387a4317
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\taxonomy;
Chris@0 4
Chris@0 5 use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
Chris@0 6 use Drupal\Core\Entity\EntityManagerInterface;
Chris@0 7 use Drupal\Core\StringTranslation\StringTranslationTrait;
Chris@14 8 use Drupal\taxonomy\Entity\Vocabulary;
Chris@0 9 use Symfony\Component\DependencyInjection\ContainerInterface;
Chris@0 10
Chris@0 11 /**
Chris@0 12 * Provides dynamic permissions of the taxonomy module.
Chris@0 13 *
Chris@0 14 * @see taxonomy.permissions.yml
Chris@0 15 */
Chris@0 16 class TaxonomyPermissions implements ContainerInjectionInterface {
Chris@0 17
Chris@0 18 use StringTranslationTrait;
Chris@0 19
Chris@0 20 /**
Chris@0 21 * The entity manager.
Chris@0 22 *
Chris@0 23 * @var \Drupal\Core\Entity\EntityManagerInterface
Chris@0 24 */
Chris@0 25 protected $entityManager;
Chris@0 26
Chris@0 27 /**
Chris@0 28 * Constructs a TaxonomyPermissions instance.
Chris@0 29 *
Chris@0 30 * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
Chris@0 31 * The entity manager.
Chris@0 32 */
Chris@0 33 public function __construct(EntityManagerInterface $entity_manager) {
Chris@0 34 $this->entityManager = $entity_manager;
Chris@0 35 }
Chris@0 36
Chris@0 37 /**
Chris@0 38 * {@inheritdoc}
Chris@0 39 */
Chris@0 40 public static function create(ContainerInterface $container) {
Chris@0 41 return new static($container->get('entity.manager'));
Chris@0 42 }
Chris@0 43
Chris@0 44 /**
Chris@0 45 * Get taxonomy permissions.
Chris@0 46 *
Chris@0 47 * @return array
Chris@0 48 * Permissions array.
Chris@0 49 */
Chris@0 50 public function permissions() {
Chris@0 51 $permissions = [];
Chris@14 52 foreach (Vocabulary::loadMultiple() as $vocabulary) {
Chris@14 53 $permissions += $this->buildPermissions($vocabulary);
Chris@0 54 }
Chris@0 55 return $permissions;
Chris@0 56 }
Chris@0 57
Chris@14 58 /**
Chris@14 59 * Builds a standard list of taxonomy term permissions for a given vocabulary.
Chris@14 60 *
Chris@14 61 * @param \Drupal\taxonomy\VocabularyInterface $vocabulary
Chris@14 62 * The vocabulary.
Chris@14 63 *
Chris@14 64 * @return array
Chris@14 65 * An array of permission names and descriptions.
Chris@14 66 */
Chris@14 67 protected function buildPermissions(VocabularyInterface $vocabulary) {
Chris@14 68 $id = $vocabulary->id();
Chris@14 69 $args = ['%vocabulary' => $vocabulary->label()];
Chris@14 70
Chris@14 71 return [
Chris@14 72 "create terms in $id" => ['title' => $this->t('%vocabulary: Create terms', $args)],
Chris@14 73 "delete terms in $id" => ['title' => $this->t('%vocabulary: Delete terms', $args)],
Chris@14 74 "edit terms in $id" => ['title' => $this->t('%vocabulary: Edit terms', $args)],
Chris@14 75 ];
Chris@14 76 }
Chris@14 77
Chris@0 78 }