You are here

function sf_queue_enqueue in Salesforce Suite 6.2

Same name and namespace in other branches
  1. 7.2 sf_queue/sf_queue.module \sf_queue_enqueue()

Helper function to add / update a queue item.

2 calls to sf_queue_enqueue()
sf_queue_salesforce_api_delete in sf_queue/sf_queue.module
Implements hook_salesforce_api_delete()
sf_queue_salesforce_api_pre_export in sf_queue/sf_queue.module
Implements hook_salesforce_api_pre_export

File

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

Code

function sf_queue_enqueue($op, $sf_object, $map, $oid) {
  $object = (object) array(
    'sf_op' => $op,
    'oid' => $oid,
    'attempts' => 0,
    'created' => time(),
    'sfid' => empty($sf_object->Id) ? '' : $sf_object->Id,
    // will be blank on create
    'drupal_type' => $map->drupal,
    'sf_type' => $map->salesforce,
    'name' => md5(microtime()),
    'fieldmap_name' => $map->name,
    'sf_data' => $sf_object,
  );
  $update = array();
  $sql = 'SELECT oid
      FROM {salesforce_export_queue}
      WHERE drupal_type = "%s" AND fieldmap_name = "%s" AND oid = %d';

  // If an existing operation is queued for this drupal object / fieldmap pair,
  // update the queue by merging the two records instead of appending to it.
  if ($existing = db_fetch_array(db_query($sql, $map->drupal, $map->name, $oid))) {
    $update = 'oid';
    $object->oid = $existing['oid'];
  }

  // If we successfully wrote to the queue, then we return FALSE to prevent an
  // immediate salesforce export. If we failed to write to the queue, log an
  // error but don't prevent the export.
  if (drupal_write_record('salesforce_export_queue', $object, $update)) {
    if (user_access('administer salesforce')) {
      drupal_set_message(t('Drupal !type queued for SalesForce export.', array(
        '!type' => $map->drupal,
      )));
    }
    return FALSE;
  }
  else {
    watchdog('sf_queue', 'Failed to queue SalesForce object. <pre>' . print_r($object, 1) . print_r($sf_object, 1) . '</pre>');
    return TRUE;
  }
}