You are here

function node_access_rebuild_progressive_process_chunk in Node Access Rebuild Progressive 7

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

Processes a chunk of nodes.

Return value

array An array with the following keys:

  • total: the number of nodes retrieved for processing.
  • processed: the number of nodes actually processed.
2 calls to node_access_rebuild_progressive_process_chunk()
node_access_rebuild_progressive_process_cron in ./node_access_rebuild_progressive.module
Processes a chunk of nodes at cron run.
_drush_node_access_rebuild_progressive_process in ./node_access_rebuild_progressive.drush.inc
Processes a pass of nodes.

File

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

Code

function node_access_rebuild_progressive_process_chunk() {
  $current = variable_get('node_access_rebuild_progressive_current', 0);
  $chunk_size = (int) variable_get('node_access_rebuild_progressive_chunk', 500);
  $nids = db_query("SELECT nid FROM {node} WHERE nid < :current ORDER BY nid DESC LIMIT 0,{$chunk_size}", array(
    ':current' => $current,
  ))
    ->fetchCol();
  $total = count($nids);
  $processed = 0;
  if ($total) {
    $nodes = node_load_multiple($nids, array(), TRUE);
    foreach ($nodes as $node) {

      // Make sure the node can be loaded properly.
      if (!empty($node->nid)) {
        node_access_acquire_grants($node);
        $current = $node->nid;
        $processed++;
      }
    }
    variable_set('node_access_rebuild_progressive_current', $current);
  }
  return array(
    'total' => $total,
    'processed' => $processed,
  );
}