You are here

function views_node_access_filter_node_access_records_alter in Views Node Access Filter 8

Implements hook_node_access_records_alter().

File

./views_node_access_filter.access_records.inc, line 96
Node access hooks.

Code

function views_node_access_filter_node_access_records_alter(&$grants, NodeInterface $node) {

  // As soon as there is at least one record for a node, Drupal core does not
  // handle default view access on its side.
  // @see NodeAccessControlHandler::acquireGrants()
  // But our module doesn't want to alter default view access, so, if no other
  // module defines records, we mimic the default core behavior.
  if (!_views_node_access_filter_external_grants_are_defined($grants, $node)) {
    if ($node
      ->isPublished()) {
      $grants[] = [
        'realm' => 'all',
        'gid' => 0,
        'grant_view' => 1,
        'grant_update' => 0,
        'grant_delete' => 0,
      ];
    }
    elseif ($owner_id = $node
      ->getOwnerId()) {
      $grants[] = [
        'realm' => 'view own unpublished content',
        'gid' => $owner_id,
        'grant_view' => 1,
        'grant_update' => 0,
        'grant_delete' => 0,
      ];
    }
  }
}