Updated all the contrib modules to their latest versions.
[yaffs-website] / web / modules / contrib / permissions_by_term / permissions_by_term.module
index ac4a1d2a5b340558a6a43b4a30168415e1bf40dc..f8b869c45e6f1312f161adea93e5f4af92f78ffc 100644 (file)
@@ -88,19 +88,20 @@ function permissions_by_term_submit($form, FormState $formState) {
   $access_storage = \Drupal::service('permissions_by_term.access_storage');
   $access_update = $access_storage->saveTermPermissions($formState, $termId);
 
-  // Check if we need to rebuild node_access by term id
-  $invalidate_cache_tag = false;
+  // Check if we need to rebuild cache and node_access
+  $rebuild_cache_and_node_access = false;
 
   // Has anything has changed?
   foreach($access_update as $values) {
     if(!empty($values)) {
-      $invalidate_cache_tag = true;
+      $rebuild_cache_and_node_access = true;
       break;
     }
   }
 
-  // Do we need to flush the cache?
-  if($invalidate_cache_tag === true) {
+  // Do we need to flush the cache and the node access records?
+  if($rebuild_cache_and_node_access === true) {
+    node_access_rebuild(TRUE);
     Cache::invalidateTags(['search_index:node_search']);
   }
 }
@@ -108,9 +109,9 @@ function permissions_by_term_submit($form, FormState $formState) {
 /**
  * Implements hook_form_alter().
  */
-function permissions_by_term_form_taxonomy_term_form_alter(&$form, FormStateInterface $oFormState, $form_id) {
+function permissions_by_term_form_taxonomy_term_form_alter(&$form, FormStateInterface $formState, $form_id) {
   if (\Drupal::currentUser()->hasPermission('show term permission form on term page')) {
-    $iTermId = $oFormState->getFormObject()->getEntity()->id();
+    $termId = $formState->getFormObject()->getEntity()->id();
 
     /* @var \Drupal\permissions_by_term\Service\AccessStorage $access_storage */
     $access_storage = \Drupal::service('permissions_by_term.access_storage');
@@ -122,17 +123,20 @@ and this taxonomy term itself.
 EOT;
 
     $form['access'] = [
-      '#type' => 'fieldset',
-      '#title' => t('Permissions'),
+      '#type'        => 'details',
+      '#title'       => t('Permissions'),
       '#description' => t($description),
-      '#collapsible' => TRUE,
-      '#collapsed' => TRUE,
-      '#attributes' => ['id' => 'fieldset_term_access'],
-      '#weight' => -5,
-      '#tree' => TRUE,
+      '#attributes'  => ['id' => 'fieldset_term_access'],
+      '#weight'      => -5,
+      '#tree'        => TRUE,
     ];
 
-    $aAllowedUsers = $access_storage->getAllowedUserIds($iTermId);
+    $langcode = \Drupal::languageManager()->getCurrentLanguage()->getId();
+    if (!empty($formState->getValue('langcode'))) {
+      $langcode = $formState->getValue('langcode')['0']['value'];
+    }
+
+    $aAllowedUsers = $access_storage->getAllowedUserIds($termId, $langcode);
     if (!empty($aAllowedUsers)) {
       $aAllowedUsers = user_load_multiple($aAllowedUsers);
       $sUserFormValue = $access_storage->getUserFormValue($aAllowedUsers);
@@ -150,17 +154,17 @@ EOT;
     // 'access profiles' permission. Other users will have to specify the name
     // manually.
     $form['access']['user'] = [
-      '#type' => 'entity_autocomplete',
-      '#target_type' => 'user',
-      '#title' => t('Allowed users'),
-      '#description' => t($description),
-      '#value' => $sUserFormValue,
-      '#size' => 60,
+      '#type'                    => 'entity_autocomplete',
+      '#target_type'             => 'user',
+      '#title'                   => t('Allowed users'),
+      '#description'             => t($description),
+      '#value'                   => $sUserFormValue,
+      '#size'                    => 60,
       '#autocomplete_route_name' => 'permissions_by_term.autocomplete_multiple',
-      '#weight' => -10,
+      '#weight'                  => -10,
     ];
 
-    $aAllowedRoles = $access_storage->getRoleTermPermissionsByTid($iTermId);
+    $aAllowedRoles = $access_storage->getRoleTermPermissionsByTid($termId, $langcode);
 
     // Firstly fetch all translated allowed role names.
     $aTranslatedAllowedRoleNames = [];
@@ -190,13 +194,13 @@ EOT;
 
     // Now, lets do the Roles table.
     $form['access']['role'] = [
-      '#type' => 'checkboxes',
-      '#title' => t('Allowed roles'),
-      '#description' => t($description),
+      '#type'          => 'checkboxes',
+      '#title'         => t('Allowed roles'),
+      '#description'   => t($description),
       '#default_value' => $aSetRoles,
-      '#options' => $aTranslatedUserRoles,
-      '#multiple' => FALSE,
-      '#weight' => 5,
+      '#options'       => $aTranslatedUserRoles,
+      '#multiple'      => FALSE,
+      '#weight'        => 5,
     ];
 
     $form['#validate'][] = 'permissions_by_term_validate';
@@ -207,7 +211,7 @@ EOT;
 /**
  * Implements hook_form_alter().
  */
-function permissions_by_term_form_alter(&$form, FormStateInterface $oFormState, $form_id) {
+function permissions_by_term_form_alter(&$form, FormStateInterface $formState, $form_id) {
   $form['#validate'][] = 'permissions_by_term_validate';
   if (isNodeEditForm()) {
     $form['permissions_by_term_info'] = [
@@ -217,6 +221,11 @@ function permissions_by_term_form_alter(&$form, FormStateInterface $oFormState,
       '#access' => \Drupal::currentUser()->hasPermission('show term permissions on node edit page'),
     ];
 
+    $langcode = \Drupal::languageManager()->getCurrentLanguage()->getId();
+    if (!empty($formState->getUserInput()['langcode']['0']['value'])) {
+      $langcode = $formState->getUserInput()['langcode']['0']['value'];
+    }
+
     $nid = null;
     if (!empty($node = \Drupal::routeMatch()->getParameter('node'))) {
       $nid = $node->id();
@@ -230,7 +239,7 @@ function permissions_by_term_form_alter(&$form, FormStateInterface $oFormState,
 
     $form['permissions_by_term_info']['revision'] = array(
       '#type' => 'item',
-      '#markup' => $nodeEntityBundleInfo->renderNodeDetails($viewFilePath, $nid),
+      '#markup' => $nodeEntityBundleInfo->renderNodeDetails($viewFilePath, $langcode, $nid),
     );
 
     $form['#attached']['library'][] = 'permissions_by_term/nodeForm';
@@ -295,7 +304,14 @@ function permissions_by_term_node_access_records(\Drupal\node\NodeInterface $nod
   foreach ($access_storage->getTidsByNid($node->id()) as $tid) {
     /* @var \Drupal\permissions_by_term\Service\AccessCheck $access_check_service */
     $access_check_service = \Drupal::service('permissions_by_term.access_check');
-    if ($access_check_service->isAnyPermissionSetForTerm($tid, $node->language()->getId())) {
+    if($node->language()->getId() == 'und'){
+      // Current system default language
+      $language = \Drupal::languageManager()->getCurrentLanguage()->getId();
+    }
+    else {
+      $language = $node->language()->getId();
+    }
+    if ($access_check_service->isAnyPermissionSetForTerm($tid, $language)) {
       $has_term_access_restrictions = TRUE;
       break;
     }
@@ -311,12 +327,12 @@ function permissions_by_term_node_access_records(\Drupal\node\NodeInterface $nod
   $grantObject = $nodeAccess->createGrant($node->id(), $node->id());
 
   $grants[] = [
-    'realm' => $grantObject->realm,
-    'gid' => $grantObject->gid,
-    'grant_view' => $grantObject->grant_view,
+    'realm'        => $grantObject->realm,
+    'gid'          => $grantObject->gid,
+    'grant_view'   => $grantObject->grant_view,
     'grant_update' => $grantObject->grant_update,
     'grant_delete' => $grantObject->grant_delete,
-    'nid' => $node->id(),
+    'nid'          => $node->id(),
   ];
 
   return $grants;