Updated all the contrib modules to their latest versions.
[yaffs-website] / web / modules / contrib / permissions_by_term / src / Controller / NodeEntityBundleController.php
1 <?php
2
3 namespace Drupal\permissions_by_term\Controller;
4
5 use Drupal\Core\Controller\ControllerBase;
6 use Drupal\Core\Entity\EntityFieldManager;
7 use Drupal\permissions_by_term\Service\AccessStorage;
8 use Drupal\permissions_by_term\Service\NodeEntityBundleInfo;
9 use Symfony\Component\DependencyInjection\ContainerInterface;
10 use Symfony\Component\HttpFoundation\JsonResponse;
11
12 /**
13  * Class NodeEntityBundleController
14  *
15  * @package Drupal\permissions_by_term\Controller
16  */
17 class NodeEntityBundleController extends ControllerBase {
18
19   /**
20    * @var EntityFieldManager
21    */
22   private $entityFieldManager;
23
24   /**
25    * @var NodeEntityBundleInfo
26    */
27   private $nodeEntityBundleInfo;
28
29   public function __construct(EntityFieldManager $entityFieldManager, NodeEntityBundleInfo $nodeEntityBundleInfo) {
30     $this->entityFieldManager = $entityFieldManager;
31     $this->nodeEntityBundleInfo = $nodeEntityBundleInfo;
32   }
33
34   /**
35    * {@inheritdoc}
36    */
37   public static function create(ContainerInterface $container) {
38     return new static(
39       $container->get('entity_field.manager'),
40       $container->get('permissions_by_term.node_entity_bundle_info')
41     );
42   }
43
44   /**
45    * @param string $nodeType
46    *
47    * @return JsonResponse
48    */
49   public function getFormInfoByContentType($nodeType) {
50     $fields = $this->entityFieldManager->getFieldDefinitions('node', $nodeType);
51
52     $fieldNames = [];
53     foreach ($fields as $field) {
54       $fieldDefinitionSettings = $field->getSettings();
55       if (!empty($fieldDefinitionSettings['target_type']) && $fieldDefinitionSettings['target_type'] == 'taxonomy_term') {
56         $fieldNames[] = $field->getFieldStorageDefinition()->getName();
57       }
58     }
59
60     return new JsonResponse(
61       [
62         'taxonomyRelationFieldNames' => $fieldNames,
63         'permissions'                => $this->nodeEntityBundleInfo->getPermissions()
64       ]
65     );
66   }
67
68   /**
69    * @return JsonResponse
70    */
71   public function getFormInfoByUrl() {
72
73     $contentType = $this->getContentType(\Drupal::request()->query->get('url'));
74
75     $fields = $this->entityFieldManager->getFieldDefinitions('node', $contentType);
76
77     $fieldNames = [];
78     foreach ($fields as $field) {
79       $fieldDefinitionSettings = $field->getSettings();
80       if (!empty($fieldDefinitionSettings['target_type']) && $fieldDefinitionSettings['target_type'] == 'taxonomy_term') {
81         $fieldNames[] = $field->getFieldStorageDefinition()->getName();
82       }
83     }
84
85     return new JsonResponse(
86       [
87         'taxonomyRelationFieldNames' => $fieldNames,
88         'permissions'                => $this->nodeEntityBundleInfo->getPermissions()
89       ]
90     );
91   }
92
93   private function getContentType($nodeEditPath) {
94     preg_match_all('!\d+!', $nodeEditPath, $matches);
95     $nid = $matches[0][0];
96
97     $node = \Drupal::entityTypeManager()->getStorage('node')->load($nid);
98
99     return $node->getType();
100   }
101
102 }