You are here

function _pmpermission_node_access_rebuild_batch_operation in Drupal PM (Project Management) 7.2

Custom batch operation for rebuilding permission.

See also

pmpermission_hunt_and_update_all_child_permission()

1 string reference to '_pmpermission_node_access_rebuild_batch_operation'
pmpermission_hunt_and_update_all_child_permission in pmpermission/pmpermission.module
Check and performs access update if supplied pmorganization.

File

pmpermission/pmpermission.module, line 911
Main module file for the pmpermission module.

Code

function _pmpermission_node_access_rebuild_batch_operation($nids, &$context) {
  if (empty($context['sandbox'])) {

    // Initiate multistep processing.
    $context['sandbox']['progress'] = 0;
    $context['sandbox']['max'] = count($nids);
    $context['sandbox']['nids'] = drupal_map_assoc($nids);
    if (empty($nids)) {
      $context['finished'] = 1;
      return;
    }
  }
  $nids = array_slice($context['sandbox']['nids'], 0, 20);
  $nodes = node_load_multiple($nids, array(), TRUE);
  foreach ($nodes as $nid => $node) {

    // To preserve database integrity, only acquire grants if the node
    // loads successfully.
    if (!empty($node)) {
      node_access_acquire_grants($node);
    }
    unset($context['sandbox']['nids'][$nid]);
    $context['sandbox']['progress']++;
    $context['message'] = t('Now processing %node', array(
      '%node' => $node->title,
    ));
  }

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