function privatemsg_load_recipients

7-1 privatemsg.pages.inc privatemsg_load_recipients($mid, $recipient, &$context)
7-2 privatemsg.pages.inc privatemsg_load_recipients($mid, $recipient, &$context)
6-2 privatemsg.pages.inc privatemsg_load_recipients($mid, $recipient, &$context)

Batch processing function for rebuilding the index.

1 string reference to 'privatemsg_load_recipients'
_privatemsg_handle_recipients in ./privatemsg.module
Handle the non-user recipients of a new message.

File

./privatemsg.pages.inc, line 943
User menu callbacks for Privatemsg.

Code

function privatemsg_load_recipients($mid, $recipient, &$context) {
  // Get type information.
  $type = privatemsg_recipient_get_type($recipient->type);

  // First run, initialize sandbox.
  if (!isset($context['sandbox']['current_offset'])) {
    $context['sandbox']['current_offset'] = 0;
    $count_function = $type['count'];
    $context['sandbox']['count'] = $count_function($recipient);
  }

  // Fetch the 10 next recipients.
  $load_function = $type['generate recipients'];
  $uids = $load_function($recipient, 10, $context['sandbox']['current_offset']);

  if (!empty($uids)) {
    foreach ($uids as $uid) {
      privatemsg_message_change_recipient($mid, $uid, 'hidden');
    }

    $context['sandbox']['current_offset'] += 10;
    // Set finished based on sandbox.
    $context['finished'] = empty($context['sandbox']['count']) ? 1 : ($context['sandbox']['current_offset'] / $context['sandbox']['count']);
  }
  else {
    // If no recipients were returned, mark as finished too.
    $context['sandbox']['finished'] = 1;
  }

  // If we are finished, mark the recipient as read.
  if ($context['finished'] >= 1) {
    db_update('pm_index')->fields(array('is_new' => PRIVATEMSG_READ))->condition('mid', $mid)->condition('recipient', $recipient->recipient)->condition('type', $recipient->type)->execute();
  }
}