You are here

function permissions_by_term_form_alter in Permissions by Term 8.2

Same name and namespace in other branches
  1. 8 permissions_by_term.module \permissions_by_term_form_alter()
  2. 7 permissions_by_term.module \permissions_by_term_form_alter()

Implements hook_form_alter().

File

./permissions_by_term.module, line 323
Allows access to terms in a vocabulary to be limited by user or role.

Code

function permissions_by_term_form_alter(&$form, FormStateInterface $formState, $form_id) {
  $form['#validate'][] = 'permissions_by_term_validate';
  if (isNodeEditForm()) {
    $form['permissions_by_term_info'] = [
      '#type' => 'details',
      '#group' => 'advanced',
      '#title' => t('Permissions by Term'),
      '#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')) && $node instanceof Node) {
      $nid = $node
        ->id();

      /**
       * @var AccessCheck $accessCheck
       */
      $accessCheck = \Drupal::service('permissions_by_term.access_check');
      $accessResult = $accessCheck
        ->handleNode($node, $langcode);
      if ($accessResult instanceof AccessResultForbidden) {
        return $accessResult;
      }
    }
    $viewFilePath = drupal_get_path('module', 'permissions_by_term') . '/src/View/node-details.html.twig';

    /**
     * @var \Drupal\permissions_by_term\Service\NodeEntityBundleInfo $nodeEntityBundleInfo
     */
    $nodeEntityBundleInfo = \Drupal::service('permissions_by_term.node_entity_bundle_info');
    $form['permissions_by_term_info']['revision'] = array(
      '#type' => 'item',
      '#markup' => $nodeEntityBundleInfo
        ->renderNodeDetails($viewFilePath, $langcode, $nid),
    );
    $form['#attached']['library'][] = 'permissions_by_term/nodeForm';
  }
}