You are here

function sf_queue_handle_deletes in Salesforce Suite 7.2

Same name and namespace in other branches
  1. 6.2 sf_queue/sf_queue.module \sf_queue_handle_deletes()

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.

1 call to sf_queue_handle_deletes()
sf_queue_process_queue in sf_queue/sf_queue.module
@todo Please document this function.

File

sf_queue/sf_queue.module, line 233
sf_queue.module Implements export queue and administrativa for Salesforce API

Code

function sf_queue_handle_deletes($settings) {
  $args = array();
  $sql = "SELECT id, oid, fieldmap_name, drupal_type, sf_type, sfid\n    FROM {salesforce_export_queue}\n    WHERE sf_op = 'delete'";
  if ($settings['retry_num_attempts'] >= 0) {
    $sql .= ' AND attempts < %d';
    $args[] = $settings['retry_num_attempts'] + 1;
  }
  $sql .= ' ORDER BY created LIMIT ' . $settings['cron_num_objects'];
  $done = FALSE;
  $sfids = $deletes = $real_deletes = $fails = array();

  // TODO Please convert this statement to the D7 database API syntax.
  $result = db_query($sql, $args);
  while ($row = db_fetch_array($result)) {
    $sfids[] = $row['sfid'];
    $deletes[] = $row;
  }
  if (count($deletes) == 0) {
    return;
  }
  if ($settings['cron_min_threshold'] && count($deletes) < $settings['cron_min_threshold']) {
    return;
  }
  try {
    $sf = salesforce_api_connect();
    if (!$sf) {
      throw new Exception('Unable to connect to Salesforce');
    }
    $responses = $sf->client
      ->delete($sfids);
    sf_queue_handle_responses($responses, $deletes);
  } catch (Exception $e) {
    sf_queue_handle_exception($e, $deletes);
  }

  // Now we need to delete the entry from salesforce_object_map
}