You are here

function _oa_core_update_access_records_batch in Open Atrium Core 7.2

Batch for updating node access records.

Parameters

array $subgroup_nids: Nids for all subgroups of the node being updated.

array $context: Carried over between batches.

1 string reference to '_oa_core_update_access_records_batch'
_oa_core_update_access_records_batch_prepare in includes/oa_core.access.inc
Set up the batch process to update node records.

File

includes/oa_core.access.inc, line 314
Code for Access Control functions for OpenAtrium spaces

Code

function _oa_core_update_access_records_batch($subgroup_nids, &$context) {
  if (empty($context['sandbox']['nids'])) {
    $context['sandbox']['nids'] = $subgroup_nids;

    // These are nids returned from oa_core_get_groups_by_parent().
    foreach ($subgroup_nids as $nid) {

      // Get membership nids using the og_group_ref field.
      $membership_nids = oa_core_get_membership_nodes($nid);

      // Merge the results.
      $new_array = array_merge($context['sandbox']['nids'], $membership_nids);

      // Update the sandbox.
      $context['sandbox']['nids'] = $new_array;
    }
    $context['results'] = count($context['sandbox']['nids']);
  }

  // Number of nodes updated per pass.
  $records_per_pass = 25;

  // Define the records to run for this pass.
  $current_records = array_splice($context['sandbox']['nids'], 0, $records_per_pass);

  // Update the node access records for this pass.
  oa_core_update_access_records($current_records);

  // We are done when the sandbox nids array is empty.
  $context['finished'] = empty($context['sandbox']['nids']) ? 1 : 0;
}