3 namespace Drupal\permissions_by_term\Service;
5 use Drupal\Core\Database\Connection;
6 use Drupal\Core\Template\TwigEnvironment;
7 use Drupal\user\Entity\Role;
8 use Drupal\user\Entity\User;
13 * @package Drupal\permissions_by_term\Service
15 class NodeEntityBundleInfo {
20 private $accessStorage;
28 * @var TwigEnvironment
40 * @param AccessStorage $accessStorage
42 * @param TwigEnvironment $twig
43 * @param Connection $database
45 public function __construct(
46 AccessStorage $accessStorage,
48 TwigEnvironment $twig,
51 $this->accessStorage = $accessStorage;
54 $this->database = $database;
58 * @param string $viewFilePath
59 * @param int|null $nid
62 public function renderNodeDetails($viewFilePath, $nid = null) {
67 $tids = $this->term->getTidsByNid($nid);
69 $uids = $this->accessStorage->getUserTermPermissionsByTids($tids);
70 $rids = $this->accessStorage->getRoleTermPermissionsByTids($tids);
75 $roles = Role::loadMultiple($rids);
79 $users = User::loadMultiple($uids);
82 $template = $this->twig->loadTemplate($viewFilePath);
84 return $template->render(['roles' => $roles, 'users' => $users]);
91 public function getPermissions()
95 $permittedUsers = $this->database->select('permissions_by_term_user', 'pu')
96 ->fields('pu', ['uid', 'tid'])
100 $permittedRoles = $this->database->select('permissions_by_term_role', 'pr')
101 ->fields('pr', ['rid', 'tid'])
105 if (!empty($permittedRoles)) {
106 $returnArray['roleLabels'] = [];
107 foreach ($permittedRoles as $permittedRole) {
108 $role = Role::load($permittedRole->rid);
110 $returnArray['roleLabels'][$permittedRole->tid][] = $role->label();
115 if (!empty($permittedUsers)) {
116 $returnArray['userDisplayNames'] = [];
117 foreach ($permittedUsers as $permittedUser) {
118 $user = User::load($permittedUser->uid);
120 $returnArray['userDisplayNames'][$permittedUser->tid][] = $user->getDisplayName();