You are here

function _forum_access_update_batch_operation in Forum Access 7

Same name and namespace in other branches
  1. 8 includes/forum_access.admin.inc \_forum_access_update_batch_operation()
  2. 6 forum_access.admin.inc \_forum_access_update_batch_operation()

Batch operation for forum_access_form_submit().

This is a multistep operation: we go through all nodes by packs of 20. The batch processing engine interrupts processing and sends progress feedback after 1 second execution time.

1 call to _forum_access_update_batch_operation()
_forum_access_form_submit in ./forum_access.admin.inc
1 string reference to '_forum_access_update_batch_operation'
_forum_access_form_submit in ./forum_access.admin.inc

File

./forum_access.admin.inc, line 693
forum_access.admin.inc

Code

function _forum_access_update_batch_operation($tid, $limit, $count, &$context) {
  if (empty($context['sandbox'])) {

    // Initiate multistep processing.
    $context['sandbox']['progress'] = 0;
    $context['sandbox']['current_node'] = 0;
    $context['sandbox']['max'] = $count;
  }

  // Process the next $limit nodes.
  $nids = db_select('taxonomy_index', 'n')
    ->fields('n', array(
    'nid',
  ))
    ->distinct()
    ->condition('n.nid', $context['sandbox']['current_node'], '>')
    ->condition('n.tid', $tid)
    ->orderBy('n.nid')
    ->range(0, $limit)
    ->execute()
    ->fetchCol();
  $nodes = node_load_multiple($nids);
  foreach ($nodes as $node) {

    // To preserve database integrity, only aquire grants if the node
    // loads successfully.
    if (!empty($node)) {
      node_access_acquire_grants($node);
    }
    $context['sandbox']['progress']++;
    $context['sandbox']['current_node'] = $node->nid;
  }

  // Multistep processing: report progress.
  if ($context['sandbox']['progress'] != $context['sandbox']['max']) {
    $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
  }
}