Security update for Core, with self-updated composer
[yaffs-website] / web / modules / contrib / permissions_by_term / src / Service / NodeEntityBundleInfo.php
1 <?php
2
3 namespace Drupal\permissions_by_term\Service;
4
5 use Drupal\Core\Template\TwigEnvironment;
6 use Drupal\user\Entity\Role;
7 use Drupal\user\Entity\User;
8 use Drupal\Core\Database\Connection;
9 use PDO;
10
11 /**
12  * Class Info
13  *
14  * @package Drupal\permissions_by_term\Service
15  */
16 class NodeEntityBundleInfo {
17
18   /**
19    * @var AccessStorage
20    */
21   private $accessStorage;
22
23   /**
24    * @var Term
25    */
26   private $term;
27
28   /**
29    * @var TwigEnvironment
30    */
31   private $twig;
32
33   /**
34    * @var Connection
35    */
36   private $database;
37
38   /**
39    * Info constructor.
40    *
41    * @param AccessStorage   $accessStorage
42    * @param Term            $term
43    * @param TwigEnvironment $twig
44    * @param Connection      $database
45    */
46   public function __construct(
47     AccessStorage $accessStorage,
48     Term $term,
49     TwigEnvironment $twig,
50     Connection $database
51   ) {
52     $this->accessStorage = $accessStorage;
53     $this->term = $term;
54     $this->twig = $twig;
55     $this->database = $database;
56   }
57
58   /**
59    * @param string   $viewFilePath
60    * @param int|null $nid
61    * @return string
62    */
63   public function renderNodeDetails($viewFilePath, $nid = null) {
64     $roles = null;
65     $users = null;
66
67     if (!empty($nid)) {
68       $tids = $this->term->getTidsByNid($nid);
69       if (!empty($tids)) {
70         $uids = $this->accessStorage->getUserTermPermissionsByTids($tids);
71         $rids = $this->accessStorage->getRoleTermPermissionsByTids($tids);
72       }
73     }
74
75     if (!empty($rids)) {
76       $roles = Role::loadMultiple($rids);
77     }
78
79     if (!empty($uids)) {
80       $users = User::loadMultiple($uids);
81     }
82
83     $template = $this->twig->loadTemplate($viewFilePath);
84
85     return $template->render(['roles' => $roles, 'users' => $users]);
86
87   }
88
89   /**
90    * @return array
91    */
92   public function getPermissions()
93   {
94     $returnArray = null;
95
96     $permittedUsers = $this->database->select('permissions_by_term_user', 'pu')
97       ->fields('pu', ['uid', 'tid'])
98       ->execute()
99       ->fetchAll();
100
101     $permittedRoles = $this->database->select('permissions_by_term_role', 'pr')
102       ->fields('pr', ['rid', 'tid'])
103       ->execute()
104       ->fetchAll();
105
106     if (!empty($permittedRoles)) {
107       $returnArray['roleLabels'] = [];
108       foreach ($permittedRoles as $permittedRole) {
109         $role = Role::load($permittedRole->rid);
110         if (!empty($role)) {
111           $returnArray['roleLabels'][$permittedRole->tid][] = $role->label();
112         }
113       }
114     }
115
116     if (!empty($permittedUsers)) {
117       $returnArray['userDisplayNames'] = [];
118       foreach ($permittedUsers as $permittedUser) {
119         $user = User::load($permittedUser->uid);
120         if (!empty($user)) {
121           $returnArray['userDisplayNames'][$permittedUser->tid][] = $user->getDisplayName();
122         }
123       }
124     }
125
126     return $returnArray;
127   }
128
129 }