Same name and namespace in other branches
  1. 10 core/modules/node/node.module \node_access_rebuild()
  2. 6.x modules/node/node.module \node_access_rebuild()
  3. 7.x modules/node/node.module \node_access_rebuild()
  4. 8.9.x core/modules/node/node.module \node_access_rebuild()
  5. 9 core/modules/node/node.module \node_access_rebuild()

Rebuild the node access database. This is occasionally needed by modules that make system-wide changes to access levels.

Related topics

3 calls to node_access_rebuild()
node_access_example_disable in developer/examples/node_access_example.install
Implementation of hook_disable().
node_access_example_enable in developer/examples/node_access_example.install
Implementation of hook_enable().
node_configure_rebuild_confirm_submit in modules/node/node.module
Handler for wipe confirmation

File

modules/node/node.module, line 3014
The core that allows content to be submitted to the site. Modules and scripts may programmatically submit nodes using the usual form API pattern.

Code

function node_access_rebuild() {
  db_query("DELETE FROM {node_access}");

  // only recalculate if site is using a node_access module
  if (count(module_implements('node_grants'))) {

    // If not in 'safe mode', increase the maximum execution time:
    if (!ini_get('safe_mode')) {
      set_time_limit(240);
    }
    $result = db_query("SELECT nid FROM {node}");
    while ($node = db_fetch_object($result)) {
      $loaded_node = node_load($node->nid, NULL, TRUE);

      // To preserve database integrity, only aquire grants if the node
      // loads successfully.
      if (!empty($loaded_node)) {
        node_access_acquire_grants($loaded_node);
      }
    }
  }
  else {

    // not using any node_access modules. add the default grant.
    db_query("INSERT INTO {node_access} VALUES (0, 0, 'all', 1, 0, 0)");
  }
  cache_clear_all();
}