You are here

function node_access_rebuild_progressive_trigger in Node Access Rebuild Progressive 8

Same name and namespace in other branches
  1. 7 node_access_rebuild_progressive.module \node_access_rebuild_progressive_trigger()
  2. 2.x node_access_rebuild_progressive.module \node_access_rebuild_progressive_trigger()

Initiate the full rebuild.

2 calls to node_access_rebuild_progressive_trigger()
node_access_rebuild_progressive_cron in ./node_access_rebuild_progressive.module
Implements hook_cron().
_drush_node_access_rebuild_progressive_rebuild in ./node_access_rebuild_progressive.module
Rebuilds the node access grants table.

File

./node_access_rebuild_progressive.module, line 30
Provides ability to rebuild node access silently.

Code

function node_access_rebuild_progressive_trigger() {

  // Prevents default message/behaviour.
  node_access_needs_rebuild(FALSE);

  // Add default grants in the unlikely case
  // no modules implement node_grants anymore.
  if (!count(\Drupal::moduleHandler()
    ->getImplementations('node_grants'))) {
    node_access_rebuild_progressive_set_default();
    return node_access_rebuild_progressive_finished();
  }

  // Clean up possible mismatches.
  db_query("DELETE FROM {node_access} WHERE nid NOT IN (SELECT nid FROM {node})");

  // We only need the current one, nodes created afterward would get processed
  // at save time.
  $highest = db_query("SELECT nid FROM {node} ORDER BY nid DESC LIMIT 0,1")
    ->fetchField();
  $count = db_query("SELECT count(nid) FROM {node}")
    ->fetchField();
  \Drupal::state()
    ->set('node_access_rebuild_progressive.current', $highest + 1);
  \Drupal::logger('node_access_rebuild_progressive')
    ->info('%count nodes queued for node access rebuild.', [
    '%count' => $count,
  ]);
}