You are here

function _book_access_ui_rebuild_batch_operation in Book access 7.2

Same name and namespace in other branches
  1. 6.2 book_access_ui.admin.inc \_book_access_ui_rebuild_batch_operation()
2 string references to '_book_access_ui_rebuild_batch_operation'
book_access_ui_grants_form_submit in ./book_access_ui.admin.inc
Form submission callback for book_access_ui_grants_form().
book_access_ui_rebuild_all_submit in ./book_access_ui.admin.inc
Form submissions handler for book_access_ui_rebuild_all().

File

./book_access_ui.admin.inc, line 619
Administration interface for the Book access module.

Code

function _book_access_ui_rebuild_batch_operation($bid, &$context) {
  if (!is_array($bid)) {
    $bid = array(
      $bid,
    );
  }
  if (empty($context['sandbox'])) {
    $context['sandbox']['current_node'] = 0;
    $context['sandbox']['max'] = db_select('book', 'book')
      ->condition('book.bid', $bid, 'IN')
      ->fields('book', array(
      'nid',
    ))
      ->distinct()
      ->countQuery()
      ->execute()
      ->fetchField();
    $context['sandbox']['progress'] = 0;
  }
  $result = db_select('book', 'b')
    ->fields('b', array(
    'bid',
    'nid',
  ))
    ->condition('b.nid', $context['sandbox']['current_node'], '>')
    ->condition('b.bid', $bid, 'IN')
    ->orderBy('b.nid')
    ->distinct()
    ->range(0, 20)
    ->execute();
  $list = '';
  foreach ($result as $row) {
    if ($node = node_load($row->nid, NULL, TRUE)) {
      node_access_acquire_grants($node);
      $list .= t('<li>%title</li>', array(
        '%title' => $node->title,
      ));
    }
    $context['sandbox']['progress']++;
    $context['sandbox']['current_node'] = $row->nid;
  }
  $context['message'] = t('Rebuilding access permissions for:<ul>!list</ul>', array(
    '!list' => $list,
  ));
  if ($context['sandbox']['progress'] != $context['sandbox']['max']) {
    $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
  }
}