3 namespace Drupal\permissions_by_term\Service;
5 use Drupal\Core\Template\TwigEnvironment;
6 use Drupal\user\Entity\Role;
7 use Drupal\user\Entity\User;
8 use Drupal\Core\Database\Connection;
14 * @package Drupal\permissions_by_term\Service
16 class NodeEntityBundleInfo {
21 private $accessStorage;
29 * @var TwigEnvironment
41 * @param AccessStorage $accessStorage
43 * @param TwigEnvironment $twig
44 * @param Connection $database
46 public function __construct(
47 AccessStorage $accessStorage,
49 TwigEnvironment $twig,
52 $this->accessStorage = $accessStorage;
55 $this->database = $database;
59 * @param string $viewFilePath
60 * @param int|null $nid
63 public function renderNodeDetails($viewFilePath, $nid = null) {
68 $tids = $this->term->getTidsByNid($nid);
70 $uids = $this->accessStorage->getUserTermPermissionsByTids($tids);
71 $rids = $this->accessStorage->getRoleTermPermissionsByTids($tids);
76 $roles = Role::loadMultiple($rids);
80 $users = User::loadMultiple($uids);
83 $template = $this->twig->loadTemplate($viewFilePath);
85 return $template->render(['roles' => $roles, 'users' => $users]);
92 public function getPermissions()
96 $permittedUsers = $this->database->select('permissions_by_term_user', 'pu')
97 ->fields('pu', ['uid', 'tid'])
101 $permittedRoles = $this->database->select('permissions_by_term_role', 'pr')
102 ->fields('pr', ['rid', 'tid'])
106 if (!empty($permittedRoles)) {
107 $returnArray['roleLabels'] = [];
108 foreach ($permittedRoles as $permittedRole) {
109 $role = Role::load($permittedRole->rid);
111 $returnArray['roleLabels'][$permittedRole->tid][] = $role->label();
116 if (!empty($permittedUsers)) {
117 $returnArray['userDisplayNames'] = [];
118 foreach ($permittedUsers as $permittedUser) {
119 $user = User::load($permittedUser->uid);
121 $returnArray['userDisplayNames'][$permittedUser->tid][] = $user->getDisplayName();