X-Git-Url: https://yaffs.net/gitweb/?a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fpermissions_by_term%2Fpermissions_by_term.module;h=f8b869c45e6f1312f161adea93e5f4af92f78ffc;hb=refs%2Fheads%2Fd864;hp=ac4a1d2a5b340558a6a43b4a30168415e1bf40dc;hpb=af6d1fb995500ae68849458ee10d66abbdcfb252;p=yaffs-website diff --git a/web/modules/contrib/permissions_by_term/permissions_by_term.module b/web/modules/contrib/permissions_by_term/permissions_by_term.module index ac4a1d2a5..f8b869c45 100644 --- a/web/modules/contrib/permissions_by_term/permissions_by_term.module +++ b/web/modules/contrib/permissions_by_term/permissions_by_term.module @@ -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;