You are here

function sf_queue_enqueue in Salesforce Suite 7.2

Same name and namespace in other branches
  1. 6.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 117
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' => REQUEST_TIME,
    'sfid' => empty($sf_object->Id) ? '' : $sf_object->Id,
    // will be blank on create
    'drupal_type' => $map->drupal_entity,
    '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('SELECT oid
      FROM {salesforce_export_queue}
      WHERE drupal_type = :drupal_type AND fieldmap_name = :fieldmap_name AND oid = :oid', array(
    ':drupal_type' => $map->drupal_entity,
    ':fieldmap_name' => $map->name,
    ':oid' => $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_entity,
      )));
    }
    return FALSE;
  }
  else {
    watchdog('sf_queue', 'Failed to queue Salesforce object. <pre>' . print_r($object, 1) . print_r($sf_object, 1) . '</pre>');
    return TRUE;
  }
}