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
41 * @param TermHandler $term
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 $viewFilePath
60 * @param string $langcode
63 * @throws \Twig_Error_Loader
64 * @throws \Twig_Error_Runtime
65 * @throws \Twig_Error_Syntax
67 public function renderNodeDetails($viewFilePath, $langcode, $nid = null) {
72 $tids = $this->term->getTidsByNid($nid);
74 $uids = $this->accessStorage->getUserTermPermissionsByTids($tids, $langcode);
75 $rids = $this->accessStorage->getRoleTermPermissionsByTids($tids, $langcode);
80 $roles = Role::loadMultiple($rids);
84 $users = User::loadMultiple($uids);
87 $template = $this->twig->loadTemplate($viewFilePath);
89 return $template->render(['roles' => $roles, 'users' => $users]);
96 public function getPermissions()
100 $permittedUsers = $this->database->select('permissions_by_term_user', 'pu')
101 ->fields('pu', ['uid', 'tid'])
105 $permittedRoles = $this->database->select('permissions_by_term_role', 'pr')
106 ->fields('pr', ['rid', 'tid'])
110 if (!empty($permittedRoles)) {
111 $returnArray['roleLabels'] = [];
112 foreach ($permittedRoles as $permittedRole) {
113 $role = Role::load($permittedRole->rid);
115 $returnArray['roleLabels'][$permittedRole->tid][] = $role->label();
120 if (!empty($permittedUsers)) {
121 $returnArray['userDisplayNames'] = [];
122 foreach ($permittedUsers as $permittedUser) {
123 $user = User::load($permittedUser->uid);
125 $returnArray['userDisplayNames'][$permittedUser->tid][] = $user->getDisplayName();