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 }
|