You are here

function sf_queue_handle_responses in Salesforce Suite 6.2

Same name and namespace in other branches
  1. 7.2 sf_queue/sf_queue.module \sf_queue_handle_responses()
2 calls to sf_queue_handle_responses()
sf_queue_handle_deletes in sf_queue/sf_queue.module
Helper function to process queue deletes. Since we can delete across object types by SFID alone, plow through 200 deletes at a time, oldest first.
sf_queue_handle_upserts in sf_queue/sf_queue.module
Helper function to process queue updates and inserts (creates). The logic proceeds basically like this:

File

sf_queue/sf_queue.module, line 374
sf_queue.module Implements export queue and administrativa for SalesForce API

Code

function sf_queue_handle_responses($responses, $dataset) {
  $wins = $fails = array();
  if (!is_array($responses)) {
    $responses = array(
      $responses,
    );
  }
  foreach ($responses as $key => $response) {
    $item = $dataset[$key];
    if (!empty($response->success)) {
      $wins[$response->id] = $item['oid'];
    }
    else {
      $error_str = t("Error from SalesForce:<br>Message - !message<br>Fields - !fields<br>Status code - !code", array(
        '!message' => $response->errors->message,
        '!fields' => $response->errors->fields,
        '!code' => $response->errors->statusCode,
      ));
      $fails[$response->id] = $item['oid'];
    }
  }
  if (count($wins) > 0) {
    $q_str = 'DELETE FROM {salesforce_export_queue} WHERE oid IN (' . db_placeholders($wins) . ')';
    db_query($q_str, $wins);
  }
  if (count($fails) > 0) {
    $q_str = 'UPDATE {salesforce_export_queue} SET attempts = attempts + 1 WHERE oid IN (' . db_placeholders($fails) . ')';
    db_query($q_str, $fails);
  }
  return array(
    $wins,
    $fails,
  );
}